微信号:grzlwx

介绍:光荣之路官方资讯

熟吗?她欺骗了你?为什么?详解LR analysis统计图表欺骗与误导手段

2015-05-07 22:26 光荣之路


性能测试中常见的loadrunner analysis统计图表欺骗与误导手段


常见的统计欺骗手段主要分为“数字欺骗”与“图表欺骗”:

1)   “数字欺骗”主要是通过刻意强调“有利指标数据”,而回避“不利指标数据”,隐瞒事实。有一个“数字欺骗”的段子:西门庆正与潘金莲鬼混,恰逢武松归来。 武松怒目圆睁要抓墙上的戒刀!武大忙拉住弟弟的袖子说道,其实我已经赢了!今年4月,西门官人才来咱家19次,同比下降17%,环比虽然上升22%,但是 增幅明显放缓;昨天和你嫂子在楼上的时间只有71分钟,同比下降24%,明显是害怕我了。而在性能测试中,例如,针对响应过慢的统计事务,结论中可能会刻 意的去强调“标准差仅为平均值1/2,响应稳定,所有测试事务执行通过,事务通过率100%”。而忽略“测试事务过慢的事务响应时间、过低的事务处理能 力”的事实。


2)   “图表欺骗”主要是通过对图表中

“不利指标数据”进行隐藏、过滤、更换颜色、更改图表类型实现、更改比例等手段实现,本文主要针对 loadrunner analysis中的常见“欺骗”手段进行说明,但其实,loadrunner之所以提供这些手段,并非出于阻止用户理解真实的性能数据,实现欺骗读者的 目的。loadrunner恰恰是为了让那些无法接触到原始性能测试结果数据的读者,更好的去了解系统性能响应数据而提供这些图表处理手段。

LoadRunner Analysis 图表常见“欺骗”手段


1) 改变图表宽度与高度,影响性能趋势理解

为了让那些没能接触原始性能测试数据的读者了解系统性能响应情况,大量的文档中插入系统的性能图表的进行性能状况的说明,但文档中的图表不注意统一高度和宽度,将在潜意识中改变了读者对系统性能的了解,例如以下二图中的事务平均响应时间趋势:

上面前后二图显示的是同一份性能测试报告中的事务平均响应时间图表,即使图表中已经非常清楚的标注了坐标轴刻度,但是只要我们通过改变图表的宽度, 左边的图表在暗示“系统事务的平均响应时间将在测试场景开始以后,短时间内冲破150秒”,而右边的图表则在暗示“系统事务的平均响应时间将随着测试场景 执行时间的延长,而不断延长”,左右二图给读者的第一印象完全不一样。


2) 改变图表粒度,影响性能趋势与平均值大小

“Set granularity”本身作用是为了让用户在大量统计数据的图表的展现过程中,更直观的理解数据集的性能趋势,而针对数据集取样时间的一项配置。实际应用如下:

在上图中,对于每秒动态变化的吞吐量,前者采用图表粒度为1秒的展现方式,这不利于用户对吞吐趋势进行直观的理解。于是,我们通过改变图表粒度为32秒后,后者吞吐量图表上可见,吞吐量趋势变得明显。
但是,通过改变取样间隔时间本身达到“图表更直观理解”的过程,本身就是一种让数据失真的行为,下面的案例中,通过改变Running VU图表粒度大小,影响了读者对VU加载策略的判断:

以上二图,仅仅通过改变图表粒度大小,就影响了读者对VU加载策略的判断,事实上,以上前后二图均出自于同一个数据集(同一份测试结果、完全相同的VU加载策略)。
在loadrunner analysis中图表粒度所改变的不仅仅是图表本身,还影响了数据集本身的平均值大小,针对以上图表的原图,我们通过改变图表粒度,可观察到图表显示的“加载策略”与“平均值”将会出现如下的变化:
            相同数据集中,不同图表粒度情况下显示的“加载策略”与“平均值”

图表粒度

图表显示VU加载策略

VU指标集平均值

1秒

“渐进”方式

每秒 99.9 VU在线

4秒

“渐进”方式

每秒 97.5 VU在线

16秒

“渐进”方式

每秒 91.6 VU在线

64秒

11个阶段

每秒 84.1 VU在线

128秒

5个阶段

每秒 71 VU在线

256秒

2个阶段

每秒 49 VU在线

3) 改变Scale值,干扰读者理解图表数据

