你绝对不知道的JMeter中如何实现接口之间的关联?

news2024/11/19 1:56:02

关联是Jmeter工具中非常重要的一个技术。因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。

图片

比如:用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信息保存下来。还有经常遇到的场景,第二个请求提交的参数要从第一个请求的返回数据中获取。

具体方法:

一、正则表达式提取器

 在默认的测试计划中添加一个线程组,然后添加取样器。

图片

 右键添加后置处理器→正则表达式提取器,正则表达式提取器界面如下:

图片

  • 说明:

    后置处理器:在请求结束或者返回响应结果时发挥作用

    正则表达式提取器:允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。

  • APPly to:作用范围(返回内容的断言范围)

    Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器

    Main sample only:仅作用于父节点的取样器

    Sub-samples only:仅作用于子节点的取样器

    JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

  • 要检查的响应字段:需要检查的响应报文的范围

    主体:响应报文的主体

    Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用

    Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能

    Response Headers:响应信息头

    Request Headers:请求信息头

    URL:统一资源定位符,即Internet上用来描述信息资源的字符串

    响应代码:响应状态码,比如200、404等

    响应信息:响应信息 

  • 引用名称(Reference Name):Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名(例子中我提取的是SOCIAL_NO)

  • 正则表达式(Regular Expression):使用正则表达式解析响应结果,“()”表示提取字符串中的部分值,请不要使用“||”,除非你本身需要匹配这个字符。

        常用的正则表达式操作符:

图片

  • 模板:代表从正则表达式结果引用的样式,其实结果是一组,而不是一个。$0$代表这一组结果的全部,$1$代表这一组结果的第1个,以此类推;$1$$2$代表该正则表达式一组结果中的第1个和第2个,俩结果挨在一起中间没有间隔;$3$,$4$代表该正则表达式一组结果中的第3个和第4个,俩结果间有一个逗号相连。

  • 匹配数字:0代表正则表达式结果组中随机,1代表全部。

  • 缺省值:当引用不对时显示传递的信息,通畅写一个ERROR。

最后,根据上面的说明,完成配置,然后可以先添加一个监视器(查看结果树),检查是否取到了对应的值;提取到的参数,调用时用${sessionid_1},${sessionid_2}...,如果想要得到匹配出的参数的个数,${sessionid_matchNr}。

二、json path postprocessor(JSON Extractor)

用处:

当前接口响应返回的json中提取内容,作为变量可以在不同的请求中传递。如下,从登陆接口返回的json中提取user id,变量名设置为id,在其他请求中可以直接调用这个变量,或者作为post参数。次插件对于restful接口非常好用。

图片

  • Variable names : 名称

  • JSONPath Expression:JSON表达式

  • Match Numbers:匹配哪个,可为空即默认第一个

  • Default Value:未取到值的时候默认值

比如返回值如下:

 

1{
2    "userSession": {
3        "businessCode": "900000",
4        "createTime": "2018-05-25 03:24:17",
5        "userCode": "29feaa3c98014e02bec16c6f448a6459",
6        "userName": "lip-vpn",
7        "sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
8    }
9}

  • 则json表达式为:$.userSession.sessionId

如果返回值是数组,则需要加上数组的位置,如

 

1{
2    "userSession": [
3        {
4            "businessCode": "900000",
5            "createTime": "2018-05-25 03:24:17",
6            "userCode": "29feaa3c98014e02bec16c6f448a6459",
7            "userName": "lip-vpn",
8            "sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
9        }
10    ]
11}

则json表达式为:$.userSession[0].sessionId,提取第一个值。

三、XPath Extractor

Jmeter提供的对关联的支持包括以下2个方面:

①能够将返回页面上的指定内容保存在参数中;(即正则表达式提取器和JSON Extractor)

