如何计算JMeter中两个HTTP采样器之间的经过时间

时间:2016-06-26 20:32:00

标签: jmeter

我尝试按如下方式计算经过时间。我在Beanshell Post Processor中添加了类似这样的代码(由StackOverflow中的另一个线程提供)。

对于sampler1

 long request1 = prev.getTime();
    vars.put("sampler1", String.valueOf(request1));

在采样器2中我添加了

long request2 = prev.getTime();
vars.put("sampler2", String.valueOf(request2));
long request1 = Long.parseLong(vars.get("sampler1")); 
long request2 = Long.parseLong(vars.get("sampler2"));
long delta = (request1 - request2); // calculate difference
log.info("Time difference is: " + delta + " ms");

在.csv文件中捕获相同的增量,如下所示。

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();

我确实在 CSV文件中获取单行中的值。

但我正在寻找一种方法来使用样本变量捕获这些值,并将其映射到我正在另一个CSV文件中捕获的其他样本变量。

我很感激,如果有人能提供这样做的方法。

1 个答案:

答案 0 :(得分:3)

不使用Beanshell将变量写入另一个CSV文件,而是转而使用Sampler Variables属性。

  1. 将下一行添加到第二个PostProcessor的末尾:

    <html>
    {% if myname = = name %}
    <input type="text" value="name" disable</input>
    {%endif%}
    </html>
    
  2. 将以下行添加到 user.properties 文件(位于JMeter的“bin”文件夹中)

    vars.put("delta", String.valueOf(delta));
    
  3. 在下一次JMeter重启时,您将在.jtl结果文件中看到一个具有“delta”变量值的新列。

    设置Sample Variables属性的另一种方法是通过-J命令行参数传递它:

    sample_variables=delta
    

    有关使用,设置和覆盖此JMeter和其他JMeter属性的更多信息,请参阅Apache JMeter Properties Customization Guide

    你也可以使用Flexible File Writer(你仍然需要样本变量)。