置信区间(Confidenceinterval)
置信区间(confidenceinterval)的定义是[取样平均值-Z*σ/√n,取样平均值+Z*σ/√n]。例如,如果置信区间(概率)是90%,经查找可知Z值是1.645,于是置信区间就是[取样平均值-1.645*σ/√n,取样平均值+1.645*σ/√n],这意味着在90%的时间里,总体平均值(populationmean)(是未知的)会落入这个置信区间内。也就是说,我们的测试结果是十分接近的。如果σ(标准偏差)更大一些,置信区间也会更大,这就意味着置信区间的上限就会更可能会越过可以接受的范围,即σ越大,结果越不可信。
响应时间需求(Response-timerequirements)
现在我们把所有的信息都归结到响应时间需求上来。首先。必须要定义性能需求,如:%95概率的置信区间的平均响应时间的上限必须小于5秒。当然,最好有相应的需求或场景。
在性能测试结束后,假设进分析得出结论是平均响应时间是4.5秒,标准偏差时4.9秒,样本数量是120个,然后就可以计算%95概率的置信区间了。通过查表1,找到Z值是1.95996。于是置信区间就是[4.5–1.95996*4.9/√120,4.5+1.95996*4.9/√120],也就是[3.62,5.38]。尽管看起来这个响应时间看起来很不错,但这个结果(因为超出了需求的要求,因而)是不可接受的。实际上,可以检验的是即使是对于80%概率的可信区间,这个测试结果也是不能接受的。正如你所看到的,使用了置信区间分析后,会得到一个十分精确的方法来估算测试质量。
在web应用中,为了测定某一场景的响应时间,我们一般要通过测试工具来发送多个访问请求,例如:
4.登陆
5.显示表单
6.提交表单
假设我们对请求3更感兴趣。为进行置信区间分析,我们需要的仅是请求3的所有样本的响应时间均值和标准偏差,而不是全部被统计的样本的。
在Jmeter的图表结果监听器中计算的却是全部请求的响应时间均值和标准偏差。而Jmeter的聚合报告监听器计算的是独立的采样器的响应时间均值,可惜没有计算标准偏差。
总之,仅仅指定响应时间均值是危险的,因为不能反映出数据的变化。即使响应时间均值是可以接受的,但是置信区间仅有75%,这个结果也不能令人信服。但是,使用置信区间分析还是会带来更多的确定性。
结论
本文讨论了以下内容:
1.详细讲解了Jmeter线程组在加载负载时的特别设置
2.使用Jmeter代理服务器(ProxyServer)元件自动建立测试脚本的指导方针,其重点在于模拟用户思考时间(userthinktime)。
3.置信区间分析(Confidenceintervalanalysis),一种我们可以用来更好地满足响应时间需求的统计分析方法
通过使用本文提及的技术可以改善测试脚本的质量,更广泛地说,本文所讨论的内容属于是性能测试的一个工作流程的一部分,是其中的一个较困难的部分。性能测试包括并不仅限于以下内容:
1.编写性能测试需求
2.选择测试情景
3.准备测试环境
4.编写测试脚本
5.执行测试
6.回顾测试脚本和测试结果
7.指出性能瓶颈
8.书写测试报告
此外,性能测试结果,包括确定下来的瓶颈,都需要反馈给开发团队或者架构师进行优化设计。在这个过程中,并写测试脚本和回顾测试脚本是其中很重要的部分,要精心筹划和管理实施。凭借测试脚本指导和一个好的性能测试流程,你将会有更多的机会来在较重负载下优化软件性能。