性能测试数据分析的第一步

简介: 性能测试数据分析的第一步

虽然一直在吐槽性能测试变得越来越简单(压测的工具越来越多,框架的规范越来越好,可供调优的空间越来越有限,只要合理地使用,性能问题基本上很少,但也架不住有些开发真的乱来,所以性能测试还是有空间的,但已经没必要去组建专职的性能团队了,特殊场景除外,高端的性能测试人员需要足够多的实际场景去培养,中小企业也没必要。性能测试人员能力两级分化极其严重)

 

但是如果不能掌握基本的性能测试理论和能力,还是不可以的。因为团队还是会偶尔需要你做下性能测试,你也不能错得太离谱。

 

故事,从一份测试结果数据说起~


  

当你看到上面这份性能测试结果数据,你有什么想法呢?是否正常?

 

直观来看,这份测试数据至少有三个问题没有澄清:

  1. 第二个场景中,用户数增加了一倍(从500加到1000),TPS基本上没有变化,但是响应时间增加了近一倍?原因有可能是什么?
  2. 第五个场景中,用户数增加了一倍(从500加到1000),TPS断崖式下跌,原因是什么?
  3. 最后一个场景中,错误率是92%,具体是什么异常呢?这组数据其实没有任何意义。

 

得到的回复是,数据就这样的,测试只负责压数据,其他的事也不会啊~

 

血压飙升。。。。

 

其实这也是很多性能测试人员面临的问题,没有具体分析问题的能力,也不要求测试人员去确认是哪个部分组件的性能问题,或者去定位代码级的问题,但是至少,你也需要有分析测试数据并给出合理的结果数据吧。

 

你会如何回答上面三个问题?能给出可能的原因吗?

 

先来看一张性能测试人员可能看到吐,但又没太看明白的性能测试曲线拐点图:


这里先不分析几个Load的划分,主要来看看随着用户的增加,Throughput(也可以理解为TPS)、Utilization(资源使用率)和RT(响应时间)的变化关系。上图表达的是理论上在性能测试的过程中,这三者的变化关系。如果不符合,那肯定就是某个环节出了问题。

 

这是性能测试数据分析的第一步,也是性能测试的基本功,需要从这三者的变化关系中,先确认是哪里出了问题。而不是一上来就分析线程数、中间件等等,还没到哪一步。

 

那么,这三者会有几种常见的问题组合及解决方案呢?直接上结论吧,如下图所示(变化大小指的是斜率的变化):

 

 

所以,上面的第一个问题就符合场景2:用户数增加了一倍(从500加到1000),TPS基本上没有变化,但是响应时间增加了近一倍(TPS变化小,RT变化大,资源利用率待确认),所以排查的方向就相对比较明确了,参考表中场景2的排查思路。

 

对于第2个问题,TPS断崖式下跃,99%的响应时间也增加了近3倍,则说明系统出现了明显的性能瓶颈,而且已经过了性能拐点,符合性能测试曲线拐点图中的Buckle Zone表现,需要利用二分法找到那个拐点并监控服务资源的情况,定位问题。

 

针对第三个问题,错误率达到92%,但是由于是非GUI执行,无法看到具体的错误信息,这个如何处理呢?一般情况下,在性能测试脚本中都会设计对应的检查点来确保存在高并发下业务的正确性,所以针对断言失败的情况,我们有必要输出返回信息,在Jmeter中,一般会做如下设置:


然后在执行脚本时,结合-j 参数来输出错误日志,方便排查问题,而不是一问三不知。


其实这份测试结果还有一个严重的问题,就是压测的情况过少,只压测了2种用户数情况,这是远远不够的,因为2种情况并不足以说明变化情况,至少需要3个及以上,才能有效的观察出TPS、RT和资源使用情况的变化关系。

 

小结:


作为性能测试分析的第一步,我们需要根据Throughput(也可以理解为TPS)、Utilization(资源使用率)和RT(响应时间)的变化关系,找出是压力机的问题、配置的问题还是应用的问题,让这三者的变化关系符合性能测试曲线图。确保你的压测是正确的、合理的,然后再进一步分析性能瓶颈。否则就是在错误的道路上越走越远(在错误的压测数据上做分析没有任何意义)。

 

共勉。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
8月前
|
人工智能 大数据 数据挖掘
只知道ABtest?测试方法还有这些,数据分析师都得掌握!
只知道ABtest?测试方法还有这些,数据分析师都得掌握!
|
数据挖掘 测试技术 索引
软件测试|数据分析神器pandas教程(三)
软件测试|数据分析神器pandas教程(三)
122 0
软件测试|数据分析神器pandas教程(三)
|
机器学习/深度学习 监控 算法
机器学习测试笔记(9)——数据分析
机器学习测试笔记(9)——数据分析
86 0
机器学习测试笔记(9)——数据分析
|
数据挖掘
数据分析思维(三)|测试/对比思维
测试/对比思维可以说在数据分析的工作中随处可见。当我们通过各种手段得到一些结果数据后,如何评价结果的好坏呢?这个时候你可能会想到和标准结果进行比较、和之前的数据进行对照等等方法,这些方法归根结底就是一种测试/对比思维。在该思维中最常用的方法就是A/B测试,本文我们就重点了解一下A/B测试的思想及其应用案例。
数据分析思维(三)|测试/对比思维
|
SQL 数据采集 数据可视化
软件测试|Pandas数据分析及可视化应用实践
软件测试|Pandas数据分析及可视化应用实践
161 0
软件测试|Pandas数据分析及可视化应用实践
|
数据挖掘 测试技术 数据处理
数据分析实战 | A/B测试探寻哪种广告点击率更高?
数据分析实战 | A/B测试探寻哪种广告点击率更高?
数据分析实战 | A/B测试探寻哪种广告点击率更高?
|
数据挖掘 测试技术 数据格式
《R语言数据分析》——1.2 文本文件编译测试平台
本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.2节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.2 文本文件编译测试平台 从平面文件处理和导入一定规模的数据集到R还可以使用data.table包。
1414 0
|
1天前
|
敏捷开发 IDE 测试技术
深入探索自动化测试工具Selenium的高效应用
【5月更文挑战第23天】 在快速演进的数字时代,软件开发周期不断缩短,而质量保证的需求却日益增加。自动化测试作为确保软件质量的关键手段之一,其重要性不言而喻。Selenium作为一种广泛使用的自动化测试工具,因其跨平台、多语言支持和开源等特性,在业界得到了广泛应用。本文将深入分析Selenium的核心功能,探讨其在真实项目中的应用策略,并通过案例分析展示如何通过Selenium提高测试效率和准确性。

热门文章

最新文章