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解聚合报告么?的更多相关文章

  1. Jmeter默认报告优化

    一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...

  2. Jmeter html 报告中添加90% line time

    转载南风_real博客园:http://www.cnblogs.com/jaychang/p/5784882.html 首先上效果图: 其次明白几个原理: 90% Line的意思是:一组数由小到大进行 ...

  3. Jmeter 聚合报告---测试结果分析

    当我们测试完后,最关心就是结果数据了,下面一起来分析Jmeter聚合报告数据. 首先来看下Jmeter的help是如何解释这些含义的. 1.Label - The label of the sampl ...

  4. jmeter(十五)Jmeter默认报告优化

    一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...

  5. jmeter生成报告指示板

    JMeter支持仪表板图表和报告生成 数据从一个测试计划. 这一章描述了如何配置和使用生成器. 概述 JMeter的仪表板生成器是一个模块化的扩展. 它的缺省行为是读取和处理样本 CSV文件生成HTM ...

  6. Jmeter Html 报告优化

    转载自南风_real博客园:http://www.cnblogs.com/jaychang/p/5881525.html 但是最近在查阅相关资料时,发现基本都是重复一篇文章Jmeter使用笔记之htm ...

  7. 理解 JMeter 聚合报告(Aggregate Report)

    Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...

  8. 转: 理解 JMeter 聚合报告(Aggregate Report)

    Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...

  9. jenkins+ant+jmeter html报告文件作为附件发送(ant-jmeter支持javamail)

    前言:由于ant-jmeter目前的版本不支持javamail,也就是说发送邮件时只能借助jenkins自带的发送邮件插件来发送报告. 但是jenkins发送邮件支持发送邮件内容(且有价值.有营养的内 ...

随机推荐

  1. ROS中URDF的学习以及与Xacro的比较

    1.urdf与Xacro简单比较 "URDF" 是最初也是比较简单的机器人描述文件,它的结构简单明了,容易理解.但是这也导致当机器人模型变得复杂时,urdf的结构描述就变得冗长,无 ...

  2. Excel催化剂开源第11波-动态数组函数技术开源及要点讲述

    在Excel催化剂中,大量的自定义函数使用了动态数组函数效果,虽然不是原生的Excel365版效果(听说Excel2019版取消了支持动态数组函数,还没求证到位,Excel365是可以用,但也仅限于部 ...

  3. [小米OJ] 10. 爬楼梯

    dp 另: 小米oj上的测试样例是错的 ; ) function solution(line) { if (line == 0) return 0; if (line == 1) return 1; ...

  4. Keil debug command SAVE 命令保存文件的解析

    简介 使用 Keil debug 很方便,把内存中的一段区域 dump 出来也很方便,例如使用命令 SAVE filepath startAddr, endAddr, typeCode .但是要查看 ...

  5. get 请求和post请求的具体区别

    get请求是向服务器索要数据,post请求是向服务器传送数据 的,浏览器限制了get的传送量,post可以大量的把数据传给 服务器,一般情况下get请求,请求体是空的,请求只发一次 ,如果是post请 ...

  6. Java EE编程思想

    组件--容器 编程思想 组件:由程序员根据特定的业务需求编程实现. 容器:组件的运行环境,为组件提供必须的底层基础功能. 组件通过调用容器提供的标准服务来与外界交互,容器提供的标准服务有命名服务.数据 ...

  7. bean的创建(五)第三部分 bean工厂方法参数的解析

    准备好一系列参数之后,开始参数类型的转换,方法参数的对应. ConstructorResolver.createArgumentArray private ArgumentsHolder create ...

  8. JS中构造函数和普通函数有什么区别

    JS中构造函数有普通函数有什么区别? 1.一般规则 构造函数都应该以 一个大写字母开头,eg: function Person(){...} 而非构造函数则应该以一个小写字母开头,eg: functi ...

  9. Java核心技术(卷一)读书笔记——第一章(概述)

    1.Java不提供多重继承,通过接口来实现.一个类只能继承一个父类,但是可以同时实现多个接口. 2.Java中的int类型的大小是固定的32位,以避免代码移植时候的不兼容问题.唯一的限制是int类型的 ...

  10. Linux 文件系统相关的基本概念

    本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...