发布时间:2026/8/4 10:38:22
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/8/4 10:38:22

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

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

2026/8/4 11:13:23

Linux网络数据接收机制与性能调优实战

1. 网络数据接收核心机制解析当我们需要从网络接口获取数据时,系统底层究竟发生了什么?这个看似简单的操作背后,隐藏着一套精密的网络协议栈协作机制。今天我们就来深入剖析网络数据接收(net_recv)的全过程&#xff0c…

2026/8/4 11:13:23

如何快速配置2048游戏AI:3步实现自动高分通关

如何快速配置2048游戏AI:3步实现自动高分通关 【免费下载链接】2048-ai AI for the 2048 game 项目地址: https://gitcode.com/gh_mirrors/20/2048-ai 2048是一款风靡全球的数字益智游戏,而2048-ai项目为你提供了一个强大的AI助手,能够…

2026/8/4 11:13:23

用 Charles 看懂 AI 对话“逐字回复”:客户端视角的 SSE 流式渲染

用 Charles 看懂 AI 对话“逐字回复”:客户端视角的 SSE 流式渲染 ┌──────────────────┐ ┌───────────────────┐ ┌──────────────────┐ ┌────────────────┐ │ App / …

2026/8/4 11:13:23

解决Windows下npm.ps1数字签名缺失警告的完整指南

1. 问题现象解析:npm.ps1数字签名缺失警告当你在Windows系统上安装Node.js后尝试运行npm命令时,可能会遇到这样的安全警告:"未对文件 D:\node-v24.14.0-win-x64\node-v24.14.0-win-x64\npm.ps1 进行数字签名"。这个错误本质上是Win…

2026/8/4 11:13:23

12个新职业来了,入门岗却在缩水——AI时代新人如何启航

7月初,人社部公示12个新职业,具身智能机器人应用技术员、智能体开发员、数字孪生工程技术人员赫然在列;几乎同时,斯坦福大学数字经济研究中心发布数据:22至25岁年轻人在AI高暴露职业中的就业人数正以每年超4%的速度萎缩…

2026/8/4 11:08:23

动态IP到底是什么?动态IP的使用方法

“动态IP”到底是啥? 简单说,动态IP就是会变动的IP地址。当你连接网络、拨号或切换代理时,获取的IP地址不是固定的,而是从一个IP池中动态分配来的。 你可以把它理解为:每次“上线”,你的网络身份就变了个样…

2026/8/3 21:14:30

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/4 0:02:01

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…