我想执行一个只有 1 个线程组的测试。 我想运行 n 个不同的线程。假设测试需要 1 秒,那么我可以设置 threads = n 和 ramp up = 1,loop = 1。我的想法是,如果我想让测试运行更长时间,我应该增加 ramp up 秒数并提高按相同比例循环的次数。我在这里读到这个想法:
http://www.testingjournals.com/5-must-know-features-thread-group-jmeter/
在场景 2 的循环部分,它说: 每 5 秒 (100/20) 4 个线程/请求将到达服务器。
但是我不明白是说4个线程平均分布在5秒内,还是每5秒一次发出4个请求。
如果我想测试这个完全相同的测试但时间更长怎么办?我不想要更多线程,因为每个线程都有连接开销。所以我希望相同的 n 个线程在一秒钟内均匀分布地运行,并持续越来越多的秒数。我如何确保相同的线程将被使用并均匀分布在我希望的任何时间范围内?我应该使用恒定吞吐量计时器吗?如果是这样,应该在循环和加速配置中设置什么?
最佳答案
如果您的目标是每秒执行 X 个请求 - 请选择以下测试元素之一:
- > Constant Throughput Timer
- > Precise Throughput Timer (可用自 JMeter 4.0 )
- > Throughput Shaping Timer (可以通过 JMeter Plugins Manager 安装)
以上所有都可以暂停 JMeter 线程,以将吞吐量(每单位时间的请求数)限制为给定数量。关于设置线程组:
- 线程数:它应该足够以达到目标吞吐量。在
Throughput Shaping Timer
的情况下,您可以使用 Concurrency Thread Group并通过 feedback function 连接它们- 在这种情况下,如果当前数量不足以达到/维持所需的每秒请求数,JMeter 将能够自动启动额外的线程 - 循环:勾选
永远
- 您可以使用线程组中的
Scheduler Configuration -> Duration (seconds)
设置所需的测试持续时间。
关于testing - JMeter - 长时间均匀地执行样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53725247/