JMETER:如何计算两个HTTP Sampler的响应(已用)时间值之间的差异

时间:2014-07-16 08:11:13

标签: jmeter

  • 我已通过JMETER发送了两个HTTP请求。
  • 测量单个经过时间或响应时间值。
  • 计算两个值之间的差异。

例如,

  • HTTP Sampler - 1:测量时间:1000 ms
  • HTTP Sampler - 2:测量时间:800 ms
  • 计算差异:1000 - 800 = 200 ms

这两个采样器必须多次执行。

我想的解决方案是使用Sampler Data Writer监听器,以便在csv文件中写入经过时间的值。 最后使用VBA脚本来计算差异。

如果有针对这种情况的替代解决方案,请告诉我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Beanshell Post Processors动态计算差异

使用以下代码添加Beanshell Post Processor元素作为HTTP Sampler 1的子元素:

long request1 = prev.getTime(); // get HTTP Sampler 1 execution time
vars.put("sampler1", String.valueOf(request1)); // store execution time to "sampler1" variable

对HTTP Sampler 2执行相同操作。在这种情况下,代码应如下所示:

long request2 = prev.getTime(); // get HTTP Sampler 2 execution time
long request1 = Long.parseLong(vars.get("sampler1")); // get HTTP Sampler 1 execution time from variable
long delta = (request1 - request2); // calculate difference
log.info("Time difference is: " + delta + " ms"); // print difference to jmeter.log file

在jmeter.log文件中,您应该看到类似

的内容
2014/07/16 14:00:02 INFO  - jmeter.util.BeanShellTestElement: Time difference is: 200 ms 

同样,您可以将其存储到文件

FileOutputStream out = new FileOutputStream("delta.csv", true);
out.write((String.valueOf(delta)).getBytes("UTF-8"));
out.write(System.getProperty("line.separator").getBytes("UTF-8"));
out.flush();
out.close();

或计算所有请求的平均差异。

有关Apache JMeter中Beanshell脚本的全面信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。