我的测试计划如下: 线程组
交易控制器1 交易控制器2 运行时控制器 交易控制器3 交易控制器4 交易控制器5 交易控制器6 控制器1& 2(启动应用程序和登录) - 应该只发生一次
运行时控制器包含一些事务 - 这将迭代一个 持续1小时
控制器6(注销) - 只应发生一次
所有采样器都位于控制器内部。
我想在1小时的时间内完成测试。问题是我订的时候 我的线程组为1小时,运行时控制器为1小时 控制器6没有被执行。这一切都取决于测试流程的位置 当持续时间达到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>
)}
如果你也逐渐加速,你也需要考虑到这一点(或者如果你想要和你的加速一样,你可以使用第一个版本)。