#导入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
    }
}
  1. 其中一个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-多线程组间通信的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter (二十八)多线程组间变量共享

JMeter 不同线程组间变量传递

jmeter之线程组间变量的传递

#导入MD文档图片#WebSocket的前后端使用

#导入MD文档图片#AWS数据湖

#导入MD文档图片#超好玩的Python3工具--利用OpenCV视频转字符动画