例如,
这两个采样器必须多次执行。
我想的解决方案是使用Sampler Data Writer监听器,以便在csv文件中写入经过时间的值。 最后使用VBA脚本来计算差异。
如果有针对这种情况的替代解决方案,请告诉我吗?
答案 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指南。