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

Gatling中如何区分2XX与304响应并在测试报告中展示?

Gatling区分2XX与304响应并在报告展示的实现方法

status().saveAs("status") 仅会将当前请求的响应状态码存入虚拟用户的会话上下文,不会修改Gatling默认的请求统计逻辑。Gatling默认将所有2XX、3XX类响应当作成功请求统一聚合统计,不会单独拆分304状态码的统计维度,因此无论是否添加这段配置,默认报告都不会体现两类响应的差异。

可通过以下两种方案实现区分统计:

方案1:按状态码拆分请求分组

Gatling报告会自动按group维度拆分统计请求数、响应时间、成功率等指标,可在状态码校验逻辑中,给304响应和普通2XX响应分别打上不同的分组标记,实现自动拆分统计:

.exec(
  http("target_request")
    .get("/your/resource/path")
    .check(
      status().is((statusCode: Int) => {
        statusCode match {
          // 命中304时,进入304专属统计分组
          case 304 =>
            exec(group("304_NotModified") {
              exec(session => session)
            })
            true
          // 普通2XX响应走默认统计逻辑
          case code if code >= 200 && code < 300 =>
            true
          // 其他状态码判定为请求失败
          case _ => false
        }
      })
    )
)

运行后报告会在请求统计板块单独列出304_NotModified分组的所有指标,和普通2XX请求的指标完全分开。

方案2:注册自定义统计指标

如果不需要拆分请求链路,只想在全局维度统计两类响应的数值,可以在脚本初始化阶段注册自定义指标,请求返回后根据状态码往对应指标写入数据,最终报告会在自定义指标板块展示两类响应的计数、响应时间分布:

import java.util.concurrent.atomic.AtomicInteger
import io.gatling.commons.stats.Histogram

// 脚本全局初始化位置定义指标
val count2xx = new AtomicInteger(0)
val count304 = new AtomicInteger(0)
val respTime2xx = new Histogram("2xx_response_time_ms")
val respTime304 = new Histogram("304_response_time_ms")

// 请求配置中写入统计逻辑
.exec(
  http("target_request")
    .get("/your/resource/path")
    .before(session => session.set("reqStartTime", System.currentTimeMillis()))
    .check(
      status().transform((code, session) => {
        val cost = System.currentTimeMillis() - session("reqStartTime").as[Long]
        code match {
          case 304 =>
            count304.incrementAndGet()
            respTime304.record(cost)
          case c if c >=200 && c <300 =>
            count2xx.incrementAndGet()
            respTime2xx.record(cost)
          case _ =>
        }
        code
      }).in(200 to 299, 304)
    )
)

注意:不要为了区分直接将304判定为请求失败,会拉高全局错误率,干扰正常性能结果判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:03:32