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

性能测试-jmeter7-元件提取器

课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师

性能测试-jmeter元件提取器

  • 接口之间如何通信和关联?
    • 常用的关联方式
      • 正则表达式提取器
      • XPath提取器
      • JSO提取器
  • 如何全局变量通信呢?
    • 跨线程组关联
    • 为什么需要跨线程组关联?
    • 两种引用变量方式
      • 1. 使用属性(Properties)共享数据(最常用方法)
      • 2.​​在目标线程组中通过属性引用数据​
  • 实践是检验真理的唯一标准


接口之间如何通信和关联?

当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。通过一些组件来处理关联。
在这里插入图片描述

常用的关联方式

正则表达式提取器

正则表达式提取器​​是JMeter的​​后置处理器​​,用于从服务器返回的响应数据(如HTML、JSON、文本等)中​​提取指定内容(如ID、Token、动态参数等)​​,并将提取的值保存为​​JMeter变量​​,供后续请求引用。
简单工作流程​​
1.触发​​:在需要提取数据的请求后添加此提取器(如登录接口返回的Token需提取)。
2.​​提取​​:根据正则表达式从响应内容中匹配目标数据(如 “token”:"(.+?)"匹配 “token”:"abc123"中的 abc123)。
3.存储​​:将匹配到的值(如 abc123)保存到变量(如 ${token})。
4.复用​​:后续请求通过 ${token}直接引用该值(如传参到其他接口)。
正则表达式介绍:

<title>百度一下,你就知道</title><title>百度一下,你就知道</title><title>. *?</title>. : 是通配符,可以代表任意字符(除换行回车)*: 代表前面的字符出现0次或者多次.*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边

在这里插入图片描述
实验:
在这里插入图片描述

在这里插入图片描述

XPath提取器

XPath(XML Path Language)​​ 是一种用于在 ​​XML/HTML 文档​​中​​定位节点(元素、属性、文本等)的语言​​,通过路径表达式精准查找目标数据。在 JMeter 中,它被广泛用于 ​​XPath 提取器​​,从接口返回的 XML 或 HTML 响应中提取关键信息(如 Token、用户 ID、动态参数等)。
​一、基础语法回顾​​
•节点选择​​:
•/从根节点开始逐级查找(绝对路径)
•//从任意层级查找(相对路径,不关心父节点结构)
•​​属性筛选​​:[@属性名=‘属性值’](如 [@id=‘username’])
•文本内容提取​​:/text()(获取节点内的纯文本)
•​​多条件组合​​:用 and(如 [@class=‘item’ and @status=‘active’])
在这里插入图片描述

JSO提取器

JSON 提取器(JSON Extractor)​​ 是 JMeter 的​​后置处理器​​,专门用于从 ​​JSON 格式的响应数据​​(如接口返回的 { “key”: “value” })中​​提取指定字段的值​​,并将提取结果保存为 ​​JMeter 变量​​,供后续请求或断言使用。
(1)基础符号​​

  • $​​:表示 JSON 数据的根节点(所有路径从这里开始)。
  • .或 []​​:访问对象的属性或数组的元素。
  • 对象属性:$.key(如 $.name提取 { “name”: “Alice” }中的 Alice)。
  • 数组元素:$.array[0](如 $.users[0].id提取数组 users的第一个元素的 id)。
JSON 示例目标字段JSONPath 表达式说明
{ "token": "abc123", "status": "success" }提取 token 的值$.token直接取根节点下的 token 字段。
{ "data": { "userId": 1001, "name": "Bob" } }提取 data 下的 userId$.data.userId嵌套对象:用 . 逐级访问。
{ "users": [ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ] }提取第一个用户的 name$.users[0].name数组索引从 0 开始([0] 是第一个)。
{ "products": [ { "id": 101, "price": 99 }, { "id": 102, "price": 199 } ] }提取所有产品的 id$.products[*].id[*] 表示数组所有元素。
{ "code": 200, "message": "OK" }提取 message$.message根节点下的直接字段。

实验:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/221ba02497534c7486f741e4ea7777ca.png
在这里插入图片描述
重点json提取器,xpath提取器,正则表达式提取器都是在同一个线程组进行保存变量提取的

如何全局变量通信呢?

跨线程组关联

跨线程组关联是指在JMeter测试计划中,​​将一个线程组(Thread Group)中获取的动态数据(如Token、用户ID等)传递给另一个线程组使用​​,以实现不同线程组之间的数据共享和关联。

为什么需要跨线程组关联?

在复杂的测试场景中,经常有以下需求:

  • 登录线程组获取的Token需要在后续业务线程组中使用
  • 用户注册线程组生成的用户ID需要在用户信息查询线程组中引用
  • 多个线程组模拟完整业务流程,前序线程组产生的数据被后续线程组依赖

两种引用变量方式

1. 使用属性(Properties)共享数据(最常用方法)

// BeanShell/JSR223脚本示例(JSR223推荐使用Groovy语言)
vars.put("extractedToken", "your_extracted_value"); // 先存到变量
props.put("globalToken", vars.get("extractedToken")); // 再存到属性

2.​​在目标线程组中通过属性引用数据​

${__P(globalToken,)}
${__property(globalToken)}

常用的方式:​​推荐使用JSR223 + Groovy​​:性能优于BeanShell
实验:
在这里插入图片描述
自动化代码和jmeter的本质核心:
在这里插入图片描述
操作步骤:
在这里插入图片描述
在这里插入图片描述

实践是检验真理的唯一标准

http://www.dtcms.com/a/356706.html

相关文章:

  • 达梦数据库-归档日志(一)
  • 达梦数据库-数据文件 (二)
  • 【ShiMetaPi M4-R1】上手:RK3568B2 |开源鸿蒙(OpenHarmony) 开发板上手指南
  • dm8_静默安装简单快速
  • 第一百零二章:AI的“未来电影制片厂CEO”:多模态系统落地项目实战(完整 AI 视频创作平台)
  • mongoDB学习(docker)
  • MYSQL速通(2/5)
  • 【开题答辩全过程】以 基于Spring Boot的网上家庭烹饪学习系统的设计与实现为例,包含答辩的问题和答案
  • 软考-系统架构设计师 办公自动化系统(OAS)详细讲解
  • LeetCode 完全背包 279. 完全平方数
  • 小程序版碰一碰发视频:源码搭建与定制化开发的源头技术解析
  • Java开发MongoDB常见面试题及答案
  • [TG开发]与Reids集成
  • five86: 2靶场渗透
  • LangChain实战(二):环境搭建与Hello World(国内开源模型版)
  • 互联网大厂Java面试:从基础到微服务云原生的深度解析
  • web3简介
  • 克隆态驱动给用户态使用流程
  • Git 8 ,git 分支开发( 切换分支开发,并设置远程仓库默认分支 )
  • 衡石SENSE 6.0技术解析:Workflow到Agent模式如何重塑计算框架
  • 04数据库约束实战:从入门到精通
  • TI-92 Plus计算器:常规计算功能介绍
  • CAN总线(Controller Area Network Bus)控制器局域网总线(二)
  • 动态UI的秘诀:React中的条件渲染
  • 当门禁系统遇上边缘计算,RK3568核心板如何带来智能化变革
  • [vmware][ubuntu]一个linux调用摄像头截图demo
  • 前端vue框架实现反向代理详解
  • 【网弧软著正版】2025最强软著材料AI生成系统,基于GPT5.0
  • 华硕主板 BIOS 提示——GPT header corruption has been detected
  • 港科大开放世界长时域具身导航!LOVON:足式机器人开放词汇目标导航