用于启用测试持续时间的 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。

我不认为这是 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 语法