jmeter两个线程组怎么关联?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter两个线程组怎么关联?相关的知识,希望对你有一定的参考价值。

在JMeter中,线程组是独立的,不能直接在两个不同的线程组之间共享数据或通信。但是,你可以通过以下方法将两个线程组关联起来:

    使用JMeter内置的Post-Processor

    可以使用JMeter内置的Post-Processor(如Regular Expression Extractor)从一个线程组中提取数据,然后将其作为变量存储。在第二个线程组中,使用该变量来访问以前线程组中提取的数据。这种方法的缺点是它需要手动设置Post-Processor,并且需要手动设置变量名和正则表达式。

    使用JMeter插件

    有一些JMeter插件可以将多个线程组连接起来。例如Inter-Thread Communication Plugin可以用于线程组之间的通信。这些插件可以将数据共享在线程组之间,使线程组之间的通信更加简单。

    使用共享模式

    在JMeter中,可以使用共享模式将一个或多个变量共享在多个线程组之间。在这种情况下,您可以使用JMeter内置的变量存储元件(例如User Parameters或CSV Data Set Config)来定义变量,然后在需要使用它们的线程组中引用它们。这种方法的优点是它非常简单,并且可以用于所有变量,但它有一个缺点,即在某些情况下,可能会导致性能下降。

参考技术A

在JMeter中,不同的线程组是相互独立的,它们之间默认是没有关联的。但是,我们可以通过使用JMeter提供的一些组件和方法,来实现不同线程组之间的关联。

以下是一些实现线程组关联的方法:

    通过共享资源实现线程组关联:可以通过共享资源的方式来实现线程组之间的关联。比如,可以使用JMeter提供的User Parameters PreProcessor组件来设置共享资源,然后在其他线程组中使用该资源。

    通过使用同步控制器实现线程组关联:可以使用JMeter提供的同步控制器(Sync Controller)来实现不同线程组之间的同步。同步控制器可以确保在多个线程组中同时执行的请求在同一时间开始。

    通过使用Inter-Thread Communication实现线程组关联:可以使用JMeter提供的Inter-Thread Communication(线程间通信)组件来实现不同线程组之间的通信。Inter-Thread Communication可以在多个线程组之间传递数据和消息。

    以上是实现线程组关联的一些方法,具体方法的选择需要根据测试需求和场景来确定。

史上最简单的 Jmeter 跨线程组取参数值的两种办法 (不写代码)

如果你工作中已经在用 jmeter 做接口测试,或性能测试了,你可能会遇到一个麻烦,哪就是 jmeter 的变量值不能跨线程组传递。测试面试宝典

 

看,官方就已经给出了解释。这个不是 jmeter 的缺陷,这是 jmeter 的设计使然的。如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现。但是如果值时动态生成,每循环一次,值就变化一次,那么怎么弄呢?

此时,你可能就会去百度了,对吗?你会发现,很奇怪,机会所有的百度结果都千遍一律的告诉你用 Beanshell***,写上一些不知所云的代码。如果你不懂 Java,你看这着这开始写代码了,而且还写着一些晦涩难懂的东西,你是不是已经开始头痛了。

如果是这样,那你就继续往下看,我来教你两手。两种方法,轻轻松松搞定,你都不用写些哪啥都不懂的代码。


方法一:定义属性法

**思路:**jmeter 中,属性是全局的,是可以动态设置的;而变量是独属于每个线程的

  • 第一步:我们在 jmeter 中,添加两个线程组
  • 第二步:在第一个线程组中,调用一个接口,提取你想要的值存储到一个变量中
  • 第三步:在第一个线程组中,添加一个 Beanshell 后置处理器,然后再打开菜单栏中的 Tools -> 函数助手对话框(Function Helper Dialog),在弹窗中,选择__setProperty()函数,表达式第一个值输入将要存放的属性名称(英文),第二个值输入你在第二步中定义的变量名称,生成函数。复制函数、关闭弹窗,把函数粘贴到 BeanShell 后置处理器的 Script 窗口中。

 

  • 第四步:在第二个线程组中,添加一个‘用户参数’,添加变量(Add variable),设置变量名称,再次打开函数助手,选择__P 函数,在函数的第一个 value 值文本框中输入 ${第三步设置属性名称},生成函数,复制函数,关闭弹窗,把它粘贴到添加的变量的值文本框中

 

  • 第五步:在第二个线程组中,接口参数使用定义的变量 ${变量名称}

这样,就实现了跨线程组之间传递参数。是不是,很简单。It\'s so easy!

**注意:**如果想要设置多个属性,可以在第三步的时候,粘贴多个函数,修改函数中属性名称和变量名称,每个函数之间用英文\';\'分开。


如果这你都觉得难了,不要灰心,继续往下看,我再教你一个更容易理解的方法。

方法二:文件转接法

**思路:**一个线程组运行结果,存储到文件,另一个线程组,通过 CSV 读取文件,然后再提取文件中需要的值,作为变量输入

  • 第一步:在 jmeter 中,添加两个线程组
  • 第二步:在第一个线程组中,调用接口,然后添加监视器-> 保存响应到文件,设置保存文件的路径和文件名前缀测试面试宝典

 

  • 第三步:在第二个线程组中,添加一个 CSV 数据文件设置(csv set data config),文件名设置为第二步中,设置的保存文件路;变量名称自行定义;分隔符设置为\'\\t\'(为什么这个地方要用\\t,留个作业,请大家思考吧)

 

  • 第四步:添加正则表达式提取器(或 JSON 提取器),apply to 选择\'Jmeter variable Name to use\',然后输入 CSV 读取文件设置的变量名;再编写正则提取式

 

第五步:在第二个线程组中,添加接口,使用正则提取器中的变量名称

至此,文件转接法完成。

是不是两种方法都相当简单,都没有去写晦涩难懂的代码!而且都实现了跨线程组传参取值。

以上是关于jmeter两个线程组怎么关联?的主要内容,如果未能解决你的问题,请参考以下文章

JMeter — JMeter中实现跨线程组关联

JMeter接口测试-跨线程组取参数值

jmeter线程组多个请求之间的参数关联

JMeter模拟多用户同时登录,token传递接口关联(同线程组)

jmeter简单的一个压力测试案例 --使用命令 12

jmeter如何并行执行多个线程组