Jmeter书中不会教你的(93)——获取请求响应时间、请求开始时间、请求结束时间

本文介绍了如何在Apache JMeter中使用SampleResult类获取并记录请求的连接时间、响应时间、延迟和时间差,以辅助性能测试和找出耗时最长的部分。

在做一个请求时,想要实时查看这个请求的连接时间,请求开始和结束时间,响应时间,从而在性能测试中判断哪段耗时是最长的。

比如访问百度

想在日志中输出划线部分的时间,一定要去看jmeter的api文档,

Overview (Apache JMeter dist API)其中我目前用的最多的就是org.apache.jmeter.samplers这个包下SampleResult类

这个类下有很多方法可以对我们的请求进行操作

今天需要用到的就是其中几个方法,在请求下增加一个beanshell postprocessor

1.获取请求响应时间,即对应的Load Time

log.info(prev.getTime().toString());

2.获取请求连接时间,即对应的Connect Time

log.info(prev.getConnectTime().toString())

3.获取延迟,即Latency

log.info(prev.getLatency().toString());

4.获取请求的开始时间和结束时间,并求时间差,结果实际和Load Time一致

log.info(prev.getStartTime().toString());
log.info(prev.getEndTime().toString());
rst=prev.getEndTime()-prev.getStartTime();
log.info("时间差:"+rst);


### 如何在 JMeter 中提取或获取 HTTP 请求参数 在 JMeter 中,可以通过多种方式来提取或获取 HTTP 请求参数。以下是几种常见的方法及其具体实现: #### 使用 BeanShell PostProcessor 提取请求参数 通过 `BeanShellPostProcessor` 脚本可以直接访问当前请求的参数,并将其存储为变量以便后续使用。 ```java import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; // 获取当前请求对象 HTTPSamplerBase sampler = (HTTPSamplerBase) ctx.getCurrentSampler(); // 遍历所有请求参数 for (int i = 0; i < sampler.getArguments().getArgumentCount(); i++) { String paramName = sampler.getArguments().getArgument(i).getName(); String paramValue = sampler.getArguments().getArgument(i).getValue(); // 打印日志用于调试 log.info("Parameter Name: " + paramName); log.info("Parameter Value: " + paramValue); // 如果需要特定参数值,可以按条件保存 if ("specificParam".equals(paramName)) { vars.put("extractedParam", paramValue); // 存储为局部变量 props.put("globalExtractedParam", paramValue); // 存储为全局变量 } } ``` 此脚本会遍历所有的请求参数并将它们打印到日志中[^1]。对于目标参数,还可以通过 `vars.put()` 或 `props.put()` 来定义局部或全局变量以供后续使用。 --- #### 利用 Regular Expression Extractor 提取响应中的参数 当某些请求参数来源于前一个接口的响应时,可以借助 **Regular Expression Extractor** 进行提取。例如,在 HTML 响应体中有如下结构 `<input type="hidden" name="csrf_token" value="abc123">` 的情况: - 正则表达式配置: - Reference Name: `csrfToken` - Regular Expression: `name="csrf_token"\svalue="(.+?)"` - Template: `$1$` - Match No.: `1` 这样就可以将匹配的结果存入名为 `csrfToken` 的变量中[^4]。 --- #### 使用 JSON Extractor 处理 JSON 格式的请求参数 如果请求参数是以 JSON 形式传递,则推荐使用 **JSON Extractor** 插件来进行解析。假设服务器返回了一个包含 token 的 JSON 数据 `{ "auth": {"token":"xyz789"} }`: - JSON Path 表达式:`$.auth.token` - Variable Names: `authToken` 执行后即可获得名为 `${authToken}` 的变量,其值即为 `"xyz789"`[^5]。 --- #### JDBC Request 方式间接获取动态参数 有时还需要从外部资源比如数据库读取必要的请求参数。此时可通过添加 **JDBC Request** 实现这一需求。步骤包括但不限于导入合适的驱动程序至 lib 文件夹以及正确填写 Database URL 和 SQL 查询语句等内容[^3]。 --- ### 总结 以上介绍了四种主要途径帮助你在 JMeter 测试框架里有效捕获所需 HTTP 请求参数的方法——无论是直接操作还是基于关联逻辑处理均有所涉及。每种技术都有各自适用场景,请依据实际项目状况灵活选用最恰当的一种或多组合运用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

agrapea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值