你真的了JMeter解聚合报告么?
1.背景
大家在使用JMeter进行性能测试时,聚合报告(Aggregate Report)可以说是必用的监听器,但是你真的了解聚合报告么?
2.目的
本次笔者跟大家聊聊聚合报告(Aggregate Report)常用误区。
3.常见误区
说明:本次笔者采用的JMeter版本为5.1.1
- 误区一:90%、95%、99百分位的理解
经常有的同学理解成平均90%、95%、99%请求的交易耗时,包括一些做了很久的老测人员试竟然也是这么理解的(其实笔者最开始也是这么理解的),出现这个问题根本原因是对百分位的概念理解错误(换句话说:你数学是体育老师教的吧!),那么正确该怎么理解呢?
我们来看一张聚合报告图:

正解:90%百分位值为230ms,在发送100笔请求过程中,聚合报告会实时给请求耗时进行由小到大行排序,排序后的第90个请求耗时为230ms,也就是说前90笔请求中耗时最长的是230ms(其余90%百分位,95%百分位道理类似就不占篇赘述了),聚合报告平均值要与百分位值结合来看。
说明:90%、95%、99%值是支持自定义在jmeter.properties修改:

- 误区二:把吞吐量值当TPS值
经常有的同学直接把聚合报告中的吞吐量当作TPS来看(网上还有一种说法是把请求放在事务控制器里,吞吐量就可以看成TPS,经笔者验证并不可以),这种做法是相当不严谨的。那么聚合报告中的吞吐量什么情况下可以看成TPS?
老规矩还是用实际操作来验证:

没错,还是上面聚合报告的图,笔者把100.jtl文件中的请求全部改成false,再来看下聚合报告结果:

然后再用聚合报告打开100.jtl结果文件,聚合报告各项数据没有任何改变(笔者就不放图了,不然就一张图用了3遍),笔者这种做法是比较极端的(或者可以说笔者把现象放大了),此时再把吞吐量看成TPS就出事了。。。。请求全失败了,TPS应该是0吧?????
给大家举个栗子,大家都看过赵本山大叔的《钟点工》小品,里面有个经典的问题:把大象关进冰箱需要几步?相信大家都知道答案。我们换种思维:假如我们把这个操作看成一个事务,如果找不到大象,或者没有冰箱,这个事务都是无法完成的,也就是说这个事务最终会失败(事务只有两种状态要么成功要么失败)。
那么什么时候吞吐量可以成TPS,从严格意义来讲就是交易成功率为100%;还有一种情况是:交易失败率在你可以接受的范围内(对当前测试整体结果影响不大,到了可以忽略的程度)。
我们再来验证下网上说的方法吧:把请求放在事务控制器里
脚本结构图:

有的同学可以能会问:事务控制器为啥不放多个请求,其实从本质上看是没这个必要的,放多个请求也不影响最终结果。

笔者还是用之前的操作把100_2.jtl中的请求全部改成false,再来看下聚合报告结果:

聚合报告结果图(为什么会总体样本会是200,笔者觉得问题出在逆向解析过程中会把JTL结果文件中所有的样本解析出来):

吞吐量的值还是没有变,此时吞吐量值预期结果应该是零,进而证明网上的所谓的套路不靠谱(感觉网上说的增加事务控制器的,目的更偏向与如何把多个请求组装成一个事务,这也是事务控制的作用)。
4.JMeter聚合报告源码优化
针对以上问题,笔者查看了聚合报告底层源码,总结下:聚合报告是无状态的(状态是样本的状态),只负责统计数据(就是个计数器),统计时只认Sampler的Label,笔者个人感觉源生的聚合报告,不是十分合适OLTP。
笔者优化了:统计计算公式,支持GUI页面控制(默认勾选统计tps,如果不勾选则还是统计吞吐量)

效果:

笔者手动改下100.jtl改成只失败1笔,执行结果如下:

