青春须早为,岂能长少年。这篇文章主要讲述#导入MD文档图片#JMeter-多线程组间通信相关的知识,希望能为你提供帮助。
JMeter作为一款免费的性能测试工作,越来越受大家的青睐。在模拟业务场景方面,JMeter也给了我们很多的支持。特别是在可扩展编程方面,给予的支持比较大。
在模拟场景时,会出现对混合场景的设置和管理,那么就有可能涉及到用多个线程组的情况,如下图所示。
文章图片
那么在多个线程组之间如果需要传递参数,怎么办呢?如果按照以往在单个线程组内运用变量的方式是不可以的。
【#导入MD文档图片#JMeter-多线程组间通信】其实是可以考虑通过属性的方式在线程组间进行传递。属性算是JMeter中一个比较重要的概念。如下图所示,在按照目录/bin下有个文件“jmeter.properties”,这是JMeter中自有属性所在的文件,根据定制化的需要,可以去增加修改其中的配置项。
文章图片
下面以实例来介绍利用属性传递参数。首先介绍下被测系统,被测对象是2个APIs.
1.其中一个API是为了创建一个类别(可以理解为新增记录),方法是post,URL是 " http://127.0.0.1:5000/api/Category, Body data 是
{
"name":"${__UUID}"
}
HTTP请求响应详情如下,其中id值为递增的。
{
"status": "success",
"data": {
"name": "e14bc1e5-80cc-414e-a7eb-d1712ad45637",
"id": 152
}
}
- 其中一个API是为了更新上面创建的category的name,那么详情如下图,其中id是传入上个线程组内的HTTP响应的id值。
文章图片
文章图片
其中第1,5步上面已经介绍过了。第2步细节如下图,是为了获得新建category的id值。
文章图片
第3步是为了将获取的变量生成property,用的元件是JSR223 PostProcessor,细节如下图所示。其用的是groovy语言,主要涉及到的函数是JMeter自带的__setProperty。其最后生成的property的key为categoryId1
文章图片
第4步是为了接收到上一步生成的property,用到的主要的方法是props.get方法,具体如下图所示,最后是将property的值,赋值给变量categoryId
文章图片
后面的步骤,就可以去调用此生成的变量了。传递参数(值)结束。
注:
1> 文中涉及到JSR223的部分都可以换成Beanshell,但是我推荐大家使用JSR223,因为Groovy的性能要比Beanshell好很多。
2> 文中生成的属性,假如在debug状态下,如果此JMeter进程一直在,那么属性值也会一直在,即使关闭了当前脚本,又打开新脚本,也是如此。
推荐阅读
- 一步一步搭建Svn服务之TortoiseSVN日常操作
- 千亿级模型在离线一致性保障方案详解
- 分布式技术专题分布式消息队列-RocketMQ延迟消息实现原理和源码分析
- WEB安全新玩法 [4] 防护邮箱密码重置漏洞
- 你想学的黑客(攻击)技术全在这了,一篇打包带走!
- SpringCloud技术专题「Feign」从源码层面让你认识Feign工作流程和运作机制
- 靶机DC-1
- WEB安全新玩法 [11] 防范批量注册
- 测试开发之系统篇-Docker常用操作