1. 概述
当我们使用 Apache JMeter 进行测试时,我们可能希望在请求之间添加延迟,以建立更好的用户行为模型。
在本教程中,我们将创建一个简单的测试计划。我们将查看用于调整生成的工作负载的可用参数,然后配置计时器以添加延迟。
2. 使用案例
有时我们可能希望在请求之间添加延迟:
- 避免与在给定时间内发送的请求过多相关的错误
- 模拟真实的用户操作,并为执行的操作提供自然间隙
- 调整每分钟的请求数以更好地控制工作负载配置
3. 使用延迟
首先,我们需要定义加载配置文件。我们在这里可以有不同的目标:
- 查看系统在不断增长的工作负载下的表现,以找出性能限制
- 检查应用程序在峰值负载后如何恢复
有两个 JMeter 选项可用于模拟这些用例:
- 线程组——有多少个并行用户
- 计时器 – 每个用户的请求之间的延迟
4. 测试计划
4.1.基本计划
让我们使用一个线程组创建一个基本测试计划。我们将设置并行请求的数量、启动周期以及执行测试的次数。我们应该注意, JMeter 表示法中的一个线程意味着一个并发用户。
我们可以利用 启动期 来增加工作量。这里我们需要设置从 1 个线程开始达到定义的 线程数的 周期。
为了创建更复杂的加载配置文件,我们还可以指定线程生存期。这个设置意味着两件事:
- 启动延迟 – JMeter 等待启动线程的时间
- 持续时间 – 运行多长时间
循环计数 也是一个有用的设置,用于指定指定 HTTP 请求的重复次数。
4.2.添加请求
接下来,我们将添加两个 HTTP 请求。我们将使用 https://gorest.co.in/ 上的在线 REST API 来测试我们的脚本。 HTTP 请求设置在用户界面中配置:
我们还添加两个断言,只是为了检查请求是否返回一些数据。
我们需要检查我们的测试是否正常运行。因此,我们添加 “查看结果树” 元素,然后运行我们的测试计划。
运行第一个请求的结果显示在 “查看结果树” 面板中。
让我们看看第二个请求的 采样器结果 输出。此处, 示例开始时间 为 2021-05-17 15:00:40 ,与第一个请求的时间相同。这意味着默认情况下,我们的请求之间没有任何延迟。
线程名称:线程组 1-1 示例开始:2021-05-17 15:00:40 SAMT
考虑到这一点,让我们看看如何增加请求之间的差距。
5. 添加定时器
5.1.恒定定时器
要添加计时器元素,我们需要右键单击 “线程组” 元素并选择 “添加”、“计时器”、“常量计时器” 。
在这里,我们向线程组添加了一个 线程延迟 为三秒的 常量计时器 。该计时器在每个请求之间添加延迟。
现在让我们重新运行我们的测试计划并检查 查看结果树。 我们应该看到请求是按照我们在计时器元素中设置的延迟运行的。
线程名称:线程组 1-1 示例开始:2021-05-17 15:18:17 SAMT
我们可以看到下一个 HTTP 请求在第一个请求之后三秒运行。
线程名称:线程组 1-1 示例开始:2021-05-17 15:18:20 SAMT
5.2.恒定定时器的替代方案
作为 恒定计时器 的替代方案,我们可以使用 统一随机计时器 。此类定时器的添加方式与常量定时器相同。
在下拉菜单中,它位于 Constant Timer 之后。
从定时器名称可以看出,当我们希望这个延迟在某个指定范围内变化时,我们应该使用它。让我们将此计时器添加到我们的示例中,看看它是如何工作的:
恒定延迟偏移 为每个延迟添加永久部分。 随机延迟最大值 帮助我们定义将添加到恒定延迟偏移的附加随机部分。这些设置允许我们提供随机因子,而延迟不会变得太小。
让我们运行此测试并查看“查看结果树”元素:
如果我们仔细观察样本开始点,我们会发现根据定义的计时器参数添加了随机延迟。
线程名称:线程组 1-1 示例开始:2021-07-15 09:43:45 SAMT
线程名称:线程组 1-1 示例开始:2021-07-15 09:43:49 SAMT
线程名称:线程组 1-1 示例开始:2021-07-15 09:43:55 SAMT
在这里,我们研究了几个计时器选项,尽管还有其他可用的计时器配置。
六,结论
在本教程中,我们了解了如何在 Apache JMeter 中的两个请求之间插入自定义延迟,并使用线程组设置为创建的工作负载模型添加更多灵活性。