软件测试 | 巧用监听器—识别性能缺陷
图形结果(Graph Results)——性能测试的王者利器
图形结果主要包含 4 种统计信息,即当前采样响应时长(黑色)、当前平均采样响应时长(蓝色)、当前采样响应时长标准差(红色)、当前吞吐率(绿色),如图 12-4 所示。其中最有价值的是:平均采样响应时长、采样响应时长标准差、吞吐率。
(1)通过观察平均采样响应时长曲线,用户可以直观地看到,随着并发压力的加大,以及性能测试时间的延长,系统性能所发生的变化。正常情况下,平均采样响应时长曲线应该是平滑的,并大致平行于图形下边界。
下面是几种可能存在性能问题的平均采样响应时长曲线的示意图。
1 平均响应时长在初始阶段跳升,而后逐渐平稳下来,如图 12-27 所示。这说明系统在初步阶段响应比较慢,导致这种现象的原因有一种:一是系统在初始阶段存在性能缺陷,需要进一步优化,如数据库查询缓慢。二是系统有缓存机制,而性能测试数据在测试期间没有变化,如此一来同样的数据在初始阶段的响应时长肯定较慢,而后续响应时长基本一致。这属于性能测试数据准备的问题,不是性能缺陷,需调整后再继续测试。三是系统架构设计导致的固有现象,例如,在系统接收到第一个请求后,才去建立应用服务器到数据库的连接,后续一段时间内不会释放连接。这种情况是属于性能缺陷,需要测试人员与系统架构师、开发人员、最终用户等角色一起确认。
2.平均响应时长持续变大,图形变得越来越陡峭,如图 12-28 所示。对于这种情况,基本可以肯定存在性能缺陷,如内存泄露。测试人员需要及时上报缺陷,并协助开发定位问题。测试人员可以通过监控系统日志、监控应用服务器状态等常见方法,来尝试定位问题。
3.平均响应时长在性能测试期间,突然发生跳变,然后又恢复正常,如图 12-29 所示。对于这一情况,即可能源于系统性能缺陷,又可能是由于测试环境不稳定所造成的。分析问题,首先要排除测试环境不稳定带来的影响,一是检查应用服务器状态(CPU 占用、内存占用等),如果待测系统与其他应用系统公用服务器,需排除其他系统带来的影响。二是检查测试环境网络是否存在拥塞。如果能够排除测试环境的影响,测试人员接下来应该通过多种手段(监控应用服务器、监控数据库、监控系统日志等)来确认是否存在性能缺陷,例如,对某些特定测试数据的处理存在问题。
(2)通过观察采样响应时长标准差,可以判断采样数据的分布是否均匀。当采样数据分布不均匀,提示可能存在性能缺陷。标准差(Standard Deviation),也称均方差(Mean Square Error),是各数据偏离平均数的距离的平均数,它是离均差平方和平均后的方根,标准差是方根的算数平方根。标准差能反映一个数据集的离散程度。平均数相同的,标准差未必相同。如图 12-30 所示为标准差的计算公式。标准差越高,表示测试数据越离散;反之,标准差越低,代表测试的数据越平稳。显然,理想的采样响应时长标准差曲线,也应该是平滑的。
(3)吞吐率表征服务器每分钟处理的实际采样数。测试人员可以通过增加并发线程或减少脚本中的延迟,来找到系统支持的最大吞吐率。接着将系统实际支持的最大吞吐率和预期吞吐率进行比较,以便确认系统表现是否满足用户需求。参考图 12-4 中的绿色吞吐率曲线,该曲线随着并发压力逐步加大,逐渐趋于平滑,这就说明系统达到了其支持的最大吞吐率。如果进一步加大压力,系统响应会变慢,甚至发生崩溃。如果系统支持 最大吞吐率不能达到系统设计预期值,测试人员应该及时上报性能缺陷,并协助开发人员定位问题。
评论