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

JMeter并行控制器使用疑问:迭代总响应时间统计及AJAX请求建议

问题解决方案及AJAX请求测试建议

一、Parallel Controller下迭代总响应时间与单请求时间的统计方案

JMeter的Parallel Controller默认并行执行子请求,Summary Report只会单独统计每个子请求的响应时间,不会自动计算整个迭代的总耗时(从并行请求开始到最后一个请求结束的时间),可以通过以下两种方式解决:

1. 用Transaction Controller包裹Parallel Controller

这是最简单直接的方法:

  • 在Parallel Controller外层添加一个Transaction Controller
  • 按需勾选Transaction Controller的Include duration of timer and pre-post processors选项(需要统计前后置处理器、定时器耗时则勾选,否则不勾选)
  • 运行脚本后,Summary Report中会同时显示:
    • Transaction Controller的条目:对应1次迭代的总响应时间
    • Parallel Controller内每个API请求的条目:各自的总响应时间

2. 自定义变量计算总耗时(进阶方案)

如果需要更灵活的时间统计,可以通过脚本手动计算:

  • 在Parallel Controller前添加JSR223 PreProcessor,写入代码记录开始时间:
    vars.put("startTime", System.currentTimeMillis().toString())
    
  • 在Parallel Controller后添加JSR223 PostProcessor,计算总耗时并生成自定义样本:
    def startTime = Long.parseLong(vars.get("startTime"))
    def totalTime = System.currentTimeMillis() - startTime
    // 生成自定义样本,在监听器中显示总耗时
    SampleResult sampleResult = new SampleResult()
    sampleResult.setSampleLabel("迭代总耗时")
    sampleResult.setSuccessful(true)
    sampleResult.setResponseTime(totalTime)
    sampleResult.setDataType(SampleResult.TEXT)
    sampleResult.setResponseData("总耗时:" + totalTime + "ms", "UTF-8")
    ctx.getPreviousResult().addSubResult(sampleResult)
    
  • 运行后,在View Results Tree或Summary Report中会看到“迭代总耗时”的条目,同时保留每个API请求的单独统计。

二、AJAX请求性能测试的必要配置建议

针对AJAX请求的特性,除基础请求结构外,以下组件是测试中不可或缺的:

1. 核心断言组件

断言用于验证请求的有效性,避免无效请求影响测试结果:

  • Response Assertion:检查响应状态码(如200、201)、响应文本是否包含预期内容(如"success":true)
  • JSON Assertion:针对JSON格式的AJAX响应,直接验证指定JSON路径的取值(如$.code是否等于0)
  • Duration Assertion:设置响应时间阈值(如超过500ms标记为失败),提前发现性能瓶颈

2. 前置处理器与配置元件

  • HTTP Header Manager:必须添加,设置AJAX请求特有的请求头,比如:
    • Content-Type: application/json(若请求体为JSON)
    • X-Requested-With: XMLHttpRequest(标识为AJAX异步请求)
    • 按需添加授权头(如Authorization: Bearer ${token})、用户代理等
  • HTTP Cookie Manager:自动管理会话Cookie,确保AJAX请求携带登录态或会话信息
  • HTTP Request Defaults:设置默认的服务器域名、端口、协议,减少每个请求的重复配置
  • CSV Data Set Config:若需要批量测试不同参数的AJAX请求,通过CSV文件读取测试数据(如不同的查询条件、用户ID)

3. 后置处理器

  • JSON Extractor:从AJAX响应中提取后续请求需要的数据(如返回的订单ID、token),存储为变量供其他请求调用
  • JSR223 PostProcessor:自定义处理响应结果,比如记录关键数据到日志、计算额外性能指标

4. 定时器(模拟真实用户行为)

  • Gaussian Random Timer:生成符合正态分布的随机等待时间(如平均300ms,偏差100ms),模拟用户操作间隔,避免请求过于集中
  • Constant Timer:固定等待时间,适用于有明确操作间隔的场景

5. 补充监听器

除Summary Report外,建议添加:

  • View Results Tree:调试阶段查看请求/响应详情,快速定位问题
  • Aggregate Report:提供更详细的统计数据(如90%响应时间、错误率)
  • Response Time Graph:直观查看响应时间的变化趋势

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:30:31