在测试计划中执行特定的 JMeter 线程组
Executing Specific JMeter Thread Groups in a Test Plan
我已经阅读了与我有相同问题的类似帖子,但没有足够的细节让我弄明白。所以我想知道是否有人可以纠正我做错的事情。正如问题所述,我想使用 CLI 从测试计划中 运行 一个线程组。
所以我的测试计划包含 4 个线程组。除了每个线程组中的 Cookie 管理器包含特定 Cookie 的不同值外,每个线程组都完全相同。因此,当我从命令行 运行 时,我想告诉 JMeter 仅执行线程组 1 或 2 或 3 等...到目前为止我读到的是您可以使用 While 控制器和变量来完成此操作,但我似乎无法让它工作。
我的测试计划是这样的:
+ Test Plan - Logging-In
+ Thread Group - Server 1 Login
- While Controller (*with variable "server1ThreadActive")
- HTTP Request Defaults
- Cookie Manager
+ HTTP Request - Load Homepage
+ HTTP Request - Load Login Page
+ HTTP Request - Login Form
+ HTTP Request - Do something
+ HTTP Request - Do something else
+ HTTP Request - Logout
+ Thread Group - Server 2 Login
- While Controller (*with variable "server2ThreadActive")
- HTTP Request Defaults
- Cookie Manager
+ HTTP Request - Load Homepage
+ HTTP Request - Load Login Page
+ HTTP Request - Login Form
+ HTTP Request - Do something
+ HTTP Request - Do something else
+ HTTP Request - Logout
所以上面的测试计划为服务器 3 和服务器 4 增加了 2 个完全相同的线程组,正如您想象的那样...我是否在正确的位置配置了 While 循环?
--第一次尝试--
而控制器: 1st 我为每个线程设置了以下条件:
Condition (function or variable) = "${__P(server1ThreadActive)}" == "false"
命令行: 然后尝试只执行服务器 2 的线程,我会在 CLI 上使用它:
jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=true
结果: 当我只尝试 运行 服务器 2 线程时,这导致所有 4 个线程都在执行。
--第二次尝试--
而控制器: 第二,我为每个线程设置了以下条件:
Condition (function or variable) = ${__P(server1ThreadActive)}
命令行: 然后尝试只执行服务器 2 的线程我会在 CLI 上使用它,假设没有控制器中的值赋值默认为 true,所以我将所有 vars 设置为 false,除了我想要的 运行:
jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=false -Jserver3ThreadActive=false -Jserver4ThreadActive=false
结果: 当我只尝试 运行 服务器 2 线程时,这导致所有 4 个线程都在执行。
我还尝试了其他一些方法,但我认为它们也是错误的,因为我得到了相同的结果。我也曾尝试添加一个用户定义的变量部分并创建 4 个变量,但也无法弄清楚......我什至尝试创建一个名为 "Server_Login.properties" 的文件并插入这些变量名称,每行一个每个值都设置为 false,并使用 -S 选项将其包含在命令行中,但没有这样的运气...
谁能告诉我哪里出了问题?
任何想法或建议将不胜感激!
提前致谢,
马特
请点击这里了解更多详情。
http://www.testautomationguru.com/jmeter-manage-test-plan/
如果线程用户数为0,JMeter根本不会执行线程组。
因此,您可以通过使用线程组变量 - 用户数来决定您想要 运行 的线程组。
使用属性:
具有以下 属性 & 值的属性文件(仅执行线程组 2)
threadgroup1.users=0
threadgroup2.users=10
threadgroup3.users=0
threadgroup4.users=0
在 Thread Group
- 线程数字段中,使用 ${__P(threadgroup1.users)}
传递属性文件的命令行选项,
jmeter -n -t /path/to/test.jmx -l /path/to/log.jtl -p /path/to/file.properties
使用用户定义的变量:
只需创建一个具有适当值的用户定义变量。
测试中请直接使用${threadgroup1.users}
访问
我已经阅读了与我有相同问题的类似帖子,但没有足够的细节让我弄明白。所以我想知道是否有人可以纠正我做错的事情。正如问题所述,我想使用 CLI 从测试计划中 运行 一个线程组。
所以我的测试计划包含 4 个线程组。除了每个线程组中的 Cookie 管理器包含特定 Cookie 的不同值外,每个线程组都完全相同。因此,当我从命令行 运行 时,我想告诉 JMeter 仅执行线程组 1 或 2 或 3 等...到目前为止我读到的是您可以使用 While 控制器和变量来完成此操作,但我似乎无法让它工作。
我的测试计划是这样的:
+ Test Plan - Logging-In + Thread Group - Server 1 Login - While Controller (*with variable "server1ThreadActive") - HTTP Request Defaults - Cookie Manager + HTTP Request - Load Homepage + HTTP Request - Load Login Page + HTTP Request - Login Form + HTTP Request - Do something + HTTP Request - Do something else + HTTP Request - Logout + Thread Group - Server 2 Login - While Controller (*with variable "server2ThreadActive") - HTTP Request Defaults - Cookie Manager + HTTP Request - Load Homepage + HTTP Request - Load Login Page + HTTP Request - Login Form + HTTP Request - Do something + HTTP Request - Do something else + HTTP Request - Logout
所以上面的测试计划为服务器 3 和服务器 4 增加了 2 个完全相同的线程组,正如您想象的那样...我是否在正确的位置配置了 While 循环?
--第一次尝试--
而控制器: 1st 我为每个线程设置了以下条件:
Condition (function or variable) = "${__P(server1ThreadActive)}" == "false"
命令行: 然后尝试只执行服务器 2 的线程,我会在 CLI 上使用它:
jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=true
结果: 当我只尝试 运行 服务器 2 线程时,这导致所有 4 个线程都在执行。
--第二次尝试--
而控制器: 第二,我为每个线程设置了以下条件:
Condition (function or variable) = ${__P(server1ThreadActive)}
命令行: 然后尝试只执行服务器 2 的线程我会在 CLI 上使用它,假设没有控制器中的值赋值默认为 true,所以我将所有 vars 设置为 false,除了我想要的 运行:
jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=false -Jserver3ThreadActive=false -Jserver4ThreadActive=false
结果: 当我只尝试 运行 服务器 2 线程时,这导致所有 4 个线程都在执行。
我还尝试了其他一些方法,但我认为它们也是错误的,因为我得到了相同的结果。我也曾尝试添加一个用户定义的变量部分并创建 4 个变量,但也无法弄清楚......我什至尝试创建一个名为 "Server_Login.properties" 的文件并插入这些变量名称,每行一个每个值都设置为 false,并使用 -S 选项将其包含在命令行中,但没有这样的运气...
谁能告诉我哪里出了问题? 任何想法或建议将不胜感激!
提前致谢,
马特
请点击这里了解更多详情。
http://www.testautomationguru.com/jmeter-manage-test-plan/
如果线程用户数为0,JMeter根本不会执行线程组。
因此,您可以通过使用线程组变量 - 用户数来决定您想要 运行 的线程组。
使用属性:
具有以下 属性 & 值的属性文件(仅执行线程组 2)
threadgroup1.users=0
threadgroup2.users=10
threadgroup3.users=0
threadgroup4.users=0
在 Thread Group
- 线程数字段中,使用 ${__P(threadgroup1.users)}
传递属性文件的命令行选项,
jmeter -n -t /path/to/test.jmx -l /path/to/log.jtl -p /path/to/file.properties
使用用户定义的变量:
只需创建一个具有适当值的用户定义变量。
测试中请直接使用${threadgroup1.users}