软件测试基础教程-宫云战_第6章PPT

上传人:飞****9 文档编号:131944570 上传时间:2020-05-11 格式:PPT 页数:294 大小:1,011.50KB
返回 下载 相关 举报
软件测试基础教程-宫云战_第6章PPT_第1页
第1页 / 共294页
软件测试基础教程-宫云战_第6章PPT_第2页
第2页 / 共294页
软件测试基础教程-宫云战_第6章PPT_第3页
第3页 / 共294页
软件测试基础教程-宫云战_第6章PPT_第4页
第4页 / 共294页
软件测试基础教程-宫云战_第6章PPT_第5页
第5页 / 共294页
点击查看更多>>
资源描述

《软件测试基础教程-宫云战_第6章PPT》由会员分享,可在线阅读,更多相关《软件测试基础教程-宫云战_第6章PPT(294页珍藏版)》请在金锄头文库上搜索。

1、6 1性能测试 6 1 1性能测试的基本概念 性能测试主要检验软件是否达到需求规格说明书中规定的各类性能指标 并满足一些性能相关的约束和限制条件 性能测试包括以下几个方面 评估系统的能力 测试中得到的负荷和响应时间等数据可以被用于验证所计划的模型的能力 并帮助做出决策 识别系统中的弱点 受控的负荷可以被增加到一个极端的水平并突破它 从而修复系统的瓶颈或薄弱的地方 系统调优 重复运行测试 验证调整系统的活动得到了预期的结果 从而改进性能 检测软件中的问题 6 1 2性能测试方法 基准法性能测试的基准大体有以下几方面 响应时间从应用系统发出请求开始 到客户端接收到最后一个字节数据为止所消耗的时间

2、合理的响应时间取决于实际的用户需求 并发用户数一般是指同一时间段内访问系统的用户数量 吞吐量指单位时间内系统处理的客户请求数量 性能计数器描述服务器或操作系统性能的一些数据指标 比如Windows系统资源管理器 6 1 2性能测试执行 分为三个阶段 1 计划阶段2 测试阶段3 分析阶段 计划阶段 定义目标并设置期望值收集系统和测试要求定义工作负载选择要收集的性能度量值标出要运行的测试并决定什么时候运行它们决定工具选项和生成负载编写测试计划 设计用户场景并创建测试脚本 测试阶段 做准备工作 如建立测试服务器或布置其他设备 运行测试收集数据 分析阶段 分析结果改变系统以优化性能设计新的测试 6 1

3、 3性能测试案例分析 一个数据库应用系统性能测试的具体应用目前有许多用于功能测试的自动化测试工具可供用户使用来节省测试时间 提高测试效率 结合现在比较流行的JMeter这一开源的自动化测试工具介绍一下数据库系统的性能测试 1 系统介绍被测系统是一个分布式数据库系统Testbase 该数据库采用Oracle数据库 Testbase里包括三张表 这里仅取其中一张名为City的表来说明测试过程 表的创建语句如下 createtableCity Countryvarchar 20 notnull Namevarchar 20 notnull Desvarchar 20 notnull 2 测试目的测试

4、Testbase数据库的查询性能 3 测试工具的选择Jmeter JMeter 4 测试步骤安装必要的JDBC驱动 数据生成可以使用工具DataFactory 准备好Jmeter测试工具建立测试计划配置与数据库的连接设置结果的查看方式用JMeter分析了Oracle数据库的查询性能 图6 4配置数据库连接 图6 5测试结果 6 2压力测试 负载测试 并发测试 6 2 1压力测试的基本概念 压力测试 StressTesting 是指模拟巨大的工作负荷 以查看系统在峰值使用情况下是否可以正常运行 压力测试是通过逐步增加系统负载来测试系统性能的变化 并最终确定在什么负载条件下系统性能处于失效状态 以

5、此来获得系统性能提供的最大服务级别的测试 压力测试方法具有如下特点 1 压力测试是检查系统处于压力情况下的能力表现 比如 通过增加并发用户的数量 检测系统的服务能力和水平 通过增加文件记录数来检测数据处理的能力和水平等等 2 压力测试一般通过模拟方法进行 通常在系统对内存和CPU利用率上进行模拟 以获得测量结果 如将压力的基准设定为 内存使用率达到75 以上 CPU使用率达到75 以上 并在此观测系统响应时间 系统有无错误产生 除了对内存和CPU的使用率进行设定外 数据库的连接数量 数据库服务器的CPU利用率等等也都可以作为压力测试的依据 3 压力测试一般用于测试系统的稳定性 如果一个系统能够

