我正在测试登录后发生的某种“功能”。
测试用例是500名用户在5分钟内完成该功能。
我可以在登录后添加同步计时器,以确保所有500个线程都已登录但是它将同时执行所有500个“功能”任务,而不是5分钟,这将使应用程序崩溃(它认为有DDoS攻击并关闭)。
现在,我正在通过在登录后给予一些思考时间来处理这个问题,以减慢登录到我可以预测的稳定数字,然后在每个线程的开始时启动“功能”,如下所示:主调度员
+登录响应时间
+思考时间......
但这有点模糊。 有没有办法在已经运行的情况下“提升”任务?
答案 0 :(得分:0)
我可以考虑两种选择。
第一个是两次使用随机时间。您可以使用0
秒到300 - 1
[0-300)
或使用millis [0-300000)
的范围。然后根据这个ramdon时间睡觉线程。
这种方法可能更现实一些,因为例如,在给定间隔的特定秒中,您没有任何线程开始,而在其他特定秒中,您有2-3。这仍然应该在一般情况下保持平衡,因为你不会在开始时提出所有请愿。
第二个是统一启动线程。在您的配置时间(登录和触发线程之前),您可以使用类似AtomicInteger的内容,使用new AtomicInteger(0)
进行初始化并调用getAndIncrement()
来分配线程的范围,在范围内[0-500)
然后当你触发线程睡眠300.0 * id / 500.0
毫秒来执行任务/请愿。
答案 1 :(得分:0)
默认情况下,JMeter会尽可能快地执行请求,您可以使用Constant Throughput Timer将执行“限制”到所需的吞吐量(每分钟请求数)。
示例测试计划如下所示:
恒定吞吐量定时器跟随JMeter Scoping Rules,因此您可以将其应用于单个采样器或一组采样器。