在对各种性能图表进行叠加以对比指标间的变化关系时,由于各种类型的指标在数值上的相差悬殊,会让读者无法理解曲线之间的关系,这时scale值的 作用就非常明显了。假定吞吐量和点击率图表叠加的时候,吞吐量图表最大刻度为8,000,000,而点击率图表最大刻度为260,此时希望两张图表在叠加 时,对纵轴进行共享,那么analysis就会为了显示其中的吞吐量曲线走势,导致点击率曲线始终显示为一条处于0的“直线”。因此,在浏览性能图表的过 程中,我们都需要特别留意图表中scale值的大小,注意图表值与统计表值中的换算工作,避免scale引发误解。例如:

以上二图,均出自同一份性能测试报告中的数据,通过把原图表的scale值1更改至0.01以后,事务最大响应时间达至80秒的情况,已显示为最大响应时间在0.8秒内,事务处理性能瞬间“提升”100倍。

4) 改变图表默认显示方式,干扰读者理解数据图表

通过改变图表显示方式,通过对比的方式,让读者潜意识中低估不利数据的带来的影响。例如下面的案例中,前面的图表显示了非HTTP200的状态码返 回持续了整个性能测试场景,包括了HTTP302、HTTP404、HTTP500、HTTP503。但是后者图表中,对同样的问题,改用柱状图显示整个 性能场景中,各种状态码的每秒平均响应数量情况时,HTTP200响应和各种非HTTP200响应的对比相当“悬殊”。

后图让读者低估了这些非HTTP200响应在整个场景执行过程中始终出现,正在暗示着可能发生了:事务执行失败、参数关联失败、虚拟用户请求被系统拒绝等问题。

5) 改变图表显示元素,隐藏不利数据

过滤图表中显示的元素,刻意强调有利数据,隐藏不利的性能测试数据,如下面的案例中,前面的图表中显示了混合业务场景中,各个事务的状态,包括 PASS事务执行通过,FAIL事务执行失败,STOP事务被终止执行。而右边的图表中,过滤了对FAIL与STOP状态的显示,让测试结果数据显得“优 秀”。

6) 改变场景区间,隐藏去除离群样本/负面数据

性能测试场景执行期间出现的数据离群点会对整体性能测试结果带来一定的影响,为了避免这些离群点造成读者理解上的干扰,loadrunner analysis提供了correlate针对场景初始化、资源释放区间,以及离群点产生区间的过滤。例如:事务响应时间中,10000个样本响应时间 中,9999个样本响应时间在1秒以内,1个样本在100秒以上,这就导致了该事务最大响应时间指标严重超标、引发误解的问题,此时我们对10000个样 本中的离群点的进行过滤是合理。

在下面的案例中,针对场景初始化阶段和资源释放字段的不正确过滤,则隐藏了场景初始化过程中,负载机出现带宽瓶颈的事实。

左图中,场景00:00至01:00之间,网络带宽占用达到8M/秒,达到了100Mbps带宽环境中,理论带宽12.8M/秒的60%。

7) 更强大的过滤——全局过滤器

但其实以上的统计图表处理手段只是loadrunner analysis所提供各种数据处理手段当中的冰山一角,analysis自带的全局过滤器还能够针对测试结果中的特定事务、特定错误、特定场景区间、特 定脚本、特定的vuserID、特定的响应时间等条件进行过滤,几乎能让任何一份不理想的性能测试结果变得完美。


如何避免被性能测试统计图表误导/欺骗
1) 了解统计图表中,数据之间的是否存在因果关系;
2) 了解统计图表中,是否带有误导性的注释说明;
3) 了解统计图表中,进行对比的图表高宽、坐标轴是否一致;
4) 了解统计图表中,横轴、纵轴是否按合适的比例尺标注;
5) 了解统计图表中,是否使用了合适的图表类型(柱状图、曲线图、饼图)显示统计数据;
6) ……
N) 最重要的是:了解数据发布方、利益相关方、谁因数据得益。

(作者:huanghaopeng 来源:http://www.cnblogs.com/huanghaopeng/p/3283015.html)

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499




 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 腾讯大数据之TDW计算引擎解析——Shuffle 使用JavaScript修改伪类样式的方法总结 Python奇技淫巧 【干货】MySQL5.6配置同步复制的新方法以及常见问题的解决方法 周日一乐