6、在压力环境下稳定运行一段时间 那么该系统在普遍的运行环境下就应该可以达到令人满意的稳定程度 在压力测试中 通常会考察系统在压力下是否会出现错误等方面的问题 压力测试与性能测试的联系与区别 压力测试是用来保证产品发布后系统能否满足用户需求 关注的重点是系统整体 性能测试可以发生在各个测试阶段 即使是在单元层 一个单独模块的性能也可以进行评估 压力测试是通过确定一个系统的瓶颈 来获得系统能提供的最大服务级别的测试 性能测试是检测系统在一定负荷下的表现 是正常能力的表现 而压力测试是极端情况下的系统能力的表现 例如对一个网站进行测试 模拟10到50个用户同时在线并观测系统表现 就是在进行常规性能测试

7、 当用户增加到系统出项瓶颈时 如1000乃至上万个用户时 就变成了压力测试 压力测试和负载测试 LoadTest 负载测试是通过逐步增加系统工作量 测试系统能力的变化 并最终确定在满足功能指标的情况下 系统所能承受的最大工作量的测试 压力测试实质上就是一种特定类型的负载测试 压力测试和并发性测试 并发性测试是一种测试手段 在压力测试中可以利用并发测试来进行压力测试 6 2 2压力测试方法 压力测试应该尽可能逼真的模拟系统环境 对于实时系统 测试者应该以正常和超常的速度输入要处理的事务从而进行压力测试 批处理的压力测试可以利用大批量的批事务进行 被测事务中应该包括错误条件 压力测试中使用事务获得

8、途径 测试数据生成器 由测试小组创建的测试事务 原来在系统环境中处理过的事务 压力测试中应该模拟真实的运行环境 测试者应该使用标准文档 输入事务的人员或者系统使用人员应该和系统产品化之后的参与人员一样 实时系统应该测试其扩展的时间段 批处理系统应该使用多于一个事务的批量进行测试 有效的压力测试将可采用以下测试手段 1 重复 Repetition 测试 重复测试就是一遍又一遍地执行某个操作或功能 比如重复调用一个Web服务 压力测试的一项任务就是确定在极端情况下一个操作能否正常执行 并且能否持续不断地在每次执行时都正常 这对于推断一个产品是否适用于某种生产情况至关重要 客户通常会重复使用产品 重

9、复测试往往与其它测试手段一并使用 2 并发 Concurrency 测试 并发是同时执行多个操作的行为 即在同一时间执行多个测试线程 例如 在同一个服务器上同时调用许多Web服务 并发测试原则上不一定适用于所有产品 比如无状态服务 但多数软件都具有某个并发行为或多线程行为元素 这一点只能通过执行多个代码测试用例才能得到测试结果 3 量级 Magnitude 增加 压力测试可以重复执行一个操作 但是操作自身也要尽量给产品增加负担 例如一个Web服务允许客户机输入一条消息 测试人员可以通过模拟输入超长消息来使操作进行高强度的使用 即增加这个操作的量级 这个量级的确定总是与应用系统有关 可以通过查找

10、产品的可配置参数来确定量级 4 随机变化 该手段是指对上述测试手段进行随机组合 以便获得最佳的测试效果 随机变化 使用重复时 在重新启动或重新连接服务之前 可以改变重复操作间的时间间隔 重复的次数 或者也可以改变被重复的Web服务的顺序 使用并发时 可以改变一起执行的Web服务 同一时间运行的Web服务数目 也可以改变关于是运行许多不同的服务还是运行许多同样的实例的决定 量级测试时 每次重复测试时都可以更改应用程序中出现的变量 例如发送各种大小的消息或数字输入值 如果测试完全随机的话 因为很难一致地重现压力下的错误 所以一些系统使用基于一个固定随机种子的随机变化 这样 用同一个种子 重现错误的

11、机会就会更大 6 2 3压力测试执行 可以设计压力测试用例来测试应用系统的整体或部分能力 压力测试用例选取可以从以下几个方面考虑 输入待处理事务来检查是否有足够的磁盘空间 创造极端的网络负载 制造系统溢出条件 当应用系统所能正常处理的工作量并不确定时需要使用压力测试 压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的 压力测试和在线应用程序非常类似 因为很难利用其他测试技术来模拟高容量的事务 压力测试的弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常庞大 通常在应用程序投入使用之前这种消耗的衡量是无法进行的 例6 4 某个电话通信系统的测试 测试采用压力测试方法 在

