【问题标题】:JMETER: How to calculate the difference between two HTTP Sampler's response(elapsed) time valueJMETER:如何计算两个 HTTP 采样器的响应(经过)时间值之间的差异
【发布时间】:2014-07-16 08:11:12
【问题描述】:
  • 我通过 JMETER 发送了两个 HTTP 请求。
  • 测量单个经过的时间或响应时间值。
  • 计算两个值之间的差值。

例如,

  • HTTP 采样器 - 1:测量时间:1000 毫秒
  • HTTP 采样器 - 2:测量时间:800 毫秒
  • 计算差异:1000 - 800 = 200 毫秒

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

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

能否请您告诉我这种情况是否有任何替代解决方案?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    您可以使用Beanshell Post Processors 即时计算差异

    使用以下代码添加一个 Beanshell 后处理器元素作为 HTTP 采样器 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 指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多