如果你在JMeter脚本中看到这样一些符号:(.*?)(\d+),你是否会以为程序出现了乱码?拆开来看每个符号似乎都有固定的含义,组合在一起竟成了令人费解的天书。这些神秘符号究竟蕴含了哪些强大的功能,下面让我们一起来揭开它的面纱。

软件测试工程师必看:如何使用JMeter中的正则表达式?

一、什么是正则表达式

上文提到的特定符号的组合叫做正则表达式,在JMeter工具中用来表达对字符串的一种逻辑过滤。正则表达式的功能分为“提取”和“匹配”,前者用来从字符串中获取我们想要的部分,后者用来将提取到的字符串和一个给定的字符串做比对。正则表达式的好处自然不言而喻,它实现了通过极其简单的方式达到字符串的复杂控制,同时兼具了灵活性与逻辑性。

二、如何添加正则表达式

1、添加正则表达式提取器

HTTP请求->添加->后置处理器->正则表达式提取器。

正则表达式的作用范围为线程组,因此正则表达式的层级应该位于需要提取返回值的请求器下面,即作为请求的子器件,并且需要通过正则表达式进行数据关联的两个请求应放在同一个线程组内。

2、书写正则表达式

正则表达式提取器包含以下元素:

名称:定义了正则表达式的名称

注释:编写脚本时的注解

应用范围:应用于主取样器或子取样器,一般使用默认选项

要检查的响应字段:样本数据源

引用名称:在其他取样器中引用变量的名称,用法为${引用名称}

正则表达式:数据提取器,()里面是响应报文中匹配数据的规则

模板:用$$括起来,如果包含多个正则表达式,111表示提取第一个正则表达式解析出来的值,222表示第二个正则表达式提取结果,等等。

匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字可以看做是数组的第几个元素。-1表示全部,0表示随机,1是第一个,2是第二个,依此类推。

缺省值:如果提取失败,引用变量的默认值,可以为空。

三、如何使用正则表达式

那么,正则表达式要如何使用呢,它有哪些常见的使用场景呢,下面让我们通过几个例子来学习正则表达式的用法。

场景一:获取网站登录信息Token

我们在使用JMeter录制web脚本时,常常需要使用Token作为用户身份鉴别的标志。Token是服务端为每个用户创建的一个令牌,当该用户第一次登录时,将服务端生成的Token带回客户端,以后客户端请求只需带上这个Token,服务端就能识别出请求方的身份,而无需再次验证用户名和密码。

那么,Token如何获取,又如何动态赋值给下一个请求呢。这里,我们给登录会话添加一个正则表达式提取器。

首先,从登录会话的返回报文中,找到"token: “,然后在脚本中添加正则表达式提取器,引用名称为token,正则表达式为"token”:"(.?)",模板为111。这个正则表达式的含义是,()中封装了待返回的字符串,.表示匹配任意字符串,?表示匹配零次或多次后停止。完整的含义是:匹配开始字符为: “,结束字符为最后一个”,匹配两个引号之间的任意字符,匹配一次或者多次,当匹配到第一个字符串即停止,将字符串保存到变量token。

软件测试工程师必看:如何使用JMeter中的正则表达式?
在下一个查询交易请求中,可以直接使用变量token关联token信息。线程组循环多次执行,{token}关联token信息。线程组循环多次执行,token关联token信息。线程组循环多次执行,{token}始终保持当前登录状态的取值,并赋值给查询交易的请求。

场景二:性能测试循环使用数据

在进行性能测试时,某些特殊的场景往往导致数据不能循环使用,或者有使用次数限制,而高并发压力测试需要庞大的数据量,因此准备数据费时费力。这时,将两个“反向”的交易串联起来,便可轻松解决数据循环使用的困难。比如做理财购买交易的性能测试时,随着测试轮次的增加,账户余额越来越少,如何方便快捷地实现资金回退呢。根据不同理财产品业务逻辑的差异,有卖出和撤单两种选择。假如当前产品支持实时持有,让客户买完再卖出,相当于前面的购买行为被抵消了。

在设计测试脚本时,需要把购买和卖出请求放在同一个线程组里。首先设计正则表达式,通过"NUM_SEQ_AR “:”(\d+)"提取买入成功返回的合约号,\d表示提取纯数字,一般金融机构合约号都是数字形式存储。

然后通过${Seq}引用合约号,作为卖出交易的输入数据,客户账户信息可以和买入交易来自同一个CSV文件,实现前后交易一致。

通过添加JMeter调试工具,后置处理器->Debug PostProcessor,观察正则表达式运行情况。

正则表达式提取合约号与买入返回报文一致,正则表达式书写正确。

正则表达式看着复杂,其实只要理解了它的用法,在实际使用场景中只需具体问题具体分析,结合资料多动手实践,不管多棘手多复杂的问题都有办法化解。正则表达式蕴含了强大的功能,本文也只是做了最基本的介绍,同学们可以自行摸索更多用法,让我们的性能测试、接口测试变得更加easy!

文末分享:有需要自动化学习资料的小伙伴可以关注,免费获取这一系列的视频资料和面试文档资料!

等你会了这些互联网最新技术之后,所谓的职场瓶颈几乎已经消失,相信年薪30W+也是很简单的!关键就看你愿不愿意学!

合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!


上面这些是我的收集和整理,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你

你如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以关注微信公众号:【伤心的辣条】,获取软件测试工程师大厂面试资料!

我的学习交流群:902061117 群里有技术大牛一起交流分享~

如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

推荐阅读:

什么样的人适合从事软件测试工作?

