概要:Jmeter的响应时间可以通过结果数和聚合报告查看,但是如果想知道某个sample的请求的响应时间和响应的具体数据 并打印出来如何实现呢?测试过程中会有这样的需求,大量并发的时候需要打印响应内容比如sendID ,响应时间,这样就可以很直观的看到某个订单的响应时间是多少,方便排查性能问题。
在某个接口下新增一个后置处理器。
jmeter默认会初始化SampleResult类,jmeter里面的类大部分都是从Object 扩展而来。
在beanShell脚本编辑器中,直接通过prev.getUrlAsString();获取接口的url路径。
prev代表当前的接口。
1.获取响应码
System.out.println(prev.getResponseCode());//获取响应码
2.获取响应的具体数据 response Data
System.out.println(prev.getResponseDataAsString());//获取响应数据
3.获取连接时间
System.out.println(prev.getConnectTime().toString()); //获取连接时间
5.如何获取LoadTime 即响应时间?
查看官方接口 里面的方法 发现没有直接获取LoadTime 的方法
SampleResult (Apache JMeter dist API)https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html但是可以通过获取开始时间和结束时间并相减获取
//get startTime 和 endTime 都是Long类型 具体看上述连接的方法
long ResponseTime = prev.getEndTime() – prev.getStartTime();
System.out.println(“33==”+ ResponseTime);//将结果打印到控制台
另外从结果树,sampler result 可以看到 Loadtime Latency 这两个时间,我们平时说的响应时间
Response time = sample time= Load time = Elapsed time >= latency
即:响应时间=采样时间=加载时间=耗时时间 是发送请求的时间和完全接收的时间之间的差值,
所以响应时间>=延迟时间即Latency 响应数据越多,响应时间和延迟之间的差异越大。