Meter 接口测试核心实操:参数化、接口关联、响应断言、鉴权
JMeter 接口测试核心实操:参数化、接口关联、响应断言、鉴权
适合测试面试口述,附带操作步骤、常见踩坑,结合证券业务场景举例。
整体场景案例
业务流程:登录接口 → 获取 token (鉴权) → 查询持仓接口(依赖 token)
登录:账号密码参数化
提取登录返回 token(接口关联)
token 放入请求头实现鉴权
接口增加断言,校验返回是否成功
一、前置基础结构
测试计划结构标准搭建
plaintext
测试计划 └── 线程组 ├── HTTP信息头管理器(公共请求头) ├── 用户定义的变量(可选全局变量) ├── HTTP请求1:登录接口 │ ├── 【正则表达式提取器】提取token │ └── 【响应断言】登录成功校验 └── HTTP请求2:查询持仓接口(使用token鉴权) └── 【响应断言】校验持仓数据
1、参数化(4 种常用方式)
作用:使用多组数据循环调用接口,避免写死账号密码,实现数据驱动测试
方式 1:用户定义的变量(静态参数,少量数据)
添加 → 配置元件 → 用户定义的变量
例:username=test01,password=123456
引用方式:${username}
缺点:所有线程共用同一套数据,不适合多用户并发
方式 2:CSV 数据文件设置【工作最常用⭐】
适用:大批量账号、多组测试数据
新建 csv 文件 user.csv
plaintext
account,pwd user001,123456 user002,654321 user003,888888
添加 → 配置元件 → CSV 数据文件设置
文件名:填写 csv 路径
变量名称:
account,pwd(和表头一一对应)分隔符:
,循环读取:False(读完停止)
请求中引用:
${account}${pwd}
面试坑点:csv 文件不要带中文、路径不要有空格;注意编码 UTF-8。
方式 3:函数助手 _Random(随机参数)
${__Random(1000,9999,)}随机数字,用于生成随机订单号
方式 4:JDBC 请求参数化(数据库读取数据)
从 MySQL 查询账号作为入参,适合证券业务真实存量账户。
2、接口关联(核心!提取上一个接口返回值给下一个接口使用)
场景:登录返回 token,下游所有接口需要携带 token
三种提取器:正则表达式提取器、JSON 提取器(优先使用)、边界提取器
✅ JSON 提取器(推荐,JSON 接口标配)
登录接口返回示例
json
{ "code":200, "data":{ "accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }, "msg":"success" }配置(放在登录 HTTP 请求下,作为子元件)
引用名称:
tokenJSON 路径表达式:
$.data.accessToken匹配数字:
1(取第一个)
后续接口直接使用${token}
✅ 正则表达式提取器(非 json、html 文本使用)
引用名称:token
正则表达式:
"accessToken":"(.+?)"模板:
$1$匹配数字:1
常见问题:提取为空!排查顺序:
查看取样器结果,确认响应报文存在字段
json 路径 / 正则写错
提取器放置层级错误(必须是上一级请求的子节点)
3、鉴权实现(Token 登录鉴权两种方案)
方案 1:请求头携带 Token(90% 接口使用)
添加【HTTP 信息头管理器】
添加头:
Authorization值:Bearer ${token}
如果后台不需要 Bearer,直接填写
${token}
⚠️ 放置位置:
全局头:线程组下,所有请求生效
局部头:单个请求下,仅当前接口生效
方案 2:参数鉴权(token 放在请求参数 / 请求体)
直接在 POST json body 中写入"token":"${token}"
拓展:Cookie 鉴权
添加【HTTP Cookie 管理器】自动管理 session,无需手动提取。
4、断言:自动判断接口是否成功
作用:自动校验响应结果,不依赖肉眼看返回,自动化测试必备
4.1 响应断言(通用)
添加 → 断言 → 响应断言
常用配置:
测试字段:响应代码 → 模式 200(校验 http 状态码)
测试字段:响应代码 → 测试模式:200
业务校验:测试字段 = 响应内容,测试模式
code":200
匹配规则说明:
等于:完全一致
包含:响应中包含该字符串(最常用)
4.2 JSON 断言(推荐,json 接口)
针对返回 json 做精准校验
示例:
预期值{"code":200}
可以校验状态码、返回信息,支持精准 JSON 比对。
4.3 JSR223 断言(高级)
写 groovy 代码,可以做复杂逻辑判断:数值范围、多个条件组合,性能测试常用。
断言结果查看
添加【察看结果树】,失败请求标红,可查看断言错误原因。
5、完整串联实操步骤(可直接面试口述流程)
创建线程组
添加【CSV 数据文件设置】实现账号参数化
新建登录 HTTP 请求,填入 url、请求方式,参数使用
${account}${pwd}登录请求下新增【JSON 提取器】提取 accessToken
线程组添加【HTTP 信息头管理器】Authorization: Bearer ${token}
登录请求添加【JSON 断言】校验登录成功 code=200
创建下游业务接口(查询持仓),自动携带 token 鉴权
给业务接口增加响应断言,校验业务数据正常
添加察看结果树、汇总报告,运行调试
6、高频面试问题 & 坑点
Q1:JSON 提取器取不到值怎么排查?
检查提取器层级,必须是该 HTTP 请求的子元件
察看结果树确认接口实际响应正常,没有报错
json 路径表达式书写错误,区分大小写
接口响应延迟,建议增加超时时间
Q2:参数化 csv 多个线程重复读取同一行数据?
答:CSV 设置中,是否允许循环读取;并发场景如果每个用户独立数据,调整共享模式;
CSV 数据集配置【共享模式】:
所有线程:所有线程共用文件(容易重复)
当前线程组:每个线程组独立读取
当前线程:每个线程独立顺序读取(多用户并发首选)
Q3:HTTP 信息头管理器放线程组下不生效?
确认:没有同名头在单个请求内部覆盖全局头。
Q4:关联的时候,登录接口失败,后续接口大量报错?
解决方案:使用【If 控制器】或者 JSR223,登录失败终止线程,避免无效请求。
7、拓展进阶(证券测试场景加分项)
JSR223 PreProcessor:预处理参数、加密(很多证券接口请求体需要 RSA 加密)
JSR223 PostProcessor:复杂返回数据处理
定时器:添加思考时间模拟真实用户
可以结合证券业务:登录→获取 token→查询持仓、委托下单接口整套链路自动化
如果你需要,我可以输出一份可直接背诵的面试问答题版本(10 道 JMeter 接口测试高频题),或者给你一套