#导入MD文档图片#JMeter-多线程组间通信
Posted SummerStone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#导入MD文档图片#JMeter-多线程组间通信相关的知识,希望对你有一定的参考价值。
JMeter作为一款免费的性能测试工作,越来越受大家的青睐。在模拟业务场景方面,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进程一直在,那么属性值也会一直在,即使关闭了当前脚本,又打开新脚本,也是如此。
以上是关于#导入MD文档图片#JMeter-多线程组间通信的主要内容,如果未能解决你的问题,请参考以下文章