12、正常情况下 每天的电话数目大约2000个 一天24小时服从正态分布 在系统第1年使用时 系统的平均无故障时间大约1个月左右 分析表明 系统的出错原因主要来源于单位时间内电话数量比较大的情况下 为此 对系统采用压力测试 测试时将每天电话的数目增加10倍 即20000个左右 分布采用均匀和正态两种分布 测试大约进行了4个月 共发现了314个错误 修复这些错误大约花费了6个月的时间 修复后的系统运行了近2年 尚未出现问题 6 3容量测试 6 3 1容量测试基本概念 所谓的容量测试 VolumeTesting 是指 采用特定的手段测试系统能够承载处理任务的极限值所从事的测试工作 这里的特定手段是指 测

13、试人员根据实际运行中可能出现极限 制造相对应的任务组合 来激发系统出现极限的情况 容量测试的目的容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理 通过测试 预先分析出反映软件系统应用特征的某项指标的极限值 如最大并发用户数 数据库记录数等 确定系统在其极限值状态下是否还能保持主要功能正常运行 容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量 对软件容量的测试 能让软件开发商或用户了解该软件系统的承载能力或提供服务的能力 如电子商务网站所能承受的 同时进行交易或结算的在线用户数 知道了系统的实际容量 如果不能满足设计要求 就应该寻求新的技术解决方案 以提高系统的

14、容量 有了对软件负载的准确预测 不仅能对软件系统在实际使用中的性能状况充满信心 同时也可以帮助用户经济地规划应用系统 优化系统的部署 容量测试与压力测试的区别 与容量测试十分相近的概念是压力测试 二者都是检测系统在特定情况下 能够承担的极限值 然而两者的侧重点有所不同 压力测试主要是使系统承受速度方面的超额负载 例如一个短时间之内的吞吐量 容量测试关注的是数据方面的承受能力 并且它的目的是显示系统可以处理的数据容量 容量测试往往应用于数据库方面的测试数据库容量测试使测试对象处理大量的数据 以确定是否达到了将使软件发生故障的极限 容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量

15、 压力测试 容量测试和性能测试的区别 更确切的说 压力测试可以看作是容量测试 性能测试和可靠性测试的一种手段 不是直接的测试目标 压力测试的重点在于发现功能性测试所不易发现的系统方面的缺陷 而容量测试和性能测试是系统测试的主要目标内容 也就是确定软件产品或系统的非功能性方面的质量特征 包括具体的特征值 容量测试和性能测试更着力于提供性能与容量方面的数据 为软件系统部署 维护 质量改进服务 并可以帮助市场定位 销售人员对客户的解释 广告宣传等服务 压力测试 容量测试和性能测试的测试方法相通 在实际测试工作中 往往结合起来进行以提高测试效率 一般会设置专门的性能测试实验室完成这些工作 即使用虚拟的

16、手段模拟实际操作 所需要的客户端有时还是很大 所以性能测试实验室的投资较大 对于许多中小型软件公司 可以委托第三方完成性能测试 可以在很大程度上降低成本 6 3 2容量测试方法 进行容量测试的首要任务就是确定被测系统数据量的极限 即容量极限 这些数据可以是数据库所能容纳的最大值 可以是一次处理所能允许的最大数据量等等 系统出现问题 通常是发生在极限数据量产生或临界产生的情况下 这时容易造成磁盘数据的丢失 缓冲区溢出等一些问题 资源利用率 响应时间 用户负载关系图 为了更清楚的说明如何确定容量的极限值 参看图6 6 资源利用率 响应时间 用户负载关系图 图中反映了资源利用率 响应时间与用户负载之间的关系 可以看到 用户负载增加 响应时间也缓慢的增加 而资源利用率几乎是线形增长 这是因为应用做更多的工作 它需要更多的资源 一旦资源利用率接近百分之百时 出现一个有趣的现象 就是响应以指数曲线方式下降 这点在容量评估中被称作为饱和点 饱和点是指所有性能指标都不满足 随后应用发生恐慌的时间点 执行容量评估的目标是保证用户知道这点在哪 并且永远不要出现这种情况 在这种负载发生前 管理者应优化系统或

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号