4.2 性能测试输出的类型

你可能经常听到“谎言,可恶的谎言和统计”这样的嘲笑。撇开这样的嘲笑不谈,统计分析已是所有自动化性能测试工具核心的一部分。假如你已深入了解统计分析,那固然很好,但是对于其他人来说,在本章介绍一些常用的统计分析术语还是很有必要的。关于统计分析更详细的信息,请参考维基百科(译或者其他与统计相关的文章。

4.2.1 统计入门

平均数和中位数[1]

广义上讲,平均数指的是一系列数字的平均值。它通常用于计算性能测试中的平均响应时间。为了达到更好的效果,平均数通常结合Nth百分比(Nth百分比将在后文中介绍)来使用。当前有几种不同类型的平均值,基于性能测试的目的,我们倾向于关注“算术平均值”。

例如:为了计算1、2、3、4、5、6的算术平均数,最简单的办法就是直接计算它们的和,然后除以这些数字的个数(6)即可,最后得出的算术平均数是3.5。

另外一个有关的度量标准是中位数,中位数的简单理解就是一组数据的中间值。对于那些通过上述平均数计算方法计算出来的算数平均值存在较大偏差,此时算术平均数不能反映真实的平均值,那么取中位数就变得非常有意义了。

例如:1、2、2、2、3、9这一组数据的算术平均数是3.17,但是这组数值中大多数的数是2或者比2小。在这种情况下,中位数2就能更准确地表现平均数。

标准方差和正态分布

另外一种常用的指标是标准偏差,标准方差反映所有数据与这组数据平均值之间的平均偏离度。标准方差是基于这样的假设:大部分数据是随机产生的。现实生活中的事情都存在一个正态分布,就是我们大多数人都很熟悉的在高中时学到的“贝尔曲线”。标准方差越大,所有数据的值与平均值就偏差越远。图4-1展现的是一个维基百科的例子。

4.2 性能测试输出的类型 - 图1

图 4-1 简单贝尔曲线图

性能测试中,较高的标准方差意味着最终用户的体验不够稳定。例如,一个事务计算出来的平均响应时间是40秒,但标准方差是30秒,这表示对于同一个操作,用户的响应时间最低可能是25秒,最高可能是55秒。性能测试的目标应该是使标准方差的值较小。

Nth百分比

统计学中的百分比用于定义测试结果的采样比例。例如,40th百分比意味着选取在40%及小于40%的一组结果。计算一组数据给定的百分比是困难的,但是你的性能测试工具应该能够自动给出这个值。你需要做的就是选择一个百分比值(1~100)来排除你不想要的值。

例如,我们应用之前用过的一组数据(1,2,2,2,3,9)为例,并设定90th百分比。这样要忽略的数据落在了3和9上,我们选择从测试结果中排除较大的测试数据9。接着我们对余下的5个数取算术平均数,由此得出一个更具代表意义的值为2((1+2+2+2+3)/5=2)。

响应时间分布

响应时间分布基于正态分布模型,这种方法要求收集性能测试过程中的所有响应时间并置于一个组或“桶(bucket)”内。这种分布通常以柱状图表示,图中每一个条柱代表响应时间的一个范围,并且标出处于该区间内的响应时间百分比。通常你可以自定义图中条柱的数目以及每个条柱所代表的时间范围。下图Y轴表示的是响应时间。具体信息请参见图4-2。

4.2 性能测试输出的类型 - 图2

图 4-2 响应时间分布

[1]这里的“中位数”类似于Loadruner结果分析中的90%的取值,意思是:所有数据进行排序,选取其中90%的数据中最大的值。