②能够将GET或POST方法中的数据使用该参数来替换;(XPath Extractor)

  • XPath Extractor的使用方法与正则表达式提取器(Regular Expression Extractor)类似,只不过该Expression中指定的不是正则表达式,而是给定的XPath路径。

  • 后置处理器(Post Processor)本质上是一种对sampler发出请求后接受到的响应数据进行处理(后处理)的方法。必须将后置处理器元件放在合适的位置才能达到预期的效果。

  • 新建一个线程组,然后右键-添加-后置处理器-XPath Extractor:

    图片

  • APPly to:作用范围(返回内容的断言范围)

         Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器

         Main sample only:仅作用于父节点的取样器

         Sub-samples only:仅作用于子节点的取样器

         JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

  • XML Parsing Options:要解析的XML参数

    Use Tidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中;

    Quiet表示只显示需要的HTML页面,Report errors表示显示响应报错,Show warnings表示显示警告;

    Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨;

         Validate XML:根据页面元素模式进行检查解析;

         Ignore Whitespace:忽略空白内容;

          Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容;

  • Return entire XPath fragment of  text content:返回文本内容的整个XPath片段;

  • Reference Name:存放提取出的值的参数。

  • XPath Query:用于提取值的XPath表达式。

  • Default Value:参数的默认值。

  • 正则表达式提取器和XPath Extractor的区别:

①正则表达式提取器可以用于对页面任何文本的提取,提取的内容是根据正则表达式在页面内容中进行文本匹配;

②XPath Extractor则可以提取返回页面任意元素的任意属性;

③如果需要提取的文本是页面上某元素的属性值,建议使用XPath Extractor;

④如果需要提取的文本在页面上的位置不固定,或者不是元素的属性,建议使用正则表达式提取器。

 因此,我汇集了众多测试行业大咖

专门为软件测试人员量身定制了各种类型

 所以这里给大家准备了

这套软件测试到测试开发的视频教程+文档+项目+面试宝典+简历模板。

点击小编主页的推广小卡片验证信息填:000获取

 下面是我整理的2023年最全的软件测试工程师学习知识架构体系图包括

一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九, 银行业务测试

十,大数据测试和业务分析

 

 十一:项目实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1141947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络_04_传输层

文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层 传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看,“传输层”既是面向通信部分的最高层,与下面的三层一起共同构建进行网…

bootstap_小项目

通过bootstrap画一个简单的后台管理页面&#xff0c;知识有限&#xff0c;页面粗糙&#xff0c;一种记录方式 页面效果展示 首页页面代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible&qu…

Uva11059 Maximum Product(最大乘积)

1、题目 Uva 11059 2、题意 输入 n n n 个元素组成的序列 S S S&#xff0c;你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数&#xff0c;应输出0&#xff08;表示无解&#xff09;。 1 ≤ n ≤ 18 &#xff0c; − 10 ≤ S i ≤ 10 1 \le n \le 18&…

测试小白必看!接口测试必需掌握的知识要点!

接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 接口测试原理 通过测试程序模拟客…

SpringBoot中使用JdbcTemplate访问Oracle数据库

Oracle相信大家都不陌生吧&#xff0c;一个大型的数据库&#xff0c;至于数据库&#xff0c;我相信各位都比较熟悉了&#xff0c;一个软件系统&#xff0c;不论是我们常做的App、小程序、还是传统的web站点&#xff0c;我们都有用户的信息&#xff0c;相关业务的数据&#xff0…

公司如何禁止拷贝文件

公司如何禁止拷贝文件 安企神U盘管理系统下载使用 禁止拷贝文件是一种数据安全措施&#xff0c;通常在企业中用于保护重要信息和知识产权。禁止拷贝文件的方法需要根据公司的实际情况来选择和实施&#xff0c;以下是一些常见的方法&#xff0c;可用于防止文件拷贝&#xff1a…

Splunk 之 filed 恢复

1: 背景&#xff1a; 我们在工作过程中&#xff0c;或者是和很多team 进行交互的时候&#xff0c;总会有 filed 共用的情况&#xff0c;还有就是filed 会被相同权限的同事删除等等&#xff0c;这种情况下&#xff0c;就要求做好 /opt/splunk/etc/apps 的备份工作。 如果知道原…

Amazon Lambda 转 Container Image 方式部署

背景描述 对于从 Lambda Console通过 Author from scratch 创建的函数, 可以直接在浏览器中编辑代码和调试, 非常方便. 不过由于 Lambda 函数 Quota 限制 Console 编辑器最大 3MB, 包含 Layer 和自定义 Runtim 后最大 250MB, 并且此配额不支持提限, 因此当函数体量较大时就不适…

