当前位置: 首页 > news >正文

Meter 接口测试核心实操:参数化、接口关联、响应断言、鉴权

JMeter 接口测试核心实操:参数化、接口关联、响应断言、鉴权

适合测试面试口述,附带操作步骤、常见踩坑,结合证券业务场景举例。

整体场景案例

业务流程:登录接口 → 获取 token (鉴权) → 查询持仓接口(依赖 token)

  1. 登录:账号密码参数化

  2. 提取登录返回 token(接口关联)

  3. token 放入请求头实现鉴权

  4. 接口增加断言,校验返回是否成功

一、前置基础结构

测试计划结构标准搭建

plaintext

测试计划 └── 线程组 ├── HTTP信息头管理器(公共请求头) ├── 用户定义的变量(可选全局变量) ├── HTTP请求1:登录接口 │ ├── 【正则表达式提取器】提取token │ └── 【响应断言】登录成功校验 └── HTTP请求2:查询持仓接口(使用token鉴权) └── 【响应断言】校验持仓数据

1、参数化(4 种常用方式)

作用:使用多组数据循环调用接口,避免写死账号密码,实现数据驱动测试

方式 1:用户定义的变量(静态参数,少量数据)

添加 → 配置元件 → 用户定义的变量

例:username=test01,password=123456

引用方式:${username}

缺点:所有线程共用同一套数据,不适合多用户并发

方式 2:CSV 数据文件设置【工作最常用⭐】

适用:大批量账号、多组测试数据

  1. 新建 csv 文件 user.csv

plaintext

account,pwd user001,123456 user002,654321 user003,888888
  1. 添加 → 配置元件 → CSV 数据文件设置

  • 文件名:填写 csv 路径

  • 变量名称:account,pwd(和表头一一对应)

  • 分隔符:,

  • 循环读取:False(读完停止)

  1. 请求中引用:${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 请求下,作为子元件)

  • 引用名称:token

  • JSON 路径表达式:$.data.accessToken

  • 匹配数字:1(取第一个)

后续接口直接使用${token}

✅ 正则表达式提取器(非 json、html 文本使用)

  • 引用名称:token

  • 正则表达式:"accessToken":"(.+?)"

  • 模板:$1$

  • 匹配数字:1

常见问题:提取为空!排查顺序:

  1. 查看取样器结果,确认响应报文存在字段

  2. json 路径 / 正则写错

  3. 提取器放置层级错误(必须是上一级请求的子节点)

3、鉴权实现(Token 登录鉴权两种方案)

方案 1:请求头携带 Token(90% 接口使用)

  1. 添加【HTTP 信息头管理器】

  2. 添加头:Authorization值:Bearer ${token}

如果后台不需要 Bearer,直接填写${token}

⚠️ 放置位置:

  • 全局头:线程组下,所有请求生效

  • 局部头:单个请求下,仅当前接口生效

方案 2:参数鉴权(token 放在请求参数 / 请求体)

直接在 POST json body 中写入"token":"${token}"

拓展:Cookie 鉴权

添加【HTTP Cookie 管理器】自动管理 session,无需手动提取。

4、断言:自动判断接口是否成功

作用:自动校验响应结果,不依赖肉眼看返回,自动化测试必备

4.1 响应断言(通用)

添加 → 断言 → 响应断言

常用配置:

  1. 测试字段:响应代码 → 模式 200(校验 http 状态码)

  2. 测试字段:响应代码 → 测试模式:200

  3. 业务校验:测试字段 = 响应内容,测试模式code":200

匹配规则说明:

  • 等于:完全一致

  • 包含:响应中包含该字符串(最常用)

4.2 JSON 断言(推荐,json 接口)

针对返回 json 做精准校验

示例:

预期值{"code":200}

可以校验状态码、返回信息,支持精准 JSON 比对。

4.3 JSR223 断言(高级)

写 groovy 代码,可以做复杂逻辑判断:数值范围、多个条件组合,性能测试常用。

断言结果查看

添加【察看结果树】,失败请求标红,可查看断言错误原因。

