JMeter教程|0到1学会接口性能压测第7课-关联及正则表达式提取器

发布时间:2026/9/23 6:20:18

JMeter教程|0到1学会接口性能压测第7课-关联及正则表达式提取器 JMeter是一款开源免费的接口性能压测工具在企业中用的较为广泛上节我们学习了JMeter JSON断言知识。今天分享JMeter关联技术后续文章都会系统分享干货带大家从0到1学会JMeter另外还有教程等同步资料文末加小编VX领取即可。01为什么要关联在客户端与服务器通信过程中多个请求/响应间的数据会有相互依赖的关系。比如上一个请求返回的 某些响应数据在后续的请求中需要用到。下面是一些典型的例子1) 比如第一次访问网站获取的session id在后续的请求都会将其传给网站;2) 服务器生成token返回给用户在后续的请求中要带上token;3) 根据条件查询某记录在查询结果集中选择记录进行操作(比如删除)...但是有些通信协议是无状态的不存在上下文相关性。多个请求/响应之间的数据不能直接进行传递; 并且每次服务器返回的数据不是一成不变的传递的数据不能通过硬编码(写死)保存来解决。比如上面三种情况都会产生动态变化的数据1) session id的生命周期一般在关闭浏览器时就结束了每次打开浏览器访问返回的session id并不相同;2) token也有生命周期一般也是随机无状态的;3) 若查询条件参数化了或服务器返回的查询结果集改变了后续的操作可能会失败。在这些情况下可以考虑将服务器返回的动态变化的数据保存到某个参数中需要时再从中取出。02关联原理举个例子看电影看电影过程有如下步骤1. 购票2. 验票3. 观影每个步骤可以看做一个请求/响应。观众相当于客户端影院方相当于服务器。过程如下图所示观众购买的电影票可以看成服务器返回的响应数据要验票通过才能入场观影。观众购票相当于一个请求验票是下一个请求这需要将上一个请求返回的响应数据(电影票)放在下 一个请求中发送给服务器处理。假设这部电影非常精彩想重新再看一次因为电影票只能使用一次观众必须重新购票才能验票通 过入场;使用第一次购买的电影票入场肯定会被拒之门外。为了解决这个问题可以考虑做如下假设每次将购买的电影票放入随身携带的LV钱包并且在放入之前将使用过的票丢弃以防止入场时掏错 票;入场的时从钱包中取出票来验票这样就万无一失了。将电影票放入钱包中相当于将服务器返回的数据保存起来了这里钱包就是保存关联数据的参数。03关联的定义将服务器返回的数据包中满足条件的数据保存到一个参数中的过程。怎样将服务器返回的数据保存起啦JMeter中可以使用后置处理器来处理关联数据常见的方法有1. 正则表达式提取器2. JSON提取器关联数据的特征怎样确定哪些数据是需要做关联的可以从关联数据的特征来识别出这些数据,关联数据有如下三个特征1. 服务器返回需要关联的数据一定是从服务器返回的。客户端输入的数据不需要进行关联比如输入的用户名与密码,此特征是必选的。2. 数据会再次发送给服务器处理保存上一个请求响应的数据其目的是为了将其用于下一个请求中否则保存起来没有意义。此特征是可选特征也就是说不再次发送也是可以保存数据进行关联的。3. 数据动态变化上一个请求响应的数据若不会动态变化完全可以写死在脚本中不需要花力气额外保存再次取出。正是由于每次返回的数据动态变化我们需要根据某种规则将这些动态变化的数据找出来保存 然会取出实际返回的数据,但此特征也是可选的,不动态变化一样可以保存进行关联但意义不大。04正则表达式介绍JMeter通过内嵌的Apache Jakarta ORO软件来解析处理正则表达式。Jakarta-ORO是用于处理文本的一组Java类是目前功能最全性能最好的正则表达式API之一它提 供兼容Perl5类型的正则表达式。扩展正则表达式05正则表达式提取器1、Apply to配置项与响应断言中用法一致不再赘述。2、Field to check配置项2.1 BodyResponse Body比如HTTP响应报文的实体主体不包含状态行与首部。2.2 Body(unescaped)Response Body(转换了转义字符)对HTTP响应报文的实体主体中的所有HTML转义字符进行了转义处理。由于转义时没有参照上下文在处理时可能会出错并且开启此选项会严重影响性能故不建议使用。2.3 Body as a Document通过Apache Tika从各种类型的文档中提取文本。此选项开启也会严重影响性能谨慎使用。2.4 Response Headers一般用于HTTP请求HTTP响应报文中的首部。2.5 Request Headers一般用于HTTP请求HTTP请求报文中的首部。2.6 URL一般用于HTTP请求。HTTP请求报文中的请求URL地址(未开启重定向功能);若开启了重定向功能 则包含原始请求中的请求URL地址与重定向后的URL地址。比如前面访问新浪的例子开启了重定向后则包括http://www.sina.com/http://www.sina.com.cn/和https://www.sina.com.cn/三个URL地址。2.7 Response code一般用于HTTP协议指的是HTTP响应报文中的状态码比如200、301、404等。2.8 Response Message一般用于HTTP协议指的是HTTP响应报文中的原因短语比如OK、Moved Permanently、Not Found等。Name of created variable用于存储结果的JMeter变量的名称。Regular Expression用于解析响应数据的正则表达式。使用正则表达式中的()来捕获响应字符串。可以使用一组或多组()来捕获一个或多个字符串。这样的分组称为捕获组每个捕获组都有一个编号与之对应以方便引用捕获组匹配的内容。若有多个捕获组编号规则为从左至右按照“(”出现的顺序从1开始依次递增进行编号123... n还有一个额外编号为0的捕获组用于表示匹配到的整个正则表达式字符串。比如正则表达式((\d{4})-(\d{2})-(\d{2}))\s((\d{2}):(\d{2}):(\d{2}))捕获组编号1 2 3 4 5 6 7 8响应文本2019-06-25 14:29:30匹配后各捕获组对应的内容如下g12019-06-25 g22019g306 g425 g514:29:30g614 g729 g830g02019-06-25 14:29:30Template($i$ where i is capturing group numberstarts at 1)Match No.(0 for Random)匹配序号从匹配的结果中怎样挑选匹配项 若正则表达式每个捕获组有多个匹配项。则1表示第一个匹配项2表示第二个匹配项... 依次类推;0表示从多个匹配项中随机选择一个;-i(i123... N-i即负整数)表示引用所有的匹配项。若有多个捕获组并且引用每个捕获组所有的匹配项则可以看是一个二维数组。假设捕获组为g1g2g3... gn;每个捕获组匹配项编号为123... m; 保存结果的JMeter变量为refName则refName_m_gn表示第n个捕获组中的第m个匹配项。比如refName_1_g1 表示第1个捕获组中的第1个匹配项;refName_2_g1 表示第1个捕获组中的第2个匹配项;...refName_1_g2 表示第2个捕获组中的第1个匹配项;refName_2_g2 表示第2个捕获组中的第2个匹配项;...Default Value如果正则表达式没有匹配到内容则保存结果的JMeter变量将设置为默认值这样会对调试JMeter 测试带来便利。如果没有提供默认值则很难判断正则表达式是否匹配失败或者RE元素是否未处理 或者是否使用了错误的变量。但是如果您有多个设置相同变量的测试元素那么如果表达式不匹配您可能希望保持变量不变。在 这种情况下请在调试完成后删除默认值。Use empty default value如果选中该复选框则默认值为空则JMeter会将保存结果的JMeter变量设置为空字符串。下期分享JMeter JSON提取器知识敬请关注
延伸阅读

