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
相关产品推荐
相关产品推荐

