回忆之城
生命在于折腾
posts - 575,comments - 9,trackbacks - 0
 

LoadRunner中的90%响应时间是什么意思?这个值在进行性能分析时有什么作用?本文争取用最简洁的文字来解答这个问题,并引申出“描述性统计”方法在性能测试结果分析中的应用。

 

为什么要有90%用户响应时间?因为在评估一次测试的结果时,仅仅有平均事务响应时间是不够的。为什么这么说?你可以试着想想,是否平均事务响应时间满足了性能需求就表示系统的性能已经满足了绝大多数用户的要求?

假如有两组测试结果,响应时间分别是 {1351016} {56789},它们的平均值都是7,你认为哪次测试的结果更理想?

假如有一次测试,总共有100个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信?

为了解答上面的疑问,我们先来看一张表:

 

在上面这个表中包含了几个不同的列,其含义如下:

CmdID   测试时被请求的页面

NUM      响应成功的请求数量

MEAN    所有成功的请求的响应时间的平均值

STD DEV      标准差(这个值的作用将在下一篇文章中重点介绍)

MIN              响应时间的最小值

50 th(60/70/80/90/95 th)          如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。后面的60/70/80/90/95 th 也是同样的含义

MAX      响应时间的最大值

我想看完了上面的这个表和各列的解释,不用多说大家也可以明白我的意思了。我把结论性的东西整理一下:

1.      90%用户响应时间在 LoadRunner中是可以设置的,你可以改为80%或95%;

2.      对于这个表,LoadRunner中是没有直接提供的,你可以把LR中的原始数据导出到Excel中,并使用Excel中的PERCENTILE 函数很简单的算出不同百分比用户请求的响应时间分布情况;

3.      从上面的表中来看,对于Home Page来说,平均事务响应时间(MEAN)只同70%用户响应时间相一致。也就是说假如我们确定Home Page的响应时间应该在5秒内,那么从平均事务响应时间来看是满足的,但是实际上有10-20%的用户请求的响应时间是大于这个值的;对于Page 1也是一样,假如我们确定对于Page 1 的请求应该在3秒内得到响应,虽然平均事务响应时间是满足要求的,但是实际上有20-30%的用户请求的响应时间是超过了我们的要求的;

4.      你可以在95 th之后继续添加96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用Excel的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且99%的用户请求的响应时间都是在性能需求所定义的范围之内的;

5.      如果你想使用这种方法来评估系统的性能,一个推荐的做法是尽可能让你的测试场景运行的时间长一些,因为当你获得的测试数据越多,这个响应时间的分布曲线就越接近真实情况;

6.      在确定性能需求时,你可以用平均事务响应时间来衡量系统的性能,也可以用90%或95%用户响应时间来作为度量标准,它们并不冲突。实际上,在定义某些系统的性能需求时,一定范围内的请求失败也是可以被接受的;

7.      上面提到的这些内容其实是与工具无关的,只要你可以得到原始的响应时间记录,无论是使用LoadRunner还是JMeter或者OpenSTA,你都可以用这些方法和思路来评估你的系统的性能。

 

事实上,在性能测试领域中还有更多的东西是目前的商业测试工具或者开源测试工具都没有专门讲述的——换句话说,性能测试仅仅有工具是不够的。我们还需要更多其他领域的知识,例如数学和统计学,来帮助我们更好的分析性能数据,找到隐藏在那些数据之下的真相。

欢迎各位同行高手灌水拍砖 ^_^



数据分析过程中常用的几个Excel函数

1.PERCENTILE
之所以会提到这个函数,是因为在LR中有个90%响应时间的概念。在测试过程中,假设总共有100个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信?因此,这种情况下,单纯的求数据的平均值显得没有任何意义。

以下引用一位达人的解释:
我们先来看一张表:

CmdID
测试时被请求的页面
NUM
响应成功的请求数量
MEAN
所有成功的请求的响应时间的平均值
STD DEV
标准差(这个值的作用将在下一篇文章中重点介绍)
MIN
响应时间的最小值
50 th(60/70/80/90/95 th)
如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。后面的60/70/80/90/95 th 也是同样的含义
MAX
响应时间的最大值
我想看完了上面的这个表和各列的解释,不用多说大家也可以明白我的意思了。我把结论性的东西整理一下:
1. 从上面的表中来看,对于Home Page来说,平均事务响应时间(MEAN)只同70%用户响应时间相一致。也就是说假如我们确定Home Page的响应时间应该在5秒内,那么从平均事务响应时间来看是满足的,但是实际上有10-20%的用户请求的响应时间是大于这个值的;对于Page 1也是一样,假如我们确定对于Page 1 的请求应该在3秒内得到响应,虽然平均事务响应时间是满足要求的,但是实际上有20-30%的用户请求的响应时间是超过了我们的要求的;
2. 你可以在95 th之后继续添加96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用Excel的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且99%的用户请求的响应时间都是在性能需求所定义的范围之内的;