基于AI与物联网技术的智能视频监控系统架构剖析

智能视频监控系统正逐渐成为我们日常生活和工作中不可或缺的一部分。基于物联网的智能监控系统架构为我们在各个领域提供了更高效、智能化和安全的监控解决方案。本文将以旭帆科技EasyCVR视频监控云平台为例&#xff0c;介绍基于AI、物联网的智能监控系统的架构&#xff0c;并探…

一网打尽——线粒体基因组高级分析

线粒体堪称生命活动的“能量供给站”&#xff0c;这种存在于大多数细胞中的细胞器&#xff0c;拥有自身的遗传物质和遗传体系&#xff0c;除了为细胞供能之外&#xff0c;线粒体还参与到多种细胞功能过程中&#xff0c;拥有调控细胞生长和细胞周期的能力。 典型的动物线粒体是…

【BUG】Nginx转发失败解决方案

最近在做项目的时候出现了一个问题&#xff0c;琢磨了好久&#xff0c;来浅浅记录一下。 这个项目后端使用的是gateway网关和nacos实现动态的路由&#xff0c;前端使用nginx来管理前端资源&#xff0c;大体流程&#xff1a;浏览器发起请求&#xff0c;经过nginx代理&#xff0c…

智能化燃气场站建设4要点!

关键词&#xff1a;智慧燃气、智慧燃气场站、智慧燃气建设、智慧燃气平台、 设备设施数字化管理平台 建 议 建设智能燃气场站&#xff0c;首先&#xff0c;要调研现有场站&#xff0c;摸清掌握现有场站智能化数据。在现有设施基础上&#xff0c;对现有燃气场站进行技术升级设…

Angular-03:组件模板

各种学习后的知识点整理归纳&#xff0c;非原创&#xff01; 组件模板 ① 数据绑定② 属性绑定③ 类名绑定④ 样式绑定⑤ 事件绑定⑥ 获取原生DOM对象6.1 在组件模板中获取6.2 在组件类中获取 ⑦ 双向数据绑定⑧ 内容投影8.1 select选择器8.2 单槽投影8.3 多槽投影 ⑨ 安全操作…

[开源]传统实体产业提供进销存管理解决方案,助传统企业降本增效

一、开源项目简介 管店云, 技术链接产业. 管店云为传统实体产业提供进销存管理解决方案&#xff0c;实现进货、库存、销售、收银、记账完整的业务场景&#xff0c;帮助传统产业实现数字化转型&#xff0c;提升管理效率&#xff0c;提高自身数字化经营的能力&#xff0c;让管人管…

Unity的碰撞检测(六)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(五)”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic&#xff0c;但是Collision Detection属性不同的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具…

退运险业务及系统架构演进史

作者&#xff1a;曾利⺠、杨代铭 ⽂章简介&#xff1a;本⽂回顾退运险上线⼗年以来相关系统架构的演进。 背景    退运险对于我司来说是⼀个举⾜轻重⼀款产品&#xff0c;初创时期贡献了99.9%的 保费收⼊&#xff0c;随着公司的发展各类产品的不断创新&#xff0c;退运险的…

前端移动web高级详细解析一

01-平面转换 简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#xff1a;改变盒子在平面内的形态&#xff08;位移、旋转、缩放、倾斜&#xff09; 平面转换也叫 2D 转换&#xff0c;属性是 transform 平移 transform: translate(X轴移动距…

YOLOv5算法改进(21)— 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之EIoU

前言:Hello大家好,我是小哥谈。通过上节课的学习,相信同学们一定了解了组合改进的核心。本节课开始,就让我们结合论文来对YOLOv5进行组合改进(添加CA注意力机制+更换Neck网络之BiFPN+更换损失函数之EIoU),希望同学们学完本节课可以有所启迪,并且后期可以自行进行YOLOv5…

记一次任意文件下载到Getshell

任意文件下载&#xff08;Arbitrary File Download&#xff09;是一种常见的 Web 攻击技术&#xff0c;用于窃取服务器上任意文件的内容。攻击者利用应用程序中的漏洞&#xff0c;通过构造恶意请求&#xff0c;使应用程序将任意文件&#xff08;如配置文件、敏感数据等&#xf…

IDE的组成

集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务…