• 学会这篇文章分享的知识,你就超过了90%的测试人


    ♥  前  言

    jmeter 可以做性能测试,这个很多人都知道,那你知道,jmeter 可以在启动运行时,指定线程数和运行时间,自定义性能场景吗?

    jmeter 性能测试,动态设定性能场景

    平时,我们使用 jmeter 进行性能测试时,使用普通线程组,并发用户数和运行时间等场景参数都是固定写死的。运行脚本时,就按照写死在脚本中的场景来运行。

    果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386     

    【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

    相信,绝大多使用 jmeter 进行性能测试,性能场景设计,都类似上图,写死线程数、ramp-up 时间、持续运行时间。

    这样,固然很好,直接就可以用,但是,当我们用 CLI 模式,做负载测试时,我们期望能随时更改线程数、ramp-up 时间和持续运行时间,你怎么做?

    用 jmeter 的 gui 界面,修改场景中的这些参数值,然后,保存,再运行;或者,直接编辑脚本 jmx 文件,保存,再运行。

    两种方法都可以,但是,有没有感觉,比较麻烦?有没有更简洁的方法呢?

    在我的教学中,给大家讲过,jmeter 除了变量之外,还有‘属性’,属性是 jmeter 工具的标签,可以在 jmeter 这个工具的任何地方被使用。

    jmeter 不仅支持属性文件配置静态属性,也支持,在脚本运行过程中,动态生成属性,而且,还支持,外部传入动态属性。

    我们可以把场景,修改为如图:

    通过获取属性 pthreads,来指定线程数, 获取属性 pramp 来指定 ramp-up 时间,获取属性 pruntime 来指定持续运行时间。

    这些属性,真实存在吗?后面的数字,又是什么意思呢?

    首先,P 函数,在 jmeter 中,是获取属性函数,它有两个参数,第 1 个参数,是属性名,这些属性,可以事先定义的静态属性,也可以是动态生成的动态属性,图中用到的所有属性,就是事先没有定义,在运行时动态定义的属性;第 2 个参数,是属性默认值,当这个属性没有获取到值时,使用这个默认值。

    什么意思?

    意思是,如上图这样设计,你不传任何属性值,直接运行,就会按 1 秒钟内启动 30 个并发用户数,持续运行 60 秒的场景来运行。

    现在,你可以放心了吧,即便你没有传入这些属性值,这个场景,也是可以正常运行的。

    那,我们在 CLI 模式下,进行性能测试时,到底应该怎么传入这些属性值呢?

    首先,我们要知道,使用 CLI 模式,进行性能测试,通常有两种方式,一种,就是直接启动本地脚本运行;另外一种,就是采用分布式,指定助攻机器来运行。

    • 用 CLI 命令,直接指定本地脚本运行

    CLI 命令中,使用 -J[property_name]=value 的方式,传入属性值

    1. # 本地运行, 指定pthreads线程数属性参数值为50,pruntime持续运行时间属性参数值为70秒
    2. jmeter.bat -n -t .\jkscript\demo_script.jmx -Jpthreads=50 -Jpruntime=70 \
    3. -l test001.jtl -e -o .\jkscript\test001

    看,实际运行时,50 个线程数,运行 70 秒钟。

    • 用 CLI 命令,指定助攻机运行

    CLI 命令中,使用 -G[property_name]=value 的方式,传入属性值

    1. # 采用助攻机运行 指定pthreads线程数属性参数值为80,指定pruntime持续运行时长属性参数值为120秒
    2. jmeter.bat -n -R 192.168.x.x:port -t .\jkscript\demo_script.jmx -Gpthreads=80 -Gpruntime=120 \
    3. -l test002.jtl -e -o result002

    看,实际运行,根据命令参数设置,运行了 80 个线程数,持续运行了 120 秒钟。

    有了这样一种技术之后,我们再也不用去打开脚本修改性能场景了,只需要在执行命令的时候,改下脚本参数就可以了。只是,我们要记清楚,本地直接运行,属性参数名称前用‘J’,分布式运行,属性参数名称前用‘G’。

    好了,你掌握了吗?

     

  • 相关阅读:
    9、Spring 源码学习 ~ Bean 的加载
    电力电子转战数字IC20220728day58——uvm入门实验5
    Linux 搭建K8s集群,最新教程,细到极致
    如何用 CMake 生成 C++ 库(支持 find_package 机制)
    java反射
    Spring Cloud AWS配置中心使用
    Nuxt - 解决引入 qrcodejs2.js / QRCode.js 报错(document is not defined)
    Latex IEEE模板导入中文问题
    java代理
    DC-5靶机
  • 原文地址:https://blog.csdn.net/m0_73409141/article/details/133173689