Apache JMeter 请求间添加延迟

简介: Apache JMeter 请求间添加延迟

1. 概述

当我们使用 Apache JMeter 进行测试时,我们可能需要在请求之间添加一个延迟,以更好地模拟用户行为。

在本文中,我们将创建一个的 Test Plan。查看用于调整生成负载的参数,然后配置 Timer 以添加延迟。

2. 测试用例

在请求之间添加延迟,可以:

  • 避免与在既定时间内发送过多请求相关的错误
  • 模拟真实的用户操作,执行动作间的自然间隙
  • 调整每分钟的请求数,以实现更精细的负载控制配置

3. 使用延迟

首先,我们需要定义加载配置文件。有如下两个目标:

  • 查看系统在不断增长的并发下的行为,以发现性能瓶颈
  • 查看应用程序在峰值并发后的恢复情况

有两个 JMeter 组件可以实现这两个目标:

  • Thread Group – 设置并发用户数
  • Timer – 在每个用户请求之间添加延迟

4. 测试计划

4.1. 基础配置

首先创建包含一个 Thread GroupTest Plan。在 Thread Group 中设置并发数、Ramp-up 时间以及和循环的次数。我们应该注意,JMeter Thread Group 中的一个线程就表示一个并发用户。

image.png

我们可以利用 Ramp-up 来不断增加负载。在这里,需要设置一个时间,这个事件表示线程数从 1 个线程开始到定义的线程数花费的时间。

为了创建更复杂的加载配置,我们还可以指定线程生命周期。需要做两个设置:

  • Startup delayJMeter 等待线程启动的时间
  • Duration – 线程持续运行时间

Loop Count 也是指定 HTTP 请求重复执行次数的设置。

4.2. 添加请求

接着添加两个 HTTP 请求。将使用在线的 REST API 服务 gorest.co.in/ 来测试脚本。HTTP 请求在 GUI 界面中配置:

image.png

还需要添加两个断言,用于校验请求返回的数据。

image.png

为了检查测试执行是否有误。可以添加 View Results Tree 组件,然后执行 Test Plan

请求执行的结果显示在 View Results Tree 中:

image.png

第二个请求的结果显示请求开始的时间是2022-10-30 17:51:10,与第一个请求的开始时间相同。也就是说默认情况下,请求之间没有任何延迟。

Thread Name:Thread Group 1-1
Sample Start:2022-10-30 17:51:10 CST
复制代码

因此,我们可以看看如何增加请求之间的开始时间。

5. 添加 Timers

5.1. Constant Timer

要添加 Timer 组件,可以右键单击 ThreadGroup 并选择 Add > Timer > Constant Timer

image.png

这里为 Thread Group 添加了一个延迟为三秒的 Constant Timer。 这个 Constant Timer 在每个请求之间添加一个延迟,时间为 3s。

重新运行我们的 Test Plan 并查看 View Result Tree。请求以 Constant Timer 中设置的延迟运行。

Thread Name:Thread Group 1-1
Sample Start:2022-10-30 18:04:43 CST
复制代码

下一个 HTTP 请求是在第一个请求之后 3s 后开始的:

Thread Name:Thread Group 1-1
Sample Start:2022-10-30 18:04:47 CST
复制代码

5.2. Constant Timer 的替代方案

除了 Constant Timer 外,可以使用 Uniform Random Timer。这种类型的 Timer 添加方式与 Constant Timer 的添加方式相同。

在 JMeter 左侧下拉菜单中,它位于 Constant Timer 之后。

从名称可以看出,该 Timer 可以将延迟固定在特定范围内变化,将该 Timer 添加到 Thread Group 中,看看它是如何工作的:

image.png

固定延迟偏移为每个延迟添加一个永久固定部分。随机延迟最大值帮助我们定义一个附加的随机部分,该部分将添加到固定延迟偏移中。这些设置允许我们提供最大延迟,而不会使延迟变得太小。

执行 Test Plan 并查看 View Result Tree 的内容:

image.png

