用于启用测试持续时间的 JMeter 用户定义变量
JMeter User Defined Variable for enabling Test Duration
我正在尝试参数化 JMeter 测试,以便我可以 运行 使用相同的测试计划进行负载测试、压力测试以及浸泡负载测试。
为此,我将以下内容定义为用户定义变量(测试计划 -> 添加 -> 配置元素 -> 用户定义变量)
numberOfThreads=${__P(numberOfThreads,1)}
rampUp=${__P(rampUp,1)}
loopCount=${__P(loopCount,1)}
schedulerEnabled=${__P(schedulerEnabled,false)}
schedulerDuration=${__P(schedulerDuration,120)}
现在,在 ThreadGroup 定义中,我将这些变量用作
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test123" enabled="true">
<stringProp name="TestPlan.comments">Test for the endpoint GET /test123</stringProp>
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<stringProp name="LoopController.loops">${loopCount}</stringProp>
</elementProp>
<stringProp name="ThreadGroup.num_threads">${numberOfThreads}</stringProp>
<stringProp name="ThreadGroup.ramp_time">${rampUp}</stringProp>
<boolProp name="ThreadGroup.scheduler">{schedulerEnabled}</boolProp>
<stringProp name="ThreadGroup.duration">${schedulerDuration}</stringProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
</ThreadGroup>
但是当我运行相同并传入值时
numberOfThreads=50
rampUp=10
loopCount=-1
schedulerEnabled=true
schedulerDuration=30
(使用 jmeter-maven-plugin)
第一个线程组不断创建无限数量的线程,而不是在 30 秒后关闭线程组。
PS: 30就是一个例子。执行浸泡负载测试时,我将设置一个更高的值。
PS:我注意到 LoopController.continue_forever 设置为 'false' 对于循环计数我是否选中“无限”或提供值 1 并不重要。当在 UI ,我勾选“无限”,LoopController.loops的值设置为-1。
- jmeter-maven-插件:2.7.0
- JMeter版本:5.1.1
我不认为这是 enable/disable 线程生命周期设置的正确方法:
<boolProp name="ThreadGroup.scheduler">{schedulerEnabled}</boolProp>
与其尝试 enable/disable 线程生命周期设置,不如使用此 schedulerDuration
设置本身,例如,如果您计划 运行 固定数量的循环 - 设置持续时间非常大,maximum value is 9223372036854775807
也应该可以使用 Runtime Controller
如果 enable/disable 调度程序的能力是您 真正 需要的,您需要事先在 .jmx 脚本中以某种方式修改它,即使用 sed editor. Also Taurus framework has possibility to amend all the properties of all the test elements 使用简单的 YAML 语法
我正在尝试参数化 JMeter 测试,以便我可以 运行 使用相同的测试计划进行负载测试、压力测试以及浸泡负载测试。
为此,我将以下内容定义为用户定义变量(测试计划 -> 添加 -> 配置元素 -> 用户定义变量)
numberOfThreads=${__P(numberOfThreads,1)}
rampUp=${__P(rampUp,1)}
loopCount=${__P(loopCount,1)}
schedulerEnabled=${__P(schedulerEnabled,false)}
schedulerDuration=${__P(schedulerDuration,120)}
现在,在 ThreadGroup 定义中,我将这些变量用作
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test123" enabled="true">
<stringProp name="TestPlan.comments">Test for the endpoint GET /test123</stringProp>
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<stringProp name="LoopController.loops">${loopCount}</stringProp>
</elementProp>
<stringProp name="ThreadGroup.num_threads">${numberOfThreads}</stringProp>
<stringProp name="ThreadGroup.ramp_time">${rampUp}</stringProp>
<boolProp name="ThreadGroup.scheduler">{schedulerEnabled}</boolProp>
<stringProp name="ThreadGroup.duration">${schedulerDuration}</stringProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
</ThreadGroup>
但是当我运行相同并传入值时
numberOfThreads=50
rampUp=10
loopCount=-1
schedulerEnabled=true
schedulerDuration=30
(使用 jmeter-maven-plugin) 第一个线程组不断创建无限数量的线程,而不是在 30 秒后关闭线程组。
PS: 30就是一个例子。执行浸泡负载测试时,我将设置一个更高的值。
PS:我注意到 LoopController.continue_forever 设置为 'false' 对于循环计数我是否选中“无限”或提供值 1 并不重要。当在 UI ,我勾选“无限”,LoopController.loops的值设置为-1。
- jmeter-maven-插件:2.7.0
- JMeter版本:5.1.1
我不认为这是 enable/disable 线程生命周期设置的正确方法:
<boolProp name="ThreadGroup.scheduler">{schedulerEnabled}</boolProp>
与其尝试 enable/disable 线程生命周期设置,不如使用此 schedulerDuration
设置本身,例如,如果您计划 运行 固定数量的循环 - 设置持续时间非常大,maximum value is 9223372036854775807
也应该可以使用 Runtime Controller
如果 enable/disable 调度程序的能力是您 真正 需要的,您需要事先在 .jmx 脚本中以某种方式修改它,即使用 sed editor. Also Taurus framework has possibility to amend all the properties of all the test elements 使用简单的 YAML 语法