You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter如何验证并行HTTP请求仅1个成功其余9个失败?

验证并行请求的成功计数是否恰好为1

方法一:断言+后置处理器统计验证

  • 给目标HTTP请求添加Response Assertion,配置请求成功的判断条件(比如响应码为201,或响应体包含指定成功标识)。
  • 给同一请求添加JSR223 PostProcessor,用脚本累计成功次数:
    def successCount = vars.getObject("successCount") ?: 0
    if (prev.isSuccessful()) {
        successCount++
        vars.putObject("successCount", successCount)
    }
    
  • 在测试计划末尾添加JSR223 Assertion,验证最终计数:
    def finalCount = vars.getObject("successCount") ?: 0
    if (finalCount != 1) {
        AssertionResult.setFailure(true)
        AssertionResult.setFailureMessage("预期成功计数为1,实际为${finalCount}")
    }
    

方法二:汇总报告+监听器验证

  • 给测试计划添加Summary Report,确保目标请求会在报告中单独显示。
  • 添加JSR223 Listener,测试结束后读取汇总数据验证:
    def targetRequestName = "你的目标请求名称"
    def stats = ctx.getResultCollector("Summary Report").getSampleResults().find { it.getSampleLabel() == targetRequestName }
    if (stats) {
        def successCount = stats.getSuccessfulSamples()
        if (successCount != 1) {
            log.error("预期成功计数为1,实际为${successCount}")
            ctx.getEngine().stopTest()
        }
    }
    

方法三:事务控制器聚合验证

  • 将目标HTTP请求放入Transaction Controller(勾选「Generate parent sample」选项)。
  • 给事务控制器添加JSR223 Assertion,统计子请求的成功次数:
    def successCount = 0
    prev.getSubResults().each { subResult ->
        if (subResult.isSuccessful()) {
            successCount++
        }
    }
    if (successCount != 1) {
        AssertionResult.setFailure(true)
        AssertionResult.setFailureMessage("预期成功计数为1,实际为${successCount}")
    }
    

内容的提问来源于stack exchange,提问作者Vel Ganesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:56:01