在Apache JMeter中在请求之间插入延迟 | Baeldung
在Apache JMeter中在请求之间插入延迟 | Baeldung
1. 概述
当我们使用Apache JMeter进行测试时,我们可能希望在请求之间添加延迟,以更好地模拟用户行为。
在本教程中,我们将创建一个简单的测试计划。我们将查看用于调整生成的工作负载的可用参数,并配置计时器以添加延迟。
2. 使用案例
有时我们可能希望在请求之间添加延迟:
- 避免因在给定时间内发送太多请求而产生的错误
- 模拟具有自然间隔的实际用户操作
- 调整每分钟的请求数量,以更精细地控制工作负载配置
3. 使用延迟
首先,我们需要定义负载配置文件。这里我们有多种目标:
- 查看系统在增长的工作负载下的行为,以找到性能极限
- 检查应用程序在高峰负载后如何恢复
Apache JMeter有以下两种选项来模拟这些用例:
- 线程组 - 并行用户的数量
- 计时器 - 每个用户的请求之间的延迟
4. 测试计划
4.1. 基本计划
让我们创建一个包含一个线程组的基本测试计划。我们将设置并行请求的数量、启动期间和执行测试的次数。我们应该注意到,在JMeter术语中,一个线程意味着一个并发用户。

我们可以使用启动期间来创建工作负载的增加。这里我们需要设置从1个线程开始达到定义的_线程数量_的时间段。
要创建更复杂的负载配置文件,我们还可以指定线程的生命周期。此设置意味着两件事:
- 启动延迟 - JMeter等待启动线程的时间
- 持续时间 - 它运行的时间长度
_循环计数_也是一个有用的设置,用于指定指定HTTP请求的重复次数。
4.2. 添加请求
接下来,我们将添加两个HTTP请求。我们将使用在线REST API https://gorest.co.in/ 来测试我们的脚本。HTTP请求设置在用户界面中配置:

我们还将添加两个断言,只是为了检查请求返回了一些数据。
我们需要检查我们的测试是否没有错误地工作。为此,让我们添加_查看结果树_元素,然后运行我们的测试计划。
运行第一个请求的结果显示在_查看结果树_面板中。

让我们看看第二个请求的_采样器结果_输出。这里,_样本开始_是 2021-05-17 15:00:40,与第一个请求的时间相同。这意味着默认情况下,我们请求之间没有任何延迟。
Thread Name:Thread Group 1-1
Sample Start:2021-05-17 15:00:40 SAMT
考虑到这一点,让我们看看我们如何增加请求之间的间隔。
5. 添加计时器
5.1. 恒定计时器
要添加计时器元素,我们需要右键单击_线程组_元素并选择_添加,计时器,恒定计时器_。

在这里,我们向线程组添加了一个_恒定计时器_,并设置了_线程延迟_为三秒。这个计时器在每个请求之间添加了延迟。
现在让我们重新运行我们的测试计划并检查_查看结果树_。我们应该看到请求是在我们在计时器元素中设置的延迟下运行的。
Thread Name:Thread Group 1-1
Sample Start:2021-05-17 15:18:17 SAMT
我们可以看到下一个HTTP请求是在第一个请求之后三秒钟运行的。
Thread Name:Thread Group 1-1
Sample Start:2021-05-17 15:18:20 SAMT
5.2. 恒定计时器的替代方案
作为_恒定计时器_的替代方案,我们可以使用_均匀随机计时器_。这种类型的计时器可以像恒定计时器一样添加。
在下拉菜单中,它就在_恒定计时器_之后。
从计时器名称中我们可以看到,当我们希望延迟在某个指定范围内变化时,应该使用它。让我们将这个计时器添加到我们的样本中,并看看它是如何工作的:

_恒定延迟偏移量_为每个延迟添加了一个永久部分。_随机延迟最大值_帮助我们定义一个将添加到恒定延迟偏移量的额外随机部分。这些设置允许我们提供随机因素,而不会使延迟变得太小。
让我们运行这个测试并查看_查看结果树_元素:

如果我们仔细查看样本开始点,我们将看到根据定义的计时器参数添加了随机延迟。
Thread Name:Thread Group 1-1
Sample Start:2021-07-15 09:43:45 SAMT
Thread Name:Thread Group 1-1
Sample Start:2021-07-15 09:43:49 SAMT
Thread Name:Thread Group 1-1
Sample Start:2021-07-15 09:43:55 SAMT
在这里,我们看了很多计时器选项,尽管还有其他计时器配置可用。
6. 结论
在本教程中,我们已经看到如何在Apache JMeter中在两个请求之间插入自定义延迟,并使用线程组设置为创建的工作负载模型增加更多的灵活性。