如何在JMeter中计算API部署请求到完成校验的耗时?
用JMeter计算POST响应到GET返回部署完成的耗时
完全可以用JMeter实现这个需求,具体步骤如下:
记录POST请求的响应时间戳
在提交部署的POST请求后,添加一个JSR223后置处理器,写入代码把POST响应完成的时间戳存入线程变量:vars.put("post_response_timestamp", String.valueOf(System.currentTimeMillis()));轮询GET请求直到部署完成
添加一个While控制器,设置循环条件为${__jexl3("${Completed}" != "true",)}(确保判断的是字符串值,避免类型匹配问题)。控制器内放置:- 校验部署状态的GET请求
- 固定定时器,设置1秒延迟(避免高频请求对API造成不必要的压力)
提取GET响应的完成状态
在GET请求下添加JSON提取器,配置:- 引用名称:
Completed - JSON Path表达式:
$.Completed - 匹配数字:
1(取第一个匹配值)
- 引用名称:
计算并存储耗时
在GET请求的JSR223后置处理器中,写入代码计算从POST响应到当前GET返回true的耗时:if ("true".equals(vars.get("Completed"))) { long postTime = Long.parseLong(vars.get("post_response_timestamp")); long currentTime = System.currentTimeMillis(); long elapsedMs = currentTime - postTime; vars.put("deployment_completion_time", String.valueOf(elapsedMs)); }查看结果
可以通过Debug Sampler输出deployment_completion_time变量,或者在查看结果树中查看该变量的值,也可以将该变量关联到聚合报告等组件进行统计分析。
注意:如果是多线程压测场景,务必使用线程变量vars而非全局属性props,避免不同线程的时间戳互相干扰。
内容的提问来源于stack exchange,提问作者TestingCodes
相关产品推荐
相关产品推荐