谈谈从小公司进入大厂,我都做对了哪些事?

想转行做软件测试?快来看看你适不适合

软件测试从自学到工作,软件测试学习到底要怎样进行?

软件测试工程师简历项目经验怎么写?–1000个已成功入职的软件测试工程师简历范文模板(真实简历)

软件测试工程师必看:如何使用JMeter中的正则表达式?相关推荐

  1. 思科ccna认证工程师必看路由协议IGRP和EIGRP详解

    思科ccna认证工程师必看路由协议IGRP和EIGRP详解单单从他们的名字当中,我们就能猜到他们之间有很多的关联. IGRP: 一种内部网关路由协议,它由Cisco公司八十年代中期设计.使用组合用户配 ...

  2. 思科SP CCNP组播侦听者协议MLD详解想要成为高级网络工程师必看-ielab

    思科SP CCNP组播侦听者协议MLD详解想要成为高级网络工程师必看-ielab,网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段.网桥的两个端口分别有一条独立的交换信道,不是共享一条 ...

  3. 阿里云联手优酷推出工程师必看电影片单,高分烧脑假期必备!

    阿里云联手优酷推出工程师必看电影片单,高分烧脑假期必备! 点这里直接进入观看页面:) 话不多说,上豆瓣简介及评分~ 看不见的客人 "调度上有种将阿加莎小说当代化的直感 谷仓之冰和密室的三重解 ...

  4. 阿里云联手优酷推出工程师必看电影片单,高分烧脑假期必备!...

    阿里云联手优酷推出工程师必看电影片单,高分烧脑假期必备! 点这里直接进入观看页面:) 话不多说,上豆瓣简介及评分~ 看不见的客人 "调度上有种将阿加莎小说当代化的直感 谷仓之冰和密室的三重解 ...

  5. 25个Web前端开发工程师必看的国外大牛和酷站

    逛了一周国外大牛们的博客与酷站,真是满满的钦佩.震撼.羡慕.惊喜---- Web设计是一个不断变化的领域,因此掌握最新的发展趋势及技术动向对设计师来说非常重要.无论是学习新技术,还是寻找免费资源与工具 ...

  6. 手机射频术语完全解析(手机射频工程师、测试工程师必看)

    1. 什么是RF? 答:RF 即Radio frequency 射频,主要包括无线收发信机. 2. 从事手机RF工作没多久的新手,应怎样提高? 答:首先应该对RF系统(如功能性)有个系统的认识,然后可 ...

  7. 计算机中文件访问时间是什么情况,【反计算机取证必看】Windows系统中文件时间属性的变化及影响因素.pdf...

    [反计算机取证必看]Windows系统中文件时间属性的变化及影响因素.pdf ·技术交流· Windows系统中文件时间属性的变化及影响因素 滕冲1,方靖然2,张国臣3(1.中国人民公安大学,北京 3 ...

  8. 户外设备选择远距离蓝牙需要了解的知识-----工程师必看

    户外设备选择远距离蓝牙需要了解的知识-----工程师必看 社会的进步和科技的发展,有一些户外设备方案商在选型和测试蓝牙数传模块时发现距离达不到自己预期值,心里很是着急,要知道传输距离是比较核心的参数, ...

  9. 思科ccie网络工程师必看网络安全技术详解-ielab实验室

    思科ccie网络工程师必看网络安全技术详解-ielab实验室,网络安全威胁是指网络系统所面临的,由已经发生的或潜在的安全事件对某一资源的保密性.完整性.可用性或合法使用所造成的威胁.能够在不同程度.不 ...

最新文章

  1. 计算机二级应用题改卷,全国计算机等级考试二级Python语言程序设计模拟试卷B卷综合应用题-Go语言中文社区...
  2. 云计算如何重塑和简化大规模IT资产
  3. mysql5.7.25数据库安装
  4. 达摩院 2020 预测:工业互联网超融合来袭!
  5. python中列表元素类型可以不同吗_list列表等同于数组,是一种放数据的容器
  6. Android 异常问题分析
  7. 资源放送丨《MySQL在某航空业公司的架构选型演进之路》PPT视频
  8. linux内核模块的编译文件
  9. 剑指 Offer 43. 1~n 整数中 1 出现的次数
  10. RedHat_Linux环境下防火墙配置初级入门
  11. Safari 快捷键
  12. .war vs .ear文件
  13. Android 上千张图片的列表滑动加载
  14. 每日算法系列【LeetCode 328】奇偶链表
  15. 桑心啊,ListT.FindAll()的效率竟然比for循环还差。
  16. Handler+MessageQueue等操作
  17. ad如何设置pcb板子形状_FAQ031:如何将Altium的PCB板子导入CST
  18. mysql mm keeplive_mysql +keeplive
  19. LQR 控制学习-LQR控制 MATLAB官方教程-LQR 控制器_状态空间系统Matlab/Simulink建模分析
  20. java注释规范_Java代码注释规范详解

热门文章

  1. 有道云笔记无法同步至本地电脑解决方法
  2. npm ERR cb() never called报错原因及解决办法
  3. 华为认证考试一定要去报培训班吗?
  4. SpringCloud 微服务工作笔记:validationQuery: SELECT 1 FROM DUAL
  5. 信息系统项目管理师(杂)
  6. 7.项目成本管理+信息系统项目管理+野马合集
  7. China Merchants Bank Beats Rivals In Quality Of Service
  8. 慕容不复_拔剑-浆糊的传说_新浪博客
  9. 【404 App】2.0全新版本正式来袭之ALL模块。
  10. 数据类型和运算符答案