1. 概述

当我们使用 Apache JMeter 进行测试时,我们可能希望在请求之间添加延迟,以建立更好的用户行为模型。

在本教程中,我们将创建一个简单的测试计划。我们将查看用于调整生成的工作负载的可用参数,然后配置计时器以添加延迟。

2. 使用案例

有时我们可能希望在请求之间添加延迟:

  • 避免与在给定时间内发送的请求过多相关的错误
  • 模拟真实的用户操作,并为执行的操作提供自然间隙
  • 调整每分钟的请求数以更好地控制工作负载配置

3. 使用延迟

首先,我们需要定义加载配置文件。我们在这里可以有不同的目标:

  • 查看系统在不断增长的工作负载下的表现,以找出性能限制
  • 检查应用程序在峰值负载后如何恢复

有两个 JMeter 选项可用于模拟这些用例:

  • 线程组——有多少个并行用户
  • 计时器 – 每个用户的请求之间的延迟

4. 测试计划

4.1.基本计划

让我们使用一个线程组创建一个基本测试计划。我们将设置并行请求的数量、启动周期以及执行测试的次数。我们应该注意, JMeter 表示法中的一个线程意味着一个并发用户。

线程组

我们可以利用 启动期 来增加工作量。这里我们需要设置从 1 个线程开始达到定义的 线程数的 周期。

为了创建更复杂的加载配置文件,我们还可以指定线程生存期。这个设置意味着两件事:

  • 启动延迟 – JMeter 等待启动线程的时间
  • 持续时间 – 运行多长时间

循环计数 也是一个有用的设置,用于指定指定 HTTP 请求的重复次数。

4.2.添加请求

接下来,我们将添加两个 HTTP 请求。我们将使用 https://gorest.co.in/ 上的在线 REST API 来测试我们的脚本。 HTTP 请求设置在用户界面中配置:

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 中的两个请求之间插入自定义延迟,并使用线程组设置为创建的工作负载模型添加更多灵活性。