最后更新:2026-09-04 01:19
实验24 JMeter接口测试¶
难度:★★☆ | 预估时长:__ 分钟
24.1 实验目的¶
- 知识目标:理解 HTTP 请求默认值、HTTP 信息头管理器的作用;理解用户自定义变量、函数(_Random)、CSV 数据文件三种变量方式的区别;理解关联(正则表达式提取器)的原理。
- 技能目标:能用 JMeter 发送 GET / POST 请求并配置响应断言;能用 CSV + 循环控制器 + If 控制器实现数据驱动测试;能用正则表达式提取器做关联、配置 Cookie / 授权管理,并生成聚合报告与 HTML 测试报告。
- 素养目标:养成"先看察看结果树的颜色与响应状态码再判断问题"的排错习惯,树立数据文件编码(UTF-8)规范意识。
24.2 实验环境¶
- 操作系统:Windows 10 / Windows 11;
- 工具:JMeter(实验9 已装好)+ JDK;
- 在线接口服务:httpbin.org(/get、/post、/basic-auth、/digest-auth、/cookies/set);
- 数据文件:denglu.csv、jiekou.csv(UTF-8 编码)。
24.3 实验重难点¶
重点:HTTP 请求配置(协议/IP/路径/方法);响应断言;CSV 数据文件设置与引用 ${变量名}。
难点:数据驱动(循环控制器 + If 控制器按请求方法分支 + CSV 引用);正则表达式提取器做关联;Basic/Digest 授权管理器。
24.4 实验内容¶
24.4.1 JMeter 发送请求(GET / POST)¶
1. 任务描述 用 JMeter 发送 httpbin.org 的 GET / POST 请求。
2. 实验步骤
- 步骤 1:GET 请求:线程组 → 添加 → Sampler → HTTP 请求,请求地址
http://httpbin.org/get,配置协议/服务器/IP/路径。添加察看结果树,点绿色运行按钮查看结果。
-
步骤 2:POST 请求:线程组 → 添加 → Sampler → HTTP 请求,请求地址
http://httpbin.org/post,方法选 POST,配置参数后运行查看。 -
步骤 3:HTTP 请求默认值:线程组 → 添加 → 配置元件 → HTTP 请求默认值,把重复的协议、服务器、端口配置好,并放到请求前面(一次配置多次使用)。
24.4.2 添加断言¶
1. 任务描述 用响应断言验证返回内容。
2. 实验步骤
-
步骤 1:选中一个请求 → 右击 → 添加 → 断言 → 响应断言。
-
步骤 2:选择"要测试的响应字段"(如响应文本)和"模式匹配规则"(如包括),添加"要测试的模式":匹配返回的字符串是否包含
https://httpbin.org/get。
- 步骤 3:运行后在察看结果树查看:断言成功为绿色标志,断言失败为红色。
断言失败 ≠ 运行失败
断言失败不代表运行失败,可以通过响应状态码(如 200)查看运行结果。
为什么要加响应断言?
请求"跑通了"不等于"结果对了"——断言就像自动对答案,让 JMeter 替你检查响应内容里有没有预期的字符串,省去人工逐条核对。
24.4.3 参数设置(Query String / Request Body)¶
1. 任务描述 掌握 URL 传参与 Body 传参。
2. 实验步骤
-
步骤 1:Query String Parameters:在 HTTP 请求页面的 Parameters 选项添加参数,参数通过 URL 传递(Query String 方式),运行后在察看结果树查看。
-
步骤 2:Request Body:选定请求 → 添加 → 配置元件 → HTTP 信息头管理器,添加参数类型
Content-Type: application/json;Body 数据写请求体。运行查看结果。
Query String 和 Body 传参有什么区别?
Query String 是把参数"挂在网址后面"传递,Body 是把参数"装进包裹里"随请求体发送——就像快递面单上的备注和箱子里的货物的区别。
常见错误与排错
- 若 Body 传 JSON 服务端解析不了:确认已在 HTTP 信息头管理器中添加
Content-Type: application/json; - 若参数没传过去:确认参数写在了正确的位置(Parameters 选项对应 Query String,Body Data 对应请求体)。
24.4.4 变量设置(用户自定义 / 函数 / CSV)¶
1. 任务描述 掌握三种变量方式。
2. 实验步骤
- 步骤 1:用户自定义变量:选中请求 → 添加 → 前置处理器 → 用户参数,设置变量名称 user、值 jiekouceshi1。引用格式:
${用户自定义变量名称}。
-
多用户:添加多个用户,勾选"每次迭代更新一次",并在线程组中设置对应线程数。
-
步骤 2:函数生成变量:菜单"选项" → 函数助手,选择
_Random函数,配置参数生成随机数,复制函数字符串粘贴到 HTTP 请求 Parameters 中。 -
步骤 3:CSV 数据文件变量:选择请求 → 添加 → 配置元件 → CSV 数据文件设置。
- 创建 POST 请求
http://httpbin.org/post; - 创建 CSV 文件
denglu.csv:jiekou1,1; jiekou2,2; jiekou3,3; jiekou4,4; - 配置 CSV 数据文件设置(文件名、变量名称、分隔符等);
- 在 POST 请求中引用变量数据;
- 线程组线程数改为 4(数据 4 组),运行查看结果。
- 创建 POST 请求
三种变量方式什么时候用哪种?
固定不变的值用用户自定义变量;每次要不一样的随机值用 _Random 函数;要批量代入多组数据(如多个账号)就用 CSV 数据文件——就像手写一张、掷骰子一张、照着名单念一沓。
常见错误与排错
- 若 CSV 有 4 组数据却只跑了 1 组:把线程组线程数改成与数据组数一致(本例为 4);
- 若引用
${变量名}不生效:检查 CSV 数据文件设置中的变量名称与引用拼写是否一致。
24.4.5 正则表达式设置(关联)¶
1. 任务描述 从上一个请求响应中提取动态值(如随机数 num)供下一个请求使用。
2. 实验步骤
-
步骤 1:选中请求 → 添加 → 后置处理器 → 正则表达式提取器。
-
步骤 2:配置引用名称(如 num)、正则表达式、模板、匹配数字、缺省值,从响应中提取 num 的返回值。
-
步骤 3:新建一个请求名称为 get_num 的 GET 请求,把提取的 num 值作为参数传递(
${num})。 -
步骤 4:运行并查看结果。
关联是干什么的?
有些值是服务器每次随机生成的(如 num),写死就取不到——关联就像"传接力棒":上一个请求把响应里的动态值提取出来,递给下一个请求接着用。
常见错误与排错
- 若
${num}取不到值:检查正则表达式、引用名称拼写是否正确,以及匹配数字的设置; - 若提取到空值:确认上一个请求的响应里确实包含要提取的内容(先在察看结果树里核对响应数据)。
24.4.6 Cookie 设置¶
1. 任务描述 用 HTTP Cookie 管理器存储并复用 Cookie。
2. 实验步骤
-
步骤 1:请求
http://httpbin.org/cookies/set(会返回 Cookie,内容可自定义参数设置)。 -
步骤 2:添加 Cookie 管理器:线程组 → 添加 → 配置元件 → HTTP Cookie 管理器。使用 Cookie 管理器后,每个 JMeter 线程拥有自己独立的 Cookie。
-
步骤 3:运行 set_cookie 请求,在察看结果树查看 Cookie 信息。
-
步骤 4:新建另一个请求,发送后会自动包含该 Cookie。
为什么每个线程要拥有独立的 Cookie?
每个 JMeter 线程代表一个"虚拟用户"——就像每个顾客有自己的会员卡,各自登录、各自保持状态,互不串号,这样才能模拟多个真实用户。
常见错误与排错
- 若后续请求没带上 Cookie:确认 HTTP Cookie 管理器已添加到线程组下,且先运行了 set_cookie 请求;
- 若看不到 Cookie 内容:在察看结果树中查看该请求的请求头与响应信息。
24.4.7 授权设置(Basic Auth / Digest Auth)¶
1. 任务描述 用 HTTP 授权管理器完成 Basic / Digest 认证。
2. 实验步骤
-
步骤 1:Basic Auth:请求 URL
http://httpbin.org/basic-auth/{username}/{passwd},username=jiekouceshi、passwd=666666(GET)。添加 HTTP 授权管理器(选中请求 → 添加 → 配置元件 → HTTP 授权管理器),配置服务器、用户名、密码,运行查看。请求结果中带授权信息Authorization: Basic ...(username 和 passwd 经过 Base64 编码)。 -
步骤 2:Digest Auth:请求 URL
http://httpbin.org/digest-auth/{qop}/{username}/{passwd},username=jiekouceshi、passwd=888888。添加 HTTP 授权管理器配置,运行查看结果。
常见错误与排错
- Basic Auth 的用户名和密码只是经过 Base64 编码(不是加密),很容易被还原,切勿在真实项目中用这种方式传真实账号密码;
- 若认证失败:确认授权管理器中的用户名、密码与 URL 中占位符对应的值一致。
24.4.8 数据驱动¶
1. 任务描述 用循环控制器 + If 控制器 + CSV 实现接口用例数据驱动。
2. 实验步骤
-
步骤 1:新建 Excel 文件,重命名扩展名为
.csv(如 jiekou.csv),设计测试用例(url、parameter、expectValue 等列)。注意:编写完成后用记事本打开另存为 UTF-8 编码。 -
步骤 2:在测试计划中新建线程组,命名为"数据驱动测试"。
-
步骤 3:在线程组下添加循环控制器(数据驱动 → 添加 → 逻辑控制器 → 循环控制器),循环次数改为 5(用例数)。
-
步骤 4:在循环控制器下添加 CSV 数据文件设置,配置数据文件信息。
-
步骤 5:在循环控制器下添加如果(If)控制器,根据不同条件执行不同用例(可创建优先级控制器)。
-
步骤 6:在优先级控制器下分别创建 get 和 post 两个控制器。
- GET 请求用例:路径
${url}?${parameter}({url}、 引用 CSV 值); - 响应断言:设置为
${expectValue}(引用 CSV 中 expectValue 值); - POST 请求用例:参数在 Body 中,请求方式 POST,同样配响应断言。
- GET 请求用例:路径
-
步骤 7:运行数据驱动线程组,分别查看 GET 请求和 POST 请求结果。
为什么要用循环控制器 + If 控制器?
循环控制器像"把名单念 5 遍",每遍取一行 CSV 数据;If 控制器像"分拣员",按请求方法是 GET 还是 POST 把用例分到不同通道执行——两者配合就能用一份 CSV 驱动多种接口用例。
常见错误与排错
- 若 CSV 中文数据显示乱码或取值异常:用记事本打开 CSV 另存为 UTF-8 编码;
- 若 GET/POST 用例没有按预期分支执行:检查 If 控制器的条件表达式与各用例所在层级是否放对。
24.4.9 测试报告¶
1. 任务描述 生成聚合报告与 HTML 测试报告。
2. 实验步骤
-
步骤 1:聚合报告:选中线程组 → 添加 → 监听器 → 聚合报告。批量执行线程组的接口请求,执行完成后查看聚合报告(Average、Min、Max、Error%、Throughput 等)。
-
步骤 2:HTML 报告:打开 cmd 进入 JMeter 的 bin 目录,执行非 GUI 命令(如
jmeter -n -t 脚本.jmx -l 结果.csv -e -o 报告目录),出现生成成功提示后,打开 HTML 测试报告查看。
24.5 实验总结¶
本次实验掌握了以下要点:
- 一是理解了 HTTP 请求默认值、信息头管理器、断言、关联等核心组件的作用与原理(对应知识目标);
- 二是能用 JMeter 完成 GET/POST 请求发送、响应断言、三种变量方式、Cookie/授权管理与数据驱动测试,并生成聚合报告与 HTML 报告(对应技能目标);
- 三是养成"先看察看结果树颜色与状态码再排错"的习惯,树立 UTF-8 编码规范与敏感信息保护意识(对应素养目标)。 至此,接口测试模块(实验23~24)完成:Postman(手工/脚本化)与 JMeter(协议级/批量/数据驱动)两套工具对照掌握。
24.6 作业提交¶
- 提交地点:吾爱作业网
- 提交资料:
- GET/POST 请求察看结果树截图;
- 响应断言通过(绿色)截图;
- 数据驱动 GET/POST 运行结果截图;
- 聚合报告 / HTML 报告截图。
- 不会做时填写"心得感悟"(1~50 字)。
24.7 知识检测¶
- [ ] (填空)JMeter 中引用变量的格式是 ${变量名}。
- [ ] (选择)响应断言通过时,察看结果树中该请求显示为( )。
- A. 绿色 B. 红色 C. 灰色 D. 黄色
查看解析
正确答案:A。断言成功为绿色标志,断言失败为红色。
- [ ] (填空)函数助手中用于生成随机数的函数是 _Random。
- [ ] (选择)从上一个请求的响应中提取动态值(如 num)供下一个请求使用,应使用( )。
- A. 正则表达式提取器 B. HTTP 信息头管理器 C. 循环控制器 D. 聚合报告
查看解析
正确答案:A。正则表达式提取器属于后置处理器,用于"关联"——把上一步响应中的动态值传给下一步请求。
- [ ] (填空)CSV 数据文件编写完成后,需用记事本另存为 UTF-8 编码,避免中文乱码。
本课相关资源¶
| 序号 | 资源名称 | 类型 | 说明 |
|---|---|---|---|
| 1 | 任务3.2.1 JMeter发送请求.pptx | 课件 | GET/POST、请求默认值 |
| 2 | 任务3.2.2 添加断言.pptx | 课件 | 响应断言 |
| 3 | 任务3.2.3 参数设置.pptx | 课件 | Query String / Request Body |
| 4 | 任务3.2.4 变量设置.pptx | 课件 | 用户参数/_Random/CSV |
| 5 | 任务3.2.5 正则表达式设置.pptx | 课件 | 关联 |
| 6 | 任务3.2.6 数据驱动.pptx | 课件 | 循环控制器+If+CSV |
| 7 | 任务3.2.7 Cookie设置.pptx | 课件 | Cookie 管理器 |
| 8 | 任务3.2.8 授权设置.pptx | 课件 | Basic/Digest 授权 |
| 9 | 任务3.2.9 测试报告.pptx | 课件 | 聚合报告、HTML 报告 |
实验素材下载
点击下方链接获取本节课全部资源(含课件、任务清单、安装包等): 🔗 夸克网盘