有了上面的解释,想必大家也应该知道如何去运用这个函数去分析我们的测试数据了~
关于PERCENTILE函数的计算公式如下:
设一个序列供有n个数,要求(k%)的Percentile: 
(1)从小到大排序,求(n-1)*k%,记整数部分为i,小数部分为j 
(2)所求结果=(1-j)*第(i+1)个数+j*第(i+2)个数
 
例:(注意一定要先从小到大排序的,这里已经排过序啦!) 
{1,3,4,5,6,7,8,9,19,29,39,49,59,69,79,80}共16个样本 
 
(1)30%:(16-1)*30%=4.5=4+0.5 
 (1-0.5)*第5个数+0.5*第6个数=0.5*6+0.5*7=6.5 
 
(2)75%:15*75%=11.25=11+0.25 (3rd Quartile) 
 (1-0.25)*第12个数+0.25*第13个数=0.75*59+0.25*69=51.5 
2.FREQUENCY
 该函数可以很容易的统计出一列数据中,各个数据段之间的数据个数,为生成图表提供便利。
 以上图为例,为了统计各个分数段的成绩个数,先在C2格插入公式=FREQUENCY(A2:A11,B2:B4) ,然后选中C2~C4这3个单元格,按下F2键,再同时按Ctrl+Shift+Enter这三个键,就可以在C2~C4中插入数组公式={FREQUENCY(A2:A11,B2:B4)}了(注意左右大括号必须是系统自动生成的,手输入是无效的)。C2格表示≤60分的成绩个数,C3表示>60且≤85的成绩个数,C4表示>85且≤100的成绩个数。
3.QUARTILE
这个函数在使用意义上一定程度上等同于PERCENTILE,再次不做多说,只对他的计算方法做个介绍:
Quartile(四分位数): 
 
第0个Quartile实际为通常所说的最小值(MINimum) 
第1个Quartile(En:1st Quartile) 
第2个Quartile实际为通常所说的中分位数(中数、二分位分、中位数:Median) 
第3个Quartile(En:3rd Quartile) 
第4个Quartile实际为通常所说的最大值(MAXimum) 
 
我想大家除了对1st、3rd Quartile不了解外,对其他几个 
统计量的求法都是比较熟悉的了,而求1st、3rd是比较 
麻烦的,下面以求1rd为例: 
 
设样本数为n(即共有n个数),可以按下列步骤求1st Quartile: 
(1)将n个数从小到大排列,求(n-1)/4,设商为i,余数为j 
(2)则可求得1st Quartile为:(第i+1个数)*(4-j)/4+(第i+2个数)*j/4 
 
例(已经排过序啦!): 
1.设序列为{5},只有一个样本则:(1-1)/4 商0,余数0 
 1st=第1个数*4/4+第2个数*0/4=5 
2.设序列为{1,4},有两个样本则:(2-1)/4 商0,余数1 
 1st=第1个数*3/4+第2个数*1/4=1.75 
3.设序列为{1,5,7},有三个样本则:(3-1)/4 商0,余数2 
 1st=第1个数*2/4+第2个数*2/4=3 
4.设序列为{1,3,6,10},四个样本:(4-1)/4 商0,余数2 
 1st=第1个数*1/4+第2个数*3/4=2.5 
5.其他类推! 
 
因为3rd与1rd的位置对称,这是可以将序列从大到小排(即倒过来排), 
再用1rd的公式即可求得: 
例(各序列同上各列,只是逆排): 
1.序列{5},3rd=5 
2.{4,1},3rd=4*3/4+1*1/4=3.25 
3.{7,5,1},3rd=7*2/4+5*2/4=6 
4.{10,6,3,1},3rd=10*1/4+6*3/4=7 
posted on 2008-03-25 14:14 回忆之城 阅读(637) 评论(0)  编辑 收藏 引用 所属分类: 测试技术相关
只有注册用户登录后才能发表评论。