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 中的请求之间添加自定义延迟,并使用线程组设置更加灵活的加压方式。


相关文章
|
2月前
|
编解码 测试技术 索引
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。
81 1
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
|
12天前
|
弹性计算 Shell Apache
|
4月前
|
测试技术 API
使用 jMeter 给 Spartacus SSR 发送 100 个并发的 SSR 请求,全部被 SSR 响应了
使用 jMeter 给 Spartacus SSR 发送 100 个并发的 SSR 请求,全部被 SSR 响应了
31 0
|
6月前
|
Java Apache
apache的Http请求
apache的Http请求
44 0
|
6月前
|
监控 Java 数据库连接
Apache Jmeter测压工具快速入门
Apache Jmeter测压工具快速入门
130 0
|
9月前
|
前端开发 JavaScript 测试技术
jmeter--录制请求
jmeter--录制请求
|
10月前
|
Java Unix 测试技术
全面解析 Apache JMeter 的使用方法
Apache JMeter 是一款开源的性能测试工具,可以用于测试 Web 应用程序、FTP 服务器、数据库等各种类型的服务器。本文将以 JMeter 5.5 为例介绍 JMeter 的使用方法。
全面解析 Apache JMeter 的使用方法
|
11月前
|
测试技术
jmeter辅助功能详解(http请求默认值,断言)
jmeter辅助功能详解(http请求默认值,断言)
139 0
|
12月前
|
运维 网络协议 Apache
Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析
Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析
127 0

推荐镜像

更多