Jmeter性能测试常用到的图

主要使用查看结果树,聚合报告。

查看结果树:要勾选‘仅日志错误’,只显示错误日志。

 

测试用例,尽可能保持简单。不能加定时器,除非要加集合点,可以使用Synchronizing Timer

控制器:可以使用简单控制器(放有序执行的测试用例),随机顺序控制器(放无序执行的测试用例),其他控制器不要用。尽量少用For each,循环控制器,因为并发数不好控制,避免对并发数产生影响。

前置、后置处理器:尽量不要使用。尤其不能使用BeanShell。除非必须要使用。正则提取器不会产生太大的性能影响。

断言:尽量不要用断言,要用的话,推荐使用响应断言,不推荐用BeanShell断言。

 

聚合报告:主要看Average(平均响应时间,保证尽可能短), Error(保证不能出错), Throughput(吞吐量,是否达到期望值,也就是TPS-每秒处理的事务数)。

吞吐量的变化在聚合报告中看不出来,要用其他插件。聚合报告中最终的吞吐量是不准的。要用后面讲到的集中图表来分析。

错误率也是非常重要,一旦出现错误了,说明服务器出现压力了,瓶颈了,需要进行分析了。(当然首先要保证功能测试没有错误,功能测试没有问题,才可以进行性能测试)。功能测试没有错误了,做性能测试Error不应该出现。如果出现了,说明服务器在高并发的情况下,出现压力了,达到瓶颈了。比如说连接超时了,拒绝连接了。

如果没有插件,主要看结果树,聚合报告,做以上这些就够了。

线程:

线程组

设置线程启动,增加,减少,停止的规则。增加/减少线程尽量不要太快。就是图中的曲线坡度不要陡,才能保证性能测试的数据比较准确。 

性能测试用到的图:

 

 

http://jmeter-plugins.org/wiki/

 

Active Threads Over time

 

线程数的变化,X轴是执行时间,Y轴是线程数,和stepping thread group 中配置的线程数图标类似。

Transactions Throughput vs Threads

 

 

Transactions Throughput vs Threads

吞吐量的评估值,X轴是线程数,评估值是不准的。线程数急剧变化的时候(比如线程数108120时间,有个突然上升到4000的点,是不准的),吞吐量评估值都是不太准的。

5070个线程数时,吞吐量是比较准的。

65个线程数时,吞吐量最大:

结合Active Threads Over time, 知道65个线程数大概时间是在4043秒之间:

 

 

Transactions per Second

 

每秒的事务量。这是实际的吞吐量。如果写测试报告,要写吞吐量的话,要从多个维度分析。主要看Transactions per Second,不能只看聚合报告的最终吞吐量。(这是不准的)

 

这和通过Transactions Throughput vs ThreadsActive Threads Over time2者结合分析出来的时间是吻合的(4043秒,吞吐量最大)。

 

 是因为这段时间线程数增加比较快

 

Connection Times Over Time

连接时间,一般在几毫秒,不超过5毫秒是理想的。尽量不能让连接时间达到几十毫秒,这是网络问题太大了。这个图是用来排除网络问题的。比如某个时间点吞吐量下降厉害了,要去看这个时间点的连接时间是否正常,如果连接时间很长,就是网络问题造成的,不能判断为性能问题。

Response Latencies  Over Time/Response Times Over Time

响应延迟时间和响应时间基本上是一样的。

响应延迟时间:发起请求到接口开始响应的时间。

  

 

如果Transactions per Second每间隔一定时间,就到达一个顶点(这个顶点),并且每次到达一个顶点的时间都是在线程数增加的时候(结合Active Threads Over time),说明线程数还能再增加,继续增加测试的线程数:

 

 

posted @ 2021-04-06 09:10  xxm_2017  阅读(1901)  评论(0编辑  收藏  举报