当我们在完全停止测试之前达到1小时标记时,如何使测试停止(如逐渐退出)剩余的交易?

时间:2015-12-15 12:57:56

标签: jmeter performance-testing

我的测试计划如下: 线程组

交易控制器1 交易控制器2 运行时控制器 交易控制器3 交易控制器4 交易控制器5 交易控制器6 控制器1& 2(启动应用程序和登录) - 应该只发生一次

运行时控制器包含一些事务 - 这将迭代一个 持续1小时

控制器6(注销) - 只应发生一次

所有采样器都位于控制器内部。

我想在1小时的时间内完成测试。问题是我订的时候 我的线程组为1小时,运行时控制器为1小时 控制器6没有被执行。这一切都取决于测试流程的位置 当持续时间达到1小时时达到。

如何让测试停止(如逐渐退出)但执行 当我们在停止测试前达到1小时标记时剩余的交易 完全?

是否有控制器等待剩余的事务 在停止测试之前执行,即使持续时间已达到1小时?

非常感谢您的协助。谢谢

1 个答案:

答案 0 :(得分:0)

我认为解决这个问题的唯一方法是手动控制减速。

将您的线程组更改为仅循环一次,并删除持续时间限制。

在您的第一个样本下放置一个带有此代码的BSF预处理器:

if (vars.get("start_time") == null) {
    vars.put("start_time", Date.now());
}

使用具有以下条件的While控制器替换运行时控制器:

${__javaScript(Date.now() < ${start_time} + 1000 * 60 * 60)}

如果你想要逐渐减少,比如5分钟,你需要做这样的事情(为清晰起见换行)

${__javaScript(
    Date.now() < ${start_time} +
        1000 * 60 * 60 +
        1000 * 60 * 5 * ${__threadNum} / <your total number of threads>
)}

如果你也逐渐加速,你也需要考虑到这一点(或者如果你想要和你的加速一样,你可以使用第一个版本)。