5、完整串联实操步骤(可直接面试口述流程)

  1. 创建线程组

  2. 添加【CSV 数据文件设置】实现账号参数化

  3. 新建登录 HTTP 请求,填入 url、请求方式,参数使用${account}${pwd}

  4. 登录请求下新增【JSON 提取器】提取 accessToken

  5. 线程组添加【HTTP 信息头管理器】Authorization: Bearer ${token}

  6. 登录请求添加【JSON 断言】校验登录成功 code=200

  7. 创建下游业务接口(查询持仓),自动携带 token 鉴权

  8. 给业务接口增加响应断言,校验业务数据正常

  9. 添加察看结果树、汇总报告,运行调试

6、高频面试问题 & 坑点

Q1:JSON 提取器取不到值怎么排查?

  1. 检查提取器层级,必须是该 HTTP 请求的子元件

  2. 察看结果树确认接口实际响应正常,没有报错

  3. json 路径表达式书写错误,区分大小写

  4. 接口响应延迟,建议增加超时时间

Q2:参数化 csv 多个线程重复读取同一行数据?

答:CSV 设置中,是否允许循环读取;并发场景如果每个用户独立数据,调整共享模式;

CSV 数据集配置【共享模式】:

  • 所有线程:所有线程共用文件(容易重复)

  • 当前线程组:每个线程组独立读取

  • 当前线程:每个线程独立顺序读取(多用户并发首选)

Q3:HTTP 信息头管理器放线程组下不生效?

确认:没有同名头在单个请求内部覆盖全局头。

Q4:关联的时候,登录接口失败,后续接口大量报错?

解决方案:使用【If 控制器】或者 JSR223,登录失败终止线程,避免无效请求。

7、拓展进阶(证券测试场景加分项)

  1. JSR223 PreProcessor:预处理参数、加密(很多证券接口请求体需要 RSA 加密)

  2. JSR223 PostProcessor:复杂返回数据处理

  3. 定时器:添加思考时间模拟真实用户

  4. 可以结合证券业务:登录→获取 token→查询持仓、委托下单接口整套链路自动化

如果你需要,我可以输出一份可直接背诵的面试问答题版本(10 道 JMeter 接口测试高频题),或者给你一套

http://www.jsqmd.com/news/1325325/

相关文章:

  • 浙江电气工程项目哪家效果好? - 中媒介
  • 阿里云oss存储桶
  • ZFX山海证券:把服务体系做扎实,注重效率的使用者更容易感受到的框架
  • 从信号塔到智能节点:深入解析基站构成、工作原理与5G演进
  • Unity航天器自动对接系统实战:从轨道力学到6DoF控制
  • 从固件到应用:Mend.io实现SBOM全链路管理
  • Spring Boot @ConditionalOnProperty注解:配置驱动Bean加载的实战指南
  • 7个步骤掌握NVIDIA驱动隐藏参数调校:深度解析NVIDIA Profile Inspector
  • 嵌入式通信协议实战指南:从UART、I2C、SPI到CAN的选型与调试
  • STM32 DMA串口通信实战:从原理到避坑指南
  • 从 MDM 到智能化设备管理:WWDC 2026 带来的 Apple 企业管理新趋势与实践
  • 电商平台开发技术支持全解,行业常见问题与标准化服务指南
  • 如何快速掌握Blender 3MF插件:面向3D打印爱好者的完整实用指南
  • 论文提交前的细节检查与常见错误规避
  • Python机器学习在新能源汽车销量预测中的应用
  • JDK环境变量配置全解析:从原理到实战,解决常见配置难题
  • YOLOE-26:融合开放词汇能力的实时实例分割模型设计与实践
  • 上海AI Lab提出MemHarness框架:像人类一样重构经验,显著提升LLM Agent决策能力
  • PyTorch requires_grad_() 深度解析:梯度冻结与解冻的陷阱与最佳实践
  • SpringBoot+Vue语言考试报名系统架构设计与高并发实践
  • Python asyncio并发编程核心原理与实践指南
  • 白盒测试覆盖方法全解析:从语句覆盖到路径覆盖的工程实践
  • 2026年芜湖市高新技术企业申报时间批次、条件、奖补
  • 有哪些省 Token 的方案?大模型降本的语义缓存实战
  • 5MW永磁直驱风电系统与混合储能技术解析
  • Unity脚本编译与IL2CPP转换:从C#源码到原生代码的完整流程解析
  • 如何在越南成功管理跨国人力资源?
  • 如何撰写高质量技术博客:内容策划指南
  • 护网行动实战指南:红蓝紫队攻防演练全解析
  • LeetCode hot 100 — 11. 盛最多水的容器