更多相关文章

2026/9/23 6:20:11

Java Web开发中8080端口占用的排查与解决方案

1. 问题现象解析:单项目运行时的8080端口占用刚接触Java Web开发的新手常会遇到一个诡异现象:明明IDE里只启动了一个Tomcat服务,运行netstat -ano命令却显示8080端口已被占用。这种"幽灵占用"往往让开发者一头雾水——我确定没有启…

2026/9/23 6:17:36

BERT模型原理与实战:从入门到工业级应用

1. 为什么BERT值得你花时间学习?2018年那个秋天,当谷歌的研究团队放出BERT论文时,整个NLP圈子都炸了锅。我在第一次跑通BERT-base模型的那个深夜,看着屏幕上跳出的92.1%准确率(比之前最优模型直接高出7个点&#xff09…

2026/9/23 6:17:36

Claude-Code终端工作流:基于git/npm的AI编程协作者搭建指南

1. 项目概述:这不是一个“工具”,而是一套可嵌入终端的AI编程协作者工作流 Claude-Code 不是某个现成的.exe安装包,也不是点开就能用的图形界面软件——它本质上是一套围绕 Anthropic 官方 Claude SDK 构建、专为开发者终端环境深度优化的命…

2026/9/23 6:17:36

Agent技能体系搭建实战:从Function Calling到规范化技能库设计

1. 从“会说话”到“能干活”:Agent技能体系到底在解决什么问题这几年做大模型应用,一个感受特别深:模型本身再聪明,不接上“手脚”也干不了实事。你让GPT-4o写一首诗、总结一篇文章,它做得不错;但你要是让…

2026/9/23 6:17:36

Maxwell电机参数化建模核心技术解析

1. 项目背景与核心价值电机参数化建模是现代机电系统设计中的关键技术突破。作为从业十余年的电机设计工程师,我亲历了从传统手工绘图到全参数化设计的完整演进过程。Maxwell作为电磁场仿真领域的标杆工具,其参数化建模能力直接决定了电机设计效率与创新…

2026/9/23 6:17:36

SAP混合型生产订单成本控制模式解析

1. 生产订单成本控制模式解析在制造业成本管理实践中,CO(Controlling)模块的生产订单成本控制存在三种典型形态:标准PP生产订单、内部订单以及本文要探讨的混合型生产订单。这种特殊形态的生产订单在实际业务中确实较为少见&#…

2026/9/23 6:12:35

别被超大屏幕智能手机带偏:前端适配保姆级教程与避坑指南

别被超大屏幕智能手机带偏:前端适配保姆级教程与避坑指南 看了一堆教程还是不会写项目?这种无力感我懂。视频里代码跑通了,一到真实场景就抓瞎。这篇 保姆级教程 专门针对 超大屏幕智能手机 的适配难题,帮你从根源上解决布局崩坏问题。…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码