如果我们仔细请求的开始时间,我们会看到根据定义的 Timer 参数添加了随机延迟。

Thread Name:Thread Group 1-1
Sample Start:2022-10-30 18:07:36 CST
复制代码
Thread Name:Thread Group 1-1
Sample Start:2022-10-30 18:07:40 CST
复制代码
Thread Name:Thread Group 1-1
Sample Start:2022-10-30 18:07:44 CST
复制代码

我们已经使用了几个 Timer 组件,尽管还有其他 Timer 配置可以使用。

6. 结论

在本文中,我们了解了如何在 Apache JMeter 中的请求之间添加自定义延迟,并使用线程组设置更加灵活的加压方式。


相关文章
|
6月前
|
编解码 测试技术 索引
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。
149 1
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
|
1月前
|
Java 测试技术 API
如何在 Apache JMeter 中集成 Elastic APM
如何在 Apache JMeter 中集成 Elastic APM
39 1
|
5月前
|
安全 Java 测试技术
Windows电脑安装Apache JMeter的详细教程
本文介绍了在Windows上安装Apache JMeter的步骤。首先,需确保安装Java JDK并配置环境变量。然后,从JMeter官网下载ZIP文件,解压至指定目录,并同样配置JMeter的环境变量。验证安装成功后,可通过命令行以GUI或非GUI模式启动JMeter,进行性能测试。
|
5月前
|
测试技术 API Apache
使用 Apache JMeter 吞吐量控制器的详细指南
Apache JMeter是开源的负载和性能测试工具,其吞吐量控制器用于控制采样器执行频率以达到特定吞吐量。要使用它,首先启动JMeter,创建测试计划,添加线程组和逻辑控制器。配置吞吐量控制器的参数,如总执行次数或百分比,并添加HTTP请求采样器。例如,创建两个控制器,一个设定执行次数,另一个设定执行百分比。通过监听器如汇总报告和查看结果树来分析测试结果,从而模拟不同负载并识别性能瓶颈。吞吐量控制器是实现复杂测试场景的关键组件。
|
5月前
|
测试技术 Apache 数据安全/隐私保护
使用 Apache JMeter 事务控制器的详细指南
Apache JMeter 的事务控制器用于组合多个请求成一个事务,以便衡量整体性能。创建测试计划涉及添加线程组、事务控制器和采样器,配置参数如线程数、Ramp-Up时间和循环次数。在事务控制器内,添加HTTP请求模拟用户登录和访问主页等操作。通过勾选选项,包括计时器和处理器时间。添加监听器如汇总报告和查看结果树来分析结果,从而评估系统性能瓶颈。事务控制器对于测试复杂业务流程的性能非常有用。
|
5月前
|
测试技术 Apache
使用 Apache JMeter Flexible File Writer 插件的详细指南
Apache JMeter 是开源性能测试工具,用于负载测试。Flexible File Writer 是一个插件,用于自定义格式记录测试结果。安装该插件需通过 JMeter 的 Plugins Manager。配置时,添加监听器到测试计划,设置输出文件、文件格式及字段。执行测试后,结果将按指定格式写入 CSV 文件。此插件增强了数据记录的灵活性,便于分析和报告。
|
5月前
|
测试技术 调度 Apache
使用 Apache JMeter 调度器的详细指南
Apache JMeter 是开源性能测试工具,用于模拟负载测试。调度器功能允许按预设时间执行测试计划。启动 JMeter,创建测试计划包含线程组,配置线程数、启动时间和持续时间。添加HTTP采样器和监听器来收集数据。保存测试计划并启动,最后分析响应时间、吞吐量等指标以评估系统性能。通过启用调度器,测试可在特定时间段自动化运行。
|
6月前
|
弹性计算 Shell Apache
某时间段访问apache 服务器的请求IP
【4月更文挑战第29天】
58 2
|
6月前
|
弹性计算 Shell Apache
|
6月前
|
监控 Java Linux
Apache JMeter5.2基础入门实践详解
Apache JMeter5.2基础入门实践详解
164 0

推荐镜像

更多
下一篇
无影云桌面