javascript - JMeter 持续时间断言覆盖响应代码

标签 javascript apache jmeter stress-testing http-response-codes

我有一个 JMeter 测试计划,它每秒只执行 1 个 HTTP 请求多次。作为参数,我对测试执行的每个请求都有一定的超时时间。为此,我添加了“Duration Assertion”Sampler/Listener/IDK^^

现在我正在运行测试,并且总是收到响应代码 200,因为请求正常但超过了持续时间断言。这导致在结果树中有成功和失败的请求,但所有请求的状态代码都是 200。问题是在“每秒响应代码”监听器中,它显示所有请求都正常并且响应代码为 200。但由于持续时间断言,它们不正常!

我的问题:我想覆盖那些由于持续时间断言而失败的请求的状态代码。我希望它们在“每秒响应代码”监听器中显示为不同的响应代码(但仅当它们超过 DURATION ASSERTION 时),因为我无法区分它们。 或者有什么方法可以让它们在超过超时时失败?

我真的很抱歉我的英语不好,我希望你能理解我的问题。非常感谢!

最佳答案

我不知道有任何允许更改响应代码的测试元素,但是您可以通过脚本编写如下:

  1. 添加Beanshell Assertion作为您想要失败的请求的子项。 Beanshell 断言应该在持续时间断言之后

  2. 将以下代码添加到“脚本”区域:

    import org.apache.jmeter.assertions.AssertionResult;
    
    AssertionResult[] results = prev.getAssertionResults();
    for (AssertionResult result : results) {
        if (result.isFailure()) {
            if (result.getFailureMessage().contains("The operation lasted too long")) {
                SampleResult.setResponseCode("1000");
            }
        }
    }
    

    Beanshell Assertion Change Response Code

参见 How to Use JMeter Assertions in Three Easy Steps有关通过断言有条件地通过/失败 JMeter 采样器的更多信息。

关于javascript - JMeter 持续时间断言覆盖响应代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644022/

相关文章:

JavaScript 日期和时间选择器

javascript - 使用 ui 路由器公开当前状态名称

ruby-on-rails - 我在哪里可以找到 Apache-Passenger 配置文件?

Apache 将所有网站重定向到一个域,如果有 https

kubernetes - 24 小时性能测试执行突然停止在 AKS 中的 jmeter pod 中运行

javascript - 遍历类并创建 noUisliders

php - 在 Windows 上构建 Laravel 应用程序的 docker 镜像时未找到 000-default.conf

xml - Jmeter 正则表达式提取器在 xml 中查找 ItemID

java - 如何为 Jmeter Junit Sampler 创建更详细的结果消息传递

javascript - 状态更改后保持元素处于焦点