总结
数据是性能量化分析最重要的基础和前提。要想做到量化分析,需要在不同的时间和空间内重复执行性能测试,并收集详细而全面的度量数据。在某种程度上来说,没有采集度量数据的性能测试是毫无意义的。
案例分析 性能bug定量分析实际案例
Bug标题:1.1版本升级到1.2后login action发生40%的性能衰减。
测试环境:某Web订票系统1.2版本。
场景描述:50用户ramp并发login运行一个小时,thinktime 500毫秒。
测试结果:1.2版本Login Service花费时间为4.2秒,而1.1版本同样的场景案例则花费2.4秒。
对1.2版本上采集的性能度量数据进行下钻细分,Oracle DB的AWR TOP SQL report捕捉到一条sql语句耗时达1.5秒。
select username,password from ocs_data.auth_users where NLSSORT(username,'NLS_SORT=GENERIC_M_CI') = NLSSORT('ocsadmin', 'NLS_SORT=GENERIC_M_CI')
对比1.1版本的AWR Report,发现这是一条1.2版本新引入的sql语句。1.1版本同样作用的sql语句为:
select username,password from ocs_data.auth_users where username= 'ocsadmin'
耗时仅为50毫秒。
解决建议:
新sql语句耗时时间较长,是由于where使用了新的字段表达式,而使得原有的字段索引没有排上用场。建议建立新的字段索引。
Bug总结:
上面的bug分析逻辑清楚,直接揭示瓶颈根源,定位到了语句级别。能完成这样的量化分析,依赖于以下几个基础条件:
● 节点数据采集点详细而全面,在oracle DB上使用awr 进行sql语句采集,这为sql语句性能分析提供了数据基础。
● 周期数据持续采集形成对比基准。在1.1和1.2版本中持续进行性能回归测试,直接将新旧版本上top sql进行对比,这为瓶颈定位提供了逻辑条件。
本文选自:《51Testing软件测试作品系列》之一的《性能测试从零开始——LoadRunner入门与提升》,本站经电子工业出版社和作者的授权,近期将进行部分章节的连载,敬请期待!
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。