你真的了JMeter解聚合报告么?的更多相关文章
- Jmeter默认报告优化
一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...
- Jmeter html 报告中添加90% line time
转载南风_real博客园:http://www.cnblogs.com/jaychang/p/5784882.html 首先上效果图: 其次明白几个原理: 90% Line的意思是:一组数由小到大进行 ...
- Jmeter 聚合报告---测试结果分析
当我们测试完后,最关心就是结果数据了,下面一起来分析Jmeter聚合报告数据. 首先来看下Jmeter的help是如何解释这些含义的. 1.Label - The label of the sampl ...
- jmeter(十五)Jmeter默认报告优化
一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...
- jmeter生成报告指示板
JMeter支持仪表板图表和报告生成 数据从一个测试计划. 这一章描述了如何配置和使用生成器. 概述 JMeter的仪表板生成器是一个模块化的扩展. 它的缺省行为是读取和处理样本 CSV文件生成HTM ...
- Jmeter Html 报告优化
转载自南风_real博客园:http://www.cnblogs.com/jaychang/p/5881525.html 但是最近在查阅相关资料时,发现基本都是重复一篇文章Jmeter使用笔记之htm ...
- 理解 JMeter 聚合报告(Aggregate Report)
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...
- 转: 理解 JMeter 聚合报告(Aggregate Report)
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...
- jenkins+ant+jmeter html报告文件作为附件发送(ant-jmeter支持javamail)
前言:由于ant-jmeter目前的版本不支持javamail,也就是说发送邮件时只能借助jenkins自带的发送邮件插件来发送报告. 但是jenkins发送邮件支持发送邮件内容(且有价值.有营养的内 ...
随机推荐
- 数据结构-二叉树(1)以及前序、中序、后序遍历(python实现)
上篇文章我们介绍了树的概念,今天我们来介绍一种特殊的树--二叉树,二叉树的应用很广,有很多特性.今天我们一一来为大家介绍. 二叉树 顾名思义,二叉树就是只有两个节点的树,两个节点分别为左节点和右节点, ...
- SpringBoot入门(一):从HelloWorld开始
从0开始创建springBoot项目,话不多说,跟着我一步一步来就行了. 1.新建项目 1) 创建新项目,选择project, 点点点就好了 2) Spring Initializr——>选择 ...
- Mysql优化(出自官方文档) - 第三篇
目录 Mysql优化(出自官方文档) - 第三篇 1 Multi-Range Read Optimization(MRR) 2 Block Nested-Loop(BNL) and Batched K ...
- 初学者的linux - 基本知识篇
1.Linux系统结构 Linux是一套免费使用和自由传播的类Unix操作系统,它是一种倒树结构. “/”就是系统的顶级目录,称作根目录,“/bin,/root,/home,/etc.."这 ...
- web设计_9_CSS常用布局,响应式
一个完整的页面和其中的组件该如何具备灵活性. 怎么样利用CSS来实现无论屏幕.窗口以及字体的大小如何变化,都可以自由扩展和收缩的分栏式页面. 要决定使用流动布局.弹性布局还是固定宽度的布局,得由项目的 ...
- D3学习之画布制作
最近大半个月都和d3斗争,学习艰辛(呜呜……)如果觉得作者写的对你有用,可以打赏作者哦!owo 起言:结合自己的学习之路,我认为要想使用d3画图搞清楚布局很重要,层次分明,就给了你很大的灵活性,写起代 ...
- laravel 模型查询总结
1.Model::find($id);//查找主键为$id的数据 2.Model::find([$key1,$key2]);//使用双主键进行查找 3.Model::findOrFail($id);/ ...
- TestNG中@Factory的用法一:简单的数据驱动
为什么要使用@Factory注解呢,先来看下面这个例子 被测试类Person package ngtest; import org.testng.annotations.Parameters; imp ...
- 一、PyTorch 入门实战—Tensor(转)
目录 一.Tensor的创建和使用 二.Tensor放到GPU上执行 三.Tensor总结 一.Tensor的创建和使用 1.概念和TensorFlow的是基本一致的,只是代码编写格式的不同.我们声明 ...
- python3键盘输入
1.脚本 # -*- coding: utf-8 -*- print("今年是哪一年?"),year = input("年份:")print ("ji ...