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