计算值在JMeter报告中显示为响应时间

时间:2017-09-20 15:36:01

标签: jmeter

有一个系统,实体会随着时间的推移改变其状态。

我正在创建一个JMeter测试,测量两个后续状态之间的时间。

似乎没有直接的方法将此信息包含在报告中。

到目前为止,我尝试了BeanShell Sampler接受时间戳作为参数并创建SampleResult

long start = Long.parseLong(vars.get("containerCreatedTime"));
long end = Long.parseLong(vars.get("containerStartedTime"));
SampleResult.createTestSample(start, end);

或者只是计算差值(这个只是将值放在'响应数据' - 不会影响报告):

Long.parseLong(vars.get("containerStartedTime")) - Long.parseLong(vars.get("containerCreatedTime"));

任何这些方法都没有运气。

我基本上需要的是用计算值调整采样器的采样时间(响应时间)。

我是JMeter的新手,工具箱中的工具太少了。谁能提出实现目标的方法?谢谢!

1 个答案:

答案 0 :(得分:1)

因为JMeter 3.1 it is recommended to use Groovy for any form of scripting in JMeter所以考虑切换到JSR223元素。

如果您需要修改Sampler的响应时间,我建议您通过JSR223 PostProcessor

进行操作
  1. 将JSR223 PostProcessor添加为Sampler的子级,您要修改的响应时间
  2. 将以下代码放入“脚本”区域:

    def delta = (vars.get('containerStartedTime') as long) - (vars.get("containerCreatedTime") as long)
    java.lang.reflect.Field elapsed = prev.getClass().getDeclaredField('elapsedTime')
    elapsed.setAccessible(true)
    elapsed.set(prev, delta)
    
  3. 有关在JMeter测试中使用Groovy脚本的更多详细信息,请参阅Apache Groovy - Why and How You Should Use It文章。