当前位置: 首页 > 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.xdnf.cn/news/1391311.html

相关文章:

  • Free Subtitles-免费AI在线字幕生成工具,支持111种语言
  • selenium自动下载更新浏览器对应的webdriver
  • Spring AOP:JDK与CGLIB代理机制解析
  • 数据结构(C语言篇):(五)单链表算法题(上)
  • 对于牛客网—语言学习篇—编程初学者入门训练—函数类型:BC156 牛牛的数组匹配及BC158 回文数解析
  • 美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
  • GPFS性能优化
  • Skywork:昆仑万维推出天工超级智能体
  • vue3 表单项不对齐的解决方案
  • Custom SRP - LOD and Reflections
  • 【AI】常见8大LLM大语言模型地址
  • SPSA为什么要求三阶可导
  • 事务和锁(进阶)
  • 对接连连支付(七)-- 退款查询
  • C++ 线程安全初始化机制详解与实践
  • Elasticsearch核心配置与性能优化
  • 从零开始的python学习——常量与变量
  • 复杂保单信息如何自动提取
  • 【新启航】3D 逆向抄数的工具技术与核心能力:基于点云处理的扫描设备操作及模型重建方法论
  • Java面试现场:Spring Boot+Redis+MySQL在电商场景下的技术深度剖析
  • Shell 编程基础(续):流程控制与实践
  • Python Imaging Library (PIL) 全面指南:PIL图像处理异常处理与优化
  • 数据结构:选择排序 (Selection Sort)
  • JavaScript 中,判断一个数组是否包含特定值
  • 【完整源码+数据集+部署教程】停车位状态检测系统源码和数据集:改进yolo11-DCNV2-Dynamic
  • 机器学习入门,从线性规划开始
  • 基于 Selenium 和 BeautifulSoup 的动态网页爬虫:一次对百度地图 POI 数据的深度模块化剖析
  • el-table实现双击编辑-el-select选择框+输入框限制非负两位小数
  • SQL知识
  • Python的一次实际应用:利用Python操作Word文档的页码