【问题标题】:How to stop a thread group execution if the request from previous thread group fails in JMETER test plan?如果来自先前线程组的请求在 JMETER 测试计划中失败,如何停止线程组执行?
【发布时间】:2023-03-17 19:18:01
【问题描述】:

在 JMeter 测试计划中,我有 4 个线程组,它们将连续执行,但是某些变量从一个线程组到另一个线程组存在依赖性,因此,如果前一个线程组中的任何采样器失败,执行的后续线程组应该停止。

测试计划:

每个线程组都是一个简单的线程组[不是setUp或tearDown线程组]

JMeter中如何控制或决定线程组的执行流程/顺序?

【问题讨论】:

    标签: jmeter flow-control threadgroup


    【解决方案1】:
    1. 最快最简单的方法是在Thread Group级别发生错误时停止测试

    2. 如果您想要更大的灵活性,您可以通过在If Controller 中使用${JMeterThread.last_sample_ok} pre-defined variable 来检查此HTTP Request B2 是否成功,然后您可以添加Flow Control Action 作为此If Controller 的子级并决定你想在那里做什么。

    3. 这与第 2 点非常相似,如果您的线程组 CD 依赖于线程组 B 中的变量,您可以将所有采样器放在 If Controller

    4. 您可以使用__P() function (如${__P(threads,)})设置线程组CD 中的线程数,如果有值,您可以使用__setProperty() function 将此threads 属性设置为0 -具有 0 个线程的线程组没有被“启动”

    【讨论】:

      【解决方案2】:

      您需要将状态(标志)从前一个线程组传递给后续线程组。在执行后续线程组中的请求之前,应评估状态。

      您可以使用 JMeter 属性在线程组之间传递值。

      1. 使用来自 JSR223 元素的 props.put('canContinue',true) 和状态 或
      2. 通过JMeter函数设置属性${__P(canContinue,true)}

      在后续线程组中,您可以使用 If 控制器检查状态

      ${__groovy(!props.get("canContinue"),)}
      

      将流控制操作采样器添加到 If 控制器并设置您想要执行的操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-11
        • 2017-02-23
        • 1970-01-01
        • 1970-01-01
        • 2018-08-21
        相关资源
        最近更新 更多