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

时间:2015-04-16 22:30:41

标签: linux apache jmeter

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

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

我的测试计划如下所示:

 
+ 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的线程组,你可以想象......我是否在正确的位置配置了While循环?

- 首先尝试 -

当控制器: 1时,我为每个相应的线程设置了以下条件:

   Condition (function or variable) = "${__P(server1ThreadActive)}" == "false"

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

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

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

- 第二次尝试 -

当控制器: 第二时我为每个相应的线程设置了以下条件:

   Condition (function or variable) = ${__P(server1ThreadActive)}

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

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

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

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

有人能告诉我这出错的地方吗? 任何想法或建议将不胜感激!

先谢谢,
马特

1 个答案:

答案 0 :(得分:2)

请在此处查看更多详情。

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


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

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

使用属性:

拥有以下属性&属性的属性文件value(仅执行线程组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}

直接在测试中访问它