• 高级性能测试系列《20. 事务控制器、在性能测试中,看聚合报告的前提条件是?》...


    目录

    • 一、回顾

    • 二、事务控制器

    • 三、聚合报告/汇总报告

      • 1.没有网络瓶颈。

      • 2.并发用户数不变。

    一、回顾

    jmeter脚本性能转换:逻辑控制器。

    用jmeter写脚本,可以去做接口测试、自动化测试、性能测试。

    性能测试脚本,可以直接用于接口测试、自动化测试。

    但是,接口测试、自动化测试脚本,不能直接用于性能测试,需要进行性能转换,才能用于性能测试。

    性能测试,要尽可能得降低jmeter工具自身对资源的消耗。

    接口测试、自动化测试脚本,一定会添加断言,断言的目的是判断是否有bug。

    断言,这个元件在执行时,消耗来自jmeter工具启动后所分配的资源(自己电脑的cpu+内存相关的一些资源)。

    这个是本机消耗的时间和资源,不是服务器消耗的时间和资源。

    断言所消耗的时间和资源被算到服务器消耗的时间和资源里面去了。所以,性能测试,不要加断言。

    接口测试、自动化测试:用Beanshell元件,写脚本时,只考虑功能能实现即可,不会过多去考虑元件使用的时间、资源消耗。

    性能测试:Beanshell所有元件,能不用则不用。

    如果,一定要写java代码来处理的,可以采用JSR223${__jexl3(,)}函数、${__groovy(,)}函数替换掉Beanshell所有元件。

    • 元件的选择:

      • DDT

      • JSR223

    运行模式:GUI 图形界面模式,这个模式只用于编辑调试脚本。

    真正的性能测试用CLI模式(无图形界面模式),为了减少资源的消耗,从而向服务器发起更多的请求。

    • if条件控制器:

      • 默认勾选:Interpret condition as variable

      • 勾选了,要使用jexl3groovy函数,得出结果truefalse

      • 不勾选:Interpret condition as variable

      • 不勾选,条件框中运算过程(表达式)的结果为truefalse

    二、事务控制器

    在jmeter中,默认一个取样器执行一次请求,就是一个事务。

    事务控制器:控制其子集的取样器(n个),合并为一个事务。

    TPS:是服务器每秒处理的事务数。

    在事务控制器下,挂载多个取样器,想要把多个取样器合并为1个事务,必须勾选Generate parent sample

    1.性能测试中,是否要勾选Generate parent sample

    性能测试,要先做单接口的性能测试,然后再做多接口的性能测试。

    在做多接口合并的时候,需要勾选。

    97de46c617482a4574f61c56c7cc7d92.png
    例1:事务控制器:已经勾选Generate parent sample
    a6b65d4bd84a9d6977b0f522fb46bc47.png
    运行结果
    fee30d54d1741e21bd8453d166676685.png
    例2:勾选了,就把前置处理器和后置处理器的时间都算到事务控制器里面去了,在聚合报告里面显示出来。

    在性能测试中,需要先用单个取样器,做出某个接口的性能测试指标。

    然后再出多个接口的性能指标,再使用事务控制器,勾选Generate parent sample,做出业务的性能指标。

    把所有的业务都做出来,再合并,做出整个系统的性能指标。

    2.如果领导要你得到某个业务的性能指标:

    需要先梳理出这个业务所有的接口,然后对这个业务所有的接口进行性能测试,得到性能指标。

    然后,再使用事务控制器,合并取样器,最终才得到业务的性能指标。

    三、聚合报告/汇总报告

    真正做性能测试时,所有的监听器,都要禁用。(监听器拿到数据展示出来是需要时间的)

    在性能测试中,看聚合报告,有前提条件:

    1、没有网络瓶颈

    因为,在很多时候,我们在看聚合报告时,会把吞吐量的值等价为TPS的值(没有网络瓶颈的时候才可以这样理解)。

    怎么判断有没有网络瓶颈?

    聚合报告最后两列:是吞吐率。

    吞吐率与我们的带宽是有关系。

    通过吞吐率,是可以看出是否存在网络带宽问题。

    20Mb  100Mb

    1Mb = 1 x 1024kb = 1024kb/8 = 128KB/s

    吞吐率的值越接近128,可能就有网络瓶颈了。

    企业的带宽和民用的带宽是不一样的。

    民用的带宽:上行(入门理解为发送)比较窄,下行(入门理解为接收)比较宽。

    企业级的带宽:上行(入门理解为发送)比较宽,下行(入门理解为接收)比较窄。

    企业服务器,一般电商类的产品,也就几m带宽。

    2、并发用户数不变

    负载测试时,并发用户数会随着时间变化而变化(每秒钟发20个人,30个人。1秒钟发的请求量都不一样),就不能看聚合报告。

    355939d95122afc3a277caae44404b00.png
    线程组:10个线程,永久循环,持续时间60秒
    c0c4860ebf1e211cf40018d72786e4b7.png
    事务控制器
    f5c2dd85df82aef7f3f887c3692d26db.png
    运行结果:聚合报告
    • 每一行:都是一种事务。

    每一列:

    • 样本:在刚才的过程中,所有的并发用户数,在一段时间中的总请求量。

    单独看样本,是无法知道并发用户数、执行时长。

    10r x 60s x pl(频率)= 351

    pl(频率)=0.585

    每一个人的吞吐量是0.585。因为没有网络瓶颈,tps值就是0.585。

    • 平均值...........最大值:这些都是响应时间。单位是毫秒ms。

    • 90%:所有的样本中,有90%的样本时间是小于等于这个时间的。

    脚本链接

    链接:https://pan.baidu.com/s/10rIeYWWfcdPmyNPqJG3-pw?pwd=1234 提取码:1234


    文章中除标明“图片来自网络”的图片,皆为小编本人所画所截图,计算机知识都一样,如有雷同,纯属巧合。文章为清菡所编写,如有转载,请标明出处!

    欢迎关注 “清菡软件测试”,进群加v:qhtester,备注:学校(公司名)+姓名(昵称),否则不予通过,感谢点赞与分享!

  • 相关阅读:
    AWS VPC
    nginx 常用命令 |升级到1.20.1版本 | 如何更换 Nginx SSL 证书
    【Spring Cloud Alibaba】seata分布式事务官方入门案例(实战版)
    selectTree单选iview+vue
    C# 生成指定图片的缩略图
    UNIX环境高级编程_文件IO_文件描述表
    爆火的无人驾驶萝卜快跑,背后有哪些隐忧?
    HarmonyOS鸿蒙原生应用开发设计- 流转图标
    Qt-QTransform-内存结构-仿射变换-工作原理-C++
    Pytorch实用教程:为什么定义模型时,没有输入形参,但是使用时可以直接传入输入数据?
  • 原文地址:https://blog.csdn.net/weixin_41033105/article/details/125454539