性能测试的研究(2)
上一篇 /
下一篇 2012-02-01 16:14:49
/ 个人分类:测试
负载测试流程
使用负载测试来研究系统在通常数据压力下和峰值数据压力下的行为。一般是采用逐级增加数据量的方法来研究。从一个初始化环境的数据量逐级增加直到性能阀值数据量,一般是倍增的原则。例如,你设定了CPU的最高阀值是75%。那么逐级增加数据量,直到CPU的占用率接近75%。通过负载测试,你能够识别系统的瓶颈和程序的最大稳定负载能力。
进入文档
进入文档一般包含如下:
• 由性能架构决定的性能目标
• 程序的特性(测试用例)
• 工作数据流的特性
• 每个程序特性的性能指标
• 测试计划
测试步骤
如下表中描述了进行负载测试的流程:负载测试流程包含了如下步骤:
1. 设定主要测试场景。从程序所包含的所有应用场景中,挑选出那些对性能影响最大的场景作为需要测试的场景。
2. 设计测试数据。根据设定好的测试场景设计相应的测试数据。
3. 审定性能指标。对每个需要测试的场景,设定具体要检测的性能指标。
4. 创建测试用例。针对每个测试场景,设计具体的测试用例,用于获得需要的性能指标。
5. 执行测试。使用设计好的测试数据执行测试用例,并搜集设定的性能指标的具体数据。
6. 分析测试结果。根据具体的性能指标的数据分析结果,对程序性能进行评估。
步骤一 设定主要测试场景
万始之初是挑选关键的测试场景。一般一条业务路径中,包含了多个场景。而关键场景,就是对你的测试目标有着直接影响的场景。一般来说关键场景就是经常被使用的场景或者是需要使用大量资源来执行的场景。
例如,对一个购物网站来说,常见的关键场景如下:
• 登录网站
• 浏览产品目录
• 搜索特定产品
• 购物车
• 信用卡验证
• 订单提交
步骤二设计测试数据
根据挑选出来的测试场景,需要有针对性的设计所需的测试数据。一般来说测试数据应该考虑到如下几个因素:
• 用户数。需要明确在线用户数和活跃用户数的需求。
• 请求频率。需要明确在单位时间内可能发生的请求数。
• 请求的模式。同样的用户集合在不同的模式下使用程序会带来不同的数据流。所以要明确用户会以何种模式来使用程序。
一般来说,我们采用数据模型的方法来创建测试数据集。 在创建了数据模型后,根据用户分布配置文件,来使用测试数据进行逐渐加压测试。在加压过程中,记录程序的行为,直到获得足够典型的性能目标数据,即可将当前的数据量作为一个数据集标准。然后逐渐加压,直到获得程序的阀值,然后就可以在数据模型中明确标识。这样,就可以勾勒出来一个明确的数据级别分布图。
步骤三审定性能指标
拥有明确的性能指标,才能在测试中获得有效的测试数据。通过这些指标,你才知道在哪里能找到用来对程序的性能进行评估的对象。只有通过这些指标,才能识别出真正的瓶颈。
而且,通过不断迭代的测试方式,你可以在任何一轮测试前根据上次的结果来修改下一轮测试需要关注的性能指标。例如在上轮测试中发现某个未监控的服务进程实际上是真正的资源消耗源头。那么在下轮测试中,就可以根据这个服务进程修改测试方法,数据和要关注的性能指标来跟踪。
如下所列的指标类型,都是用于评估程序性能的常用类型:
• 网络类指标。这类指标一般提供了网络健康指数。例如交换机,路由器和网关等的状态。
• 系统类指标。这类指标一般用于了解服务器的资源利用率情况。例如处理器,内存,磁盘的输入/输出和网络端口的输入输出状态。
• 平台类指标。这类指标一般用于监察程序相关软件的性能情况。例如,使用的公用语言运行库和私有语言运行库的性能情况。
• 程序类指标。这类指标一般使用在程序中添加获得额外的代码来获得的。例如,在登录程序中,添加一个计时器,来获得用户登录的消耗时间。
• 服务类指标。这类指标一般用于衡量整个程序的数据吞吐量和服务延迟时间。一般都会跟一些特定的业务场景相结合。例如下表所列:在审定好性能指标后,我们需要给每个指标设定一个我们期望的基准线。这个基准线可能有多条,分别对应于不同的数据量。通过分析这些基准值和实际值,能够更加清晰的得出在不同的负载水平下的性能。举例如下:步骤四 创建测试用例
基于步骤二设定的数据模型和步骤三设定的性能指标来制定测试用例。
例如:在数据集A的测试场景中,使用测试用例1,2,3对多个性能指标进行检测。数据模型的数据集A为:
场景 | 占总用户的比例 | 用户数 |
浏览目录 | 50% | 250 |
搜索产品 | 30% | 150 |
提交订单 | 20% | 100 |
总计 | 100% | 500 |
审定性能指标和预设值为:
• 单位时间浏览目录数(100/秒)
• 单位时间成功提交订单数(10/秒)
• 返回查询结果平均时耗(2.5秒)
• 处理器占用率(不大于50%)
• 内存占用量(不大于320MB)
测试用例为:
• 测试用例1:每秒发送200个浏览请求。检测性能指标:单位时间浏览目录数,处理器占用率,内存占用量。
• 测试用例2:每秒发送100个查询请求。检测性能指标:返回查询结果时耗,处理器占用率,内存占用量。
• 测试用例3:每秒发送20个订单提交请求。检测性能指标:单位时间成功提交订单数,处理器占用率,内存占用量。
步骤五 执行测试
可以使用手工或者自动化工具对测试用例进行执行。一般执行的周期可以分为两种:
• 第一种,固定周期。例如,每周对测试用例执行一次。
• 第二种,固定版本数。例如,每十个版本执行一次测试用例。
步骤六 分析测试结果
根据测试获得的数据和预设值进行比较,就可以对程序的性能有一个明确的评价结果。从而明确了性能调优的目标。同时,这些数据也能帮助你得出产品的瓶颈和潜在的固有缺陷和风险。以及获得如何进行扩容的方式和方法。同时,连续的测试结果报告,有助于控制产品的性能指标,从而降低开发成本。根据测试结果,还可以帮助用户在使用程序是如何部署更加优化的运行环境。
输出文档
通过负载测试获得的常用输出文档如下:
• 更新的测试计划文档
• 在不同的负载水平下,程序的行为描述文档
• 程序的最大稳定负载能力描述文档
• 潜在的瓶颈,固有缺陷和风险的描述文档
• 推荐的部署和配置文档
收藏
举报
TAG: