在测试计划中执行特定的 JMeter 线程组

Mat*_*att 5 linux apache jmeter

我已经阅读了与我的问题相同的类似帖子,但没有足够的细节让我弄清楚。所以我想知道是否有人可以纠正我做错了什么。正如问题所述,我想使用 CLI 从测试计划运行单个线程组。

所以我的测试计划包含 4 个线程组。除了每个线程组中的 Cookie 管理器为特定 Cookie 包含不同的值之外,每个线程组都完全相同。因此,当我从命令行运行时,我想告诉 JMeter 只执行线程组 1 或 2 或 3 等......到目前为止我读到的是你可以使用一个 While 控制器和一个变量来完成这个,但我可以似乎无法让它发挥作用。

我的测试计划如下所示:

 
+ 测试计划 - 登录
   + 线程组 - 服务器 1 登录
       - 虽然控制器(*带有变量“server1ThreadActive”)
       - HTTP 请求默认值
       - 饼干管理器
       + HTTP 请求 - 加载主页
       + HTTP 请求 - 加载登录页面
       + HTTP 请求 - 登录表单
       + HTTP 请求 - 做点什么
       + HTTP 请求 - 做其他事情
       + HTTP 请求 - 注销
   + 线程组 - 服务器 2 登录
       - 虽然控制器(*带有变量“server2ThreadActive”)
       - HTTP 请求默认值
       - 饼干管理器
       + HTTP 请求 - 加载主页
       + HTTP 请求 - 加载登录页面
       + HTTP 请求 - 登录表单
       + HTTP 请求 - 做点什么
       + HTTP 请求 - 做其他事情
       + HTTP 请求 - 注销

所以上面的测试计划还有 2 个完全相同的线程组,用于服务器 3 和 4,正如您想象的那样......我是否在正确的位置配置了 While 循环?

- 第一次尝试 -

While Controllers: 1st 我为每个各自的线程在下面设置了条件:

   条件(函数或变量) = "${__P(server1ThreadActive)}" == "false"

命令行:然后尝试仅执行服务器 2 的线程,我将在 CLI 上使用它:

   jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=true

结果:当我只尝试运行 Server 2 线程时,这导致所有 4 个线程都在执行。

--第二次尝试--

While Controllers: 2nd 我为每个各自的线程在下面设置了条件:

   条件(函数或变量)= ${__P(server1ThreadActive)}

命令行:然后尝试只为服务器 2 执行线程,我会在 CLI 上使用它,假设在 while 控制器中没有赋值,它默认为 true,所以我将所有变量设置为 false,除了我要运行的变量:

   jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=false -Jserver3ThreadActive=false -Jserver4ThreadActive=false

结果:当我只尝试运行 Server 2 线程时,这导致所有 4 个线程都在执行。

我还尝试了其他一些事情,但我假设它们也是错误的,因为我得到了相同的结果。我还尝试添加一个用户定义的变量部分并创建 4 个变量,但也无法弄清楚......我什至尝试创建一个名为“Server_Login.properties”的文件并插入这些变量名称,每行一个每个值都设置为 false ,并使用-S选项将其包含在命令行中,但没有这样的运气......

谁能告诉我我哪里出错了?任何想法或建议将不胜感激!

提前致谢,
马特

vin*_*ins 5

请在此处查看更多详细信息。

http://www.testautomationguru.com/jmeter-manage-test-plan/


如果线程用户计数为 0,则 JMeter 根本不会执行线程组。

因此,您可以通过使用线程组 - 用户计数的变量来决定要运行的线程组。

使用属性:

有一个具有以下属性和值的属性文件(仅执行线程组 2)

threadgroup1.users=0
threadgroup2.users=10
threadgroup3.users=0
threadgroup4.users=0
Run Code Online (Sandbox Code Playgroud)

Thread Group- 线程数字段中,使用${__P(threadgroup1.users)}

传递属性文件的命令行选项,

 jmeter -n -t /path/to/test.jmx -l /path/to/log.jtl -p /path/to/file.properties
Run Code Online (Sandbox Code Playgroud)

使用用户定义的变量:

只需创建一个用户定义的变量 & 具有适当的值。

请在测试中直接使用 ${threadgroup1.users}