4.3 使用 JMeter 发起请求详解
欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅!
文章目录
- 前言
- 1 环境准备
- 2 创建 GET 请求测试计划
- 3 运行测试计划
- 4 创建 POST 测试计划
- 5 请求体与请求参数
- 6 Http请求默认值
- 6.1 主要配置项
- 6.2 配置方法
前言
JMeter 是 Apache 提供的一款强大的开源性能测试工具,主要用于负载测试和性能评估。本文将通过一个具体示例,详细讲解如何在 JMeter 中发起 GET 请求以及 POST 请求,包括环境配置、请求参数设置以及结果分析。
1 环境准备
在开始之前,请确保已完成以下环境配置:
①安装 JMeter
从 Apache JMeter 官网 下载最新版本,并解压安装。
②配置 JDK
确保系统已安装 JDK,并正确配置 JAVA_HOME
环境变量。
③启动 JMeter
进入 JMeter 的安装目录,双击 ApacheJMeter.jar
文件启动 JMeter 的图形界面:
2 创建 GET 请求测试计划
①创建测试计划
- 打开 JMeter,默认会显示一个空白的 测试计划(Test Plan)
- 右键点击 测试计划,依次选择:
添加 > 线程 (用户) > 线程组
,为测试添加一个线程组
②配置线程组
在 线程组 中,可以设置用户线程数和请求执行的方式:
- 线程数(Number of Threads):表示虚拟用户数。
- Ramp-Up 时间(Ramp-Up Period):表示启动所有线程所需的时间(秒)。
- 循环次数(Loop Count):表示每个线程的请求执行次数。
【示例】
- 线程数:10
- Ramp-Up 时间:5 秒
- 循环次数:1
表示在 5 秒内逐渐启动 10 个线程,每个线程只执行一次请求。
③添加 HTTP 请求
- 右键点击线程组,依次选择:
添加 > 取样器 > HTTP 请求
。 - 配置 HTTP 请求的基本信息:
- 协议(Protocol):如
http
或https
。 - 服务器名称或 IP:目标服务器地址,例如
example.com
。 - 端口号(Port Number):目标端口,默认 HTTP 为 80,HTTPS 为 443。
- 路径(Path):具体请求路径,例如
/api/v1/resource
。 - 方法(Method):选择
GET
。
- 协议(Protocol):如
【示例】
在聚合数据API 服务的开放平台中随机选取一个API ,查看该 API 的详细文档,包括请求方式、参数说明和返回格式:
④添加结果查看器
右键点击线程组,依次选择: 添加 > 监听器 > 查看结果树
3 运行测试计划
配置完成后,点击工具栏中的 启动 按钮运行测试计划。JMeter 将开始发起 GET 请求,并将响应结果显示在结果树中。
在 查看结果树 中,可以查看以下内容:
- 请求数据:发出的完整 HTTP 请求。
- 响应数据:服务器返回的 HTTP 响应,包括状态码、响应体等。
- 响应时间:每个请求的耗时。
4 创建 POST 测试计划
步骤与 GET 请求相同,将 HTTP 请求改成 POST 即可:
运行结果:
5 请求体与请求参数
①GET 请求
GET 请求的参数通常通过 URL 查询字符串(Query String)传递,参数和地址是在一起的。
【示例】
GET /search?q=example HTTP/1.1
Host: example.com
- 参数 q=example 被直接附加到 URL 后
- 没有请求体,数据全部包含在 URL 中
②POST 请求
POST 请求的参数一般放在请求体中,地址和数据分开。
【示例】
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 19
name=example&age=25
请求体中包含实际的数据,例如 name=example&age=25。
6 Http请求默认值
在 Apache JMeter 中,HTTP 请求默认值(HTTP Request Defaults)是一个非常有用的配置元件,用于设置 HTTP 请求的默认参数值。这些默认值会被应用到同一线程组中包含的所有 HTTP 请求采样器,从而减少重复配置,提高测试脚本的可维护性。
6.1 主要配置项
①服务器名称或 IP
- 字段名称:
Server Name or IP
- 作用: 设置目标服务器的主机名或 IP 地址。例如,
www.example.com
或192.168.1.1
。 - 应用场景: 如果所有的 HTTP 请求都指向同一个服务器,可以在这里统一配置,而不需要每个 HTTP 请求采样器都填写。
②端口号
- 字段名称:
Port Number
- 作用: 设置目标服务器的端口号。通常,HTTP 使用端口
80
,HTTPS 使用端口443
。 - 应用场景: 当目标服务器使用非标准端口时(如
8080
),可以在这里统一配置。
③协议
- 字段名称:
Protocol
- 作用: 指定请求使用的协议(HTTP 或 HTTPS)。
- 应用场景: 如果所有请求都使用 HTTPS,可以在这里统一设置。
④路径
- 字段名称:
Path
- 作用: 设置请求的资源路径。例如:
/api/v1/resource
或/login
。 - 默认值:
/
表示请求服务器的根路径。 - 应用场景: 如果测试的资源路径大部分相同,可以设置为默认路径。
⑤URL 编码
- 字段名称:
URL Rewriting
- 作用: 指定是否对路径和参数进行 URL 编码。
- 应用场景: 如果路径或参数中包含特殊字符(如空格或非 ASCII 字符),需要进行编码。
⑥参数
- 字段名称:
Parameters
- 作用: 设置默认的 URL 参数。
- 应用场景: 当大部分请求共享相同的参数时(如 API 的公共参数),可以在此统一配置。
⑦Content Encoding
- 字段名称:
Content Encoding
- 作用: 指定请求数据的编码格式,例如
UTF-8
。 - 应用场景: 当请求的内容需要特定的编码格式时使用。
⑧Base URL
- 作用:
HTTP 请求默认值
中的服务器名称、端口号和协议组成了基础 URL(Base URL)。HTTP 请求采样器会继承这些值,从而减少冗余配置。
【注意事项】
- 继承原则: 如果 HTTP 请求采样器单独配置了这些字段,则会覆盖 HTTP 请求默认值中的设置。
- 适用范围: HTTP 请求默认值只会影响在同一线程组中定义的 HTTP 请求采样器,且需要放置在它们的前面。
- 可扩展性: 可以设置多个 HTTP 请求默认值,用于不同的服务器或环境(如开发、测试、生产环境)。
6.2 配置方法
鼠标右键线程组 → 添加 → 配置元件 → HTTP请求默认值:
【示例】
假设测试需要向 https://api.example.com
发送多次请求:
①配置 HTTP 请求默认值
- 服务器名称或 IP:
api.example.com
- 协议:
https
- 端口号:
443
- 路径:
/api/v1
②HTTP 请求采样器 1
- 路径:
/users
(继承服务器名称、协议和端口号)
③HTTP 请求采样器 2
- 路径:
/orders
(同样继承默认值)
④运行结果
最终请求分别为:
https://api.example.com/api/v1/users
https://api.example.com/api/v1/orders
【实例】
假设以下四个 http 请求只有 date 参数的日期不同:
可以配置HTTP 请求默认值
中的服务器名称、端口号、协议、路径以及相同的 key
参数。HTTP 请求采样器会继承这些值,从而减少冗余配置。
配置的HTTP 请求默认值:
1、2、3、4的Http请求可以删除服务器名称、端口号、协议、路径以及相同 key
参数的信息:
运行结果: