你能跟踪控制器运行的时间吗? JMeter的

时间:2016-11-30 09:22:32

标签: jmeter

我正在使用while控制器进行一些测试。 在我的测试中,它每3秒检查一次正确的响应文本,如果不满足条件,则重复。 我想跟踪控制器运行的时间,重复自己直到条件正确。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以通过JMeter Functions执行此操作,即:

  • __time() - 在进入While Controller之前获取当前时间戳
  • __longSum() - 计算2个时间戳之间的差值

类似的东西:

  1. 在While Controller启动之前,在脚本的某处放置以下表达式:

    ${__time(,before)}
    

    它会将当前时间戳存储到${before} JMeter变量

  2. 在While Controller结束后,在脚本的某处放置以下表达式:

    ${__longSum(${__time(,)},-${before},)}
    

    它将获取新的当前时间戳并通过从中减去${before}变量值来计算增量

  3. 演示:

    JMeter Timestamp Delta

    有关使用JMeter功能的更多信息,请参阅How to Use JMeter Functions帖子系列。

答案 1 :(得分:0)

您可以使用CounterBean Shell Post Processor

将计数器配置元素保留在While控制器内。 Count的值将在每次迭代中递增。

因此,在if条件下,您可以将BeanShell后处理器添加到If控制器内的采样器中,并使用以下公式计算总时间:

count value * 3 = total seconds waited to reach If Condition.

以下是在TestPlan中放置元素:

While Controller
...Counter
...If Controller
......HTTP Sampler
.........Bean Shell Post Processor

图片参考: enter image description here

计数器配置截图: enter image description here

Bean Shell Post Processor代码:

int count = Integer.parseInt(vars.get("count"));
int totalTime = count*3;
log.info("total time waited : " + totalTime);
vars.put("totalTime", totalTime);

截图: enter image description here

注意:该值保存在totalTime变量中,因此您可以使用${totalTime}

在后续请求中引用该值