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

Posted

tags:

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

    需要控制线程组内的操作在满足某一条件才执行,那么就需要使用if或者while;

    要使用if或者while都需要一个变量,而这个变量要在两个或多个线程组内使用,那么if使用变量就需要是全局变量,while使用的变量就需要是局部变量;

    同一个线程组的请求是按照顺序执行,不同线程组顺序不固定,想让线程组允许执行,需要勾选一个选项。

    第一顺序执行线程组---------------------

首先使用BeanShell Sampler给全局变量赋予初始值$__setProperty(newswitch,1,);

然后使用If Controller作为操作的父类,条件为"$__P(newswitch,)"=="1";

最后使用BeanShell Sampler(父类线程组)给全局变量赋值$__setProperty(newswitch,2,);,下一个顺序执行线程组的If  Controller条件;

    第二或N顺序执行线程组---------------------

1.使用BeanShell Sampler(父类线程组),定义一个局部变量vars.put("whileswitch","1");

2.使用While Controller作为If Controller的父类,条件为$__javascript("$__P(whileswitch,)"!="0") ;

3.使用If Controller作为操作的父类,条件为"$__P(newswitch,)"=="2";(值根据第几个顺序而变化,第二个是2,第三个是3。。。)

4.在If Controller下建立子类BeanShell Sampler给局部变量赋值vars.put("whileswitch","0");,结束While Controller;给全局变量赋值$__setProperty(newswitch,3,);,下一个顺序执行线程组的If  Controller条件,如果没有下一个顺序执行线程组给全局变量赋予初始值$__setProperty(newswitch,1,);。

参考技术A 貌似我以前都回答过了,不知道是不是同一人问的。

其实这样的问题你尝试下就知道了,不要动不动就提问。Jmeter 你如果设置的是多个线程组的情况,直接运行的话,本身就并发执行的。本回答被提问者和网友采纳
参考技术B 我尝试了 一个测试计划中多个线程组同时执行 只执行了第一个线程组中的数据

Jmeter - 线程组详解

参考技术A 线程组相当于有多个用户,同时去执行相同的任务。每个线程之间都互不影响。即:一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

1、分别添加 线程组、setUp Thread Group、tearDown Thread ,启动执行,执行顺序为:setUp Thread Group--->线程组---> tearDown Thread

2、当有多个线程组时,在测试计划中,如果勾选 独立运行每个线程组 后,就按顺序执行。反之,执行顺序不固定或交叉执行。

3、线程组详细说明如下:

在取样器错误后要执行的动作:
继续:忽略错误,继续执行
Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
停止线程:当前线程停止执行,不影响其他线程正常执行。
停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止
Stop Test Now:整个测试会立即停止执行,当前正在执行的取样器如果可能会被中断。

线程属性:
线程数:当前线程数量,可以简单的理解为用户数量。
Ramp-Up Period:线程启动的时间,上图的线程配置,15个线程,1秒启动时间,每个线程执行1次循环。那么每秒会启动15个线程,每次循环执行15个请求。
循环次数:勾选“永远”选项,则线程组一直循环。否则,以后面所填数量为准。
Delay Thread creation until needed: 默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。
调度器:勾选此选项,才可修改下面的调度器配置。

调度器配置:
启动时间:控制测试在某个时间点启动。这个配置会被“启动延迟(秒)”配置覆盖。
结束时间:控制测试执行的结束时间。这个配置会被“持续时间(秒)”配置覆盖。
持续时间(秒):测试持续的时间。如果启动时间+持续时间>结束时间,那么此设置覆盖结束时间。
启动延迟(秒):点击执行按钮后,仅初始化场景,不运行线程,等待延迟到时后开始运行线程。如果开始点击执行按钮的时间+延迟时间>启动时间,则此设置覆盖开始时间。

以上是关于jmeter如何并行执行多个线程组的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在Jmeter的单个测试计划中并行运行两个线程组吗?

Jmeter - 线程组详解

我们可以在 Jmeter 的一个测试计划中并行运行两个线程组吗?

并行执行串行执行和并发执行

Jmeter应该同时执行查询,但同时查询不应该在并行线程中重复

jmeter并发数和线程数的区别