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

San*_*ana 1 jmeter

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

对于采样器1

 long request1 = prev.getTime();
    vars.put("sampler1", String.valueOf(request1));
Run Code Online (Sandbox Code Playgroud)

在采样器 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");
Run Code Online (Sandbox Code Playgroud)

并且在 .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();
Run Code Online (Sandbox Code Playgroud)

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

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

如果有人可以提供一种方法来做到这一点,我将不胜感激。

Dmi*_*i T 5

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

  1. 将下一行添加到第二个后处理器的末尾:

    vars.put("delta", String.valueOf(delta));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将以下行添加到user.properties文件(位于 JMeter 的“bin”文件夹中)

    sample_variables=delta
    
    Run Code Online (Sandbox Code Playgroud)

下次 JMeter 重新启动时,您将在 .jtl 结果文件中看到一个具有“delta”变量值的新列。

设置示例变量属性的另一种方法是通过 -J 命令行参数将其传递为:

jmeter -Jsample_variables=delta,somethingelse -n -t testplan.jmx -l results.jtl
Run Code Online (Sandbox Code Playgroud)

有关使用、设置和覆盖此属性及其他 JMeter 属性的更多信息,请参阅Apache JMeter 属性自定义指南。

您还可以使用灵活的文件编写器(您仍然需要示例变量)。