Jmeter断言、关联、脚本录制

Jmeter断言

断言:让程序自动判断预期结果和实际结果是否一致

提示:

  • Jmeter在请求的返回层面有个自动判断机制(响应状态码 2xx:成功,4xx/5xx:失败)
  • 但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性。

Jmeter中常用断言

  • 响应断言:对任意格式的响应数据进行断言
  • json断言:对json格式的响应数据进行断言
  • 持续时间断言:对响应时间进行断言

响应断言

作用:对HTTP请求的任意格式的响应结果进行断言

位置:测试计划–>线程组–>HTTP请求–>(右键添加)断言–>响应断言

参数image-20240602125838982

参数配置详细介绍

测试字段:要检查的项(实际结果)

  • 响应文本:来自服务器的响应文本,即主体
  • 响应代码:响应的状态码,例如:200
  • 响应信息:响应的信息,例如OK
  • Response Headers:响应头部
  • Requests Headers:请求头部
  • Requests Data:请求数据
  • URL样本:请求URL
  • Documents(文档):响应的整个文档
  • 忽略状态:忽略返回的响应状态码

模式匹配规则:比较方式

  • 包括:文本包含指定的正则表达式
  • 匹配:整个文本匹配指定的正则表达式
  • Equals:整个返回结果的文本等于指定的字符串(区分大小写)
  • Substring:返回结果的文本包含指定字符串(区分大小写)

    • 否:取反
    • 或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是OK),不勾选代表逻辑与(所有都必须匹配,断言才是OK)

    - 注意:Equals和Substring模式是普通字符串,而包括和匹配模式是正则表达式

测试模式:预期结果

  • 即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理。

练习:

请求:https://www.baidu.com

检查:让程序检查响应数据中是否包含“百度一下,你就知道“

操作步骤:

1.添加线程组

2.添加HTTP请求

3.添加响应断言

4.添加查看结果树

image-20240602143947217

小结

(1)什么时候可以使用响应断言?

  • 任意HTTP请求的响应结果,都可以使用响应断言

(2)使用”响应断言“的操作步骤?

  1. 添加线程组
  2. 添加HTTP请求
  3. 添加响应断言
    • 测试字段:要检查的项(实际结果)
    • 模式匹配规则:比较的方式
    • 测试模式:预期结果
  4. 添加查看结果树

JSON断言

作用:对HTTP请求的JSON格式的响应结果进行断言

位置:测试计划–>线程组–>HTTP请求—>(右键添加)断言—>JSON断言

参数

image-20240602145118361

练习:

请求:http://www.weather.com/data/sk/101010100.html

检查:让程序检查响应的JSON数据中,city对应的内容是否为”北京“

image-20240602145807003

image-20240602145818687

小结

(1)什么时候可以使用JSON断言?

  • 对HTTP请求的响应结果为JSON格式时,可以使用JSON断言

(2)使用"JJSON断言"的操作步骤?

  1. 添加线程组
  2. 添加HTTP请求
  3. 添加JSON断言
    • 填写Assert JSON Path exists(实际结果-json路径)
    • 勾选Addtionally assert value
    • 填写 Expected Value(预期结果)
  4. 添加查看结果树

断言持续时间

作用:检查HTTP请求的响应时间是否超出要求范围

位置:测试计划–>线程组–>HTTP请求—>(右键添加)断言—>断言持续时间

练习:

请求:https://www.jd.com

检查:让程序检查响应时间是否大于100毫秒

操作步骤

  1. 添加线程组
  2. 添加HTTP请求
  3. 添加断言持续时间
  4. 添加查看结果树

image-20240602151002279

小结:

(1)什么时候可以使用断言持续时间?

  • 测试HTTP请求的响应时间是否满足要求时,可以使用断言持续时间。

(2)使用”断言持续时间“的操作步骤?

  1. 添加线程组
  2. 添加HTTP请求
  3. 添加断言持续时间
    • 填写持续时间(允许的最大响应时间,单位:ms)
  4. 添加查看结果树

Jmeter关联

关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

Jmeter中常用的关联方法

  • 正则表达式提取器:提取任意格式的响应数据
  • Xpath提取器:提取HTML格式的响应数据
  • JSON提取器:提取JSON格式的响应数据

正则表达式介绍

正则表达式:就是一个公式,或者说是一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容

格式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容
.:是通配符,可以代表任意字符(除换行回车)
*:代表前面的字符出现0次或者多次
.* 匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据
都被记录下来。
?:代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续
查找;再次查找左边界和右边界公式格式:左边界(.*?)右边界
<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
<title>(.*?)</title>

案例

原始文本:
021-1234-1234
022-1234-1235
023-1234-1236
024-1234-1237
025-1234-1238
026-1234-1239
027-1234-1230
要求:匹配出 城市号、地区号、个人号码三组

正则表达式匹配:

(.*?)-(.*?)-(.*?)\n

image-20240602155505456

结论:

  • 通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可
  • 每一组数据都可以有一个或者多个值

正则表达式提取器

作用:针对任意格式的响应数据进行提取

位置:测试计划–>线程组–>HTTP请求–>(右键添加)后置处理器—>正则表达式提取器

image-20240602155747524

参数介绍

  • 引用名称:存放提取出的值的参数名称,供下一个请求引用,如填写title,则可用${title}引用它。
  • 正则表达式:左边界(.*?)右边界
    • ():括起来的部分就是要提取的
    • .:匹配任何字符串
    • *:0次或多次
    • ?:不要太贪婪,在找到第一个匹配项后停止。
  • 模板:用$ $引用起来,如果在正则表达式中有多个提取值,则可以是 2 2 2 3 3 3等等,表示解析到的第几个值给title。如: 1 1 1表示解析到的第1个值
  • 匹配数字:0代表随机取值,-1代表全部取值,1代表取第一个值
  • 缺省值:如果参数没有取得到值,那默认一个值让它取。

练习1:

1.请求:http://www.itcast.cn/获取网页的title

2.请求:https://www.baidu.com/ 把获取到title作为请求参数

操作步骤:

  1. 添加线程组
  2. 添加HTTP请求- itcast
  3. 添加正则表达式提取器
  4. 添加HTTP请求-baidu
  5. 添加查看结果树

image-20240602161937244

image-20240602161950559

image-20240602162008336

image-20240602162125783

小结:

(1)什么时候可以使用正则表达式提取器?

  • 任意格式的响应数据,都可以使用正则表达式提取器进行提取

(2)使用”正则表达式提取器“的操作步骤?

  1. 添加线程组

  2. 添加HTTP请求-itcast

  3. 添加正则表达式提取器

    • 引用名称:存放提取出的值的参数名称,如填写title
    • 正则表达式:左边界(.*?)右边界
    • 模板:用$ $引用起来,表示解析出第几个()的值
    • 匹配数字:1代表取第一个值,-1代表全部取值
  4. 添加HTTP请求-百度

    • 引用正则表达式中的引用名称,如:用${title}引用它
  5. 添加查看结果树

练习2:获取黑马首页的地址(https://www.itheima.com),把第五个校区地址作为参数传递(span为地址的校区)

响应中的地址格式显示:<p><span>地址:</span>湖北省武汉市长江新城区青龙路传智教育科创园</p>

方法1:

  • 添加线程组
  • 添加HTTP请求-heima

image-20240603224718800

  • 添加正则表达式—获取第5个地址

image-20240603225015190

  • 添加HTTP请求-百度

image-20240603225058930

  • 添加查看结果树

image-20240603225416356

方法2

  • 添加线程组

  • 添加HTTP请求-heima

  • 添加正则表达式——获取所有匹配的地址数据

    image-20240603225803692

  • 添加DebugSample

  • 添加HTTP请求-百度,引用第5个地址信息,格式:${变量名_索引},索引从1开始

image-20240603225841416

  • 添加查看结果树

练习3:获取黑马首页的地址,把第5个校区地址作为参数传递(span为地址/后面带一、二、三)

地址格式1:<p><span>地址一</span>昌平区建材城西路金燕龙办公楼一层</p>
地址格式2:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p>
  • 添加线程组
  • 添加HTTP请求-heima
  • 添加正则表达式提取器-地址信息

image-20240603230210987

  • 添加HTTP请求-百度

image-20240603230237415

  • 添加查看结果树

xpath提取器

作用:针对HTML格式的响应结果进行提取

位置:添加方式:测试计划–>线程组–>HTTP请求–>(右键添加)后置处理器–>xPath提取器

参数:

image-20240604081725663

参数介绍:

  • use Tidy(tolernat parser)
    - 当需要处理的页面是HTML格式时,必须选中该选项
    - 当需要处理的页面是XML和XHTML格式时,取消选中该选项。
  • 引用名称:存放提取出的值的参数名称
  • Xpath Query:用于提取值的Xpath表达式
  • 匹配数字:如果Xpath路径查询出许多结果,则可以选中提取哪个
    - 0:表示随机,-1:表示提取所有,1表示第一个值
  • 缺省值:参数的默认值
案例:
//a : 找出所有的a标签
//a[@id='kw']: 在HTML页面中,找出a标签(有一个属性为id,且id的值为kw)
//b[@name='kw']: 在HTML页面中,找出b标签(有一个属性为name,且name的值为kw)
案例2:获取itcast中的title标签,
使用://title

练习

1.请求:http://www.itcast.cn/,获取网页的title值

2.请求:https://www.baidu.com/,把获取到的title作为请求参数

操作步骤:

1.添加线程组

2.添加HTTP请求-itcast

3.添加Xpath提取器

image-20240604082535154

4.添加HTTP请求-百度

5.添加查看结果树

小结

(1)什么时候可以使用XPATH提取器?

  • 针对HTML格式的响应数据,可以使用XPATH提取器进行提取

(2)使用"Xpath提取器"的操作步骤?

  1. 添加线程组

  2. 添加HTTP请求-itcast

  3. 添加Xpath提取器

    • 勾选use Tidy(tolernat parser)
    • 引用名称:存放提取出的值的参数名称。如:填写title
    • Xpath Query:用于提取值的Xpath表达式
    • 匹配数字:0:表示随机,-1:表示提取所有,1表示第一个值
  4. 添加HTTP请求-baidu

    • 引用正则表达式中的引用名称。如:用${title}引用它。
  5. 添加查看结果树

JSON提取器

作用:针对JSON格式的响应结果进行数据提取

位置:添加方式:测试计划–>线程组–>HTTP请求–>(右键添加)后置处理器–>JSON提取器

参数:

image-20240604083813341

练习:

1.请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称”北京“

2.请求https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数

操作步骤:

  1. 添加线程组

  2. 添加HTTP请求-天气

image-20240604084340959

  1. 添加Json提取器

image-20240604084400672

  1. 添加HTTP请求-百度

image-20240604084415922

  1. 添加查看结果树

image-20240604084521105

小结

(1)什么时候可以使用JSON提取器?

  • 针对JSON格式的响应数据,可以使用JSON提取器进行提取

(2)使用“JSON提取器”的操作步骤?

  1. 添加线程组
  2. 添加HTTP请求-天气
  3. 添加JSON提取器
    • Name of created variables:存放提取出的值的参数名称如:city
    • JSON Path Expressions:用于提取值的JSON路径表达式
    • Match No:0:表示随机,-1:表示提取所有,1表示第一个值
    • 添加HTTP请求-百度
      • 引用正则表达式中的引用名称。如:用${city}引用它。
    • 添加查看结果树

JMeter属性

为什么要使用JMeter属性?

当有关联关系的两个请求在同一个线程组中时,可以使用三种提取器的变量来实现数据传递。

当有关联关系的两个请求在不同线程组时,如何进行数据传递呢?就要用Jmeter属性

Jmeter属性的配置函数

image-20240604085941537

Jmeter属性的函数执行

image-20240604090007799

练习:

1.线程组1:请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称”北京“

2.线程组2:请求https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数

操作步骤:

  1. 添加线程组1
  2. 添加HTTP请求-天气

image-20240604091442149

  1. 添加JSON提取器

image-20240604091509483

  1. 添加BeanShell取样器(将JSON提取器的值保存为JMeter属性)

image-20240604091528811

  1. 添加线程组2

  2. 添加HTTP请求-百度(读取JMeter属性)

image-20240604091555523

  1. 添加查看结果树

image-20240604091621957

小结

(1)什么时候需要使用JMeter属性?

  • 需要实现跨线程组的数据传递时,可以使用Jmeter属性

(2)使用”Jmeter属性“的操作步骤?

  1. 添加线程组1
  2. 添加HTTP请求-天气
  3. 添加JSON提取器
  4. 添加BeanShell取样器(将JSON提取器的值保存为JMeter属性)

​ — 保存Jmeter属性KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(p_…{city},)}

  1. 添加线程组2

  2. 添加HTTP请求-百度(读取JMeter属性)

    ​ — 读取Jmeter属性:${__property(p_city,)}

  3. 添加查看结果树

JMeter录制脚本

Jmeter录制脚本:在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,

帮助编写接口测试脚本。

原理:录制时,Jmeter作为代理服务器来拦截和转发请求与响应数据。

image-20240604214942745

Jmeter录制脚本的操作步骤:

  1. 添加HTTP代理服务器,并进行配置
  • 加HTTP代理服务器:测试计划(右键)-非测试元件-HTTP代理服务器
  • 配置代理服务器的参数

image-20240604220304967

image-20240604220526911

  1. 开启windows 操作系统的浏览器代理

image-20240604220037407

  1. 启动代理服务器,开始录制

image-20240604220353117

  1. 在浏览器页面中进行操作,成功后,就能在JMeter当中看到抓取到的接口请求了。

image-20240604221046349

当使用代理的过程中,发现抓不到包,几个可能的情况

  • 过滤规则设置有问题
  • 重启Jmeter代理服务器或者重启Jmeter
  • 换浏览器来使用(Chrome、IE)
  • 检查PC机中的代理设置是否处于可用状态
  • 拔掉网线,抓包

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

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

相关文章

【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境

【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 0.QT介绍 QT 是一个跨平台的应用程序开发框架&#xff0c;它提供了丰富的工具和类库&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;程序。Qt 提供了 C 编程语言接口&#xff0c;同时也支持其他…

王学岗鸿蒙开发(北向)——————(一)鸿蒙开发环境的搭建与ArkTs介绍

1&#xff0c;鸿蒙系统开始研发的时间是在2012年。 2&#xff0c;目前鸿蒙有两个开发:HarmonyOS和OpenHarmony,前者内聚AOSP(Android的东西)&#xff0c;前者是双框架结构&#xff0c;后者不是双框架结构&#xff0c;没有内置安卓。 3&#xff0c;Harmony地址 4&#xff0c;我们…

文件上传漏洞之upload-labs

前提&#xff1a; 本文中的以xshell命名的均为以密码为admin的一句话木马&#xff0c;而shell命名的则是由冰蝎工具生成的木马。 pass-01&#xff1a;js前端验证 测试性的上传一个一句话木马&#xff0c;发现被拦截了&#xff0c;而且根据推测大概率是前端检测&#xff0c;于…

国内PLM系统厂商,国内PLM系统哪个公司最受欢迎

国内PLM系统厂商,国内PLM系统哪个公司最受欢迎 国内PLM系统厂商中&#xff0c;要确定哪个公司的产品最受欢迎&#xff0c;需要考虑多个因素&#xff0c;包括市场份额、客户评价、技术实力、产品线完整性以及服务支持等。虽然无法直接给出一个具体的“最受欢迎”的排名&#xff…

闲鱼无货源-高级班,最全·最新·最干,紧贴热点 深度学习(17节课)

课程目录 1-1&#xff1a;闲鱼潜规则_1.mp4 2-2&#xff1a;闲鱼的基础操作-养号篇_1.mp4 3-3&#xff1a;闲鱼实战运营-选品篇&#xff08;一&#xff09;_1.mp4 4-4&#xff1a;闲鱼实战运营-选图视频篇_1.mp4 5-5&#xff1a;闲鱼实战运营-标题筒_1.mp4 6-6&#xff1…

伯克希尔也被ST?

地球&#xff08;最&#xff09;贵股票突然闪崩&#xff0c;美股故障再次上演。昨晚齐刷刷一片的美股出现行情异常&#xff0c;伯克希尔、蒙特利尔银行、巴里克黄金等股票股价跌幅超过98%。其中&#xff0c;巴菲特旗下伯克希尔哈撒韦A类股股价更是暴跌99.97%&#xff0c;股价从…

Java集合简略记录

一、集合体系结构 单列集合&#xff1a;Collection 双列集合&#xff1a;Map 二、单列集合 List系列集合&#xff1a;添加的元素是有序、可重复、有索引 有序指的是存和取的顺序是一致的&#xff0c;和之前排序的从小到大是没有任何关系的 Set系列集合&#xff1a;添加的元素是…

FL Studio21.2.8中文版水果音乐制作的革新之旅!

在数字化浪潮的推动下&#xff0c;音乐制作领域经历了翻天覆地的变化。从最初的模拟技术到如今的全数字化处理&#xff0c;音乐制作的门槛被大幅降低&#xff0c;越来越多的音乐爱好者和专业人士开始尝试自行创作和编辑音乐。在这个过程中&#xff0c;各种专业音乐制作软件成为…

yolov8逐步分解(9)_训练过程之Epoch迭代过程

yolov8逐步分解(1)--默认参数&超参配置文件加载_yolov8 加载yaml配置 预测-CSDN博客 yolov8逐步分解(2)_DetectionTrainer类初始化过程_train and val are required in all data yamls.-CSDN博客 yolov8逐步分解(3)_trainer训练之模型加载_yolov8 加载模型-CSDN博客 YOL…

TCP 建链(三次握手)和断链(四次握手)

TCP 建链&#xff08;三次握手&#xff09;和断链&#xff08;四次挥手&#xff09; 背景简介建链&#xff08;三次握手&#xff09;断链&#xff08;四次挥手&#xff09;序号及标志位延伸问题为什么建立连接需要握手三次&#xff0c;两次行不行&#xff1f;三次握手可以携带数…

智领未来,安全无忧:智能网联汽车监控大屏的守护之旅

在繁忙的都市中&#xff0c;驾驶者往往面临着诸多安全隐患。传统的驾驶辅助系统虽然能够提供一定的帮助&#xff0c;但在复杂多变的交通环境中&#xff0c;其局限性也逐渐显现。而智能网联汽车安全监控大屏&#xff0c;正是为了解决这一问题而诞生的。 山海鲸可视化大屏 大屏采…

基础篇04——多表查询

多表关系 一对多 多对多 多对多是通过中间表实现的 -- 创建学生表 create table student (id int auto_increment primary key comment ID,name varchar(10) comment 姓名,no varchar(3) comment 学号 ) comment 学生表;insert into student values (null, 黛绮丝, 001),(…

SLAM中四元数、流形、李群、李代数是啥?

知识点得逻辑关系如下 引言 非线性问题由于复杂的数学结构&#xff0c;多样的解空间&#xff0c;局部极值等问题求解难度大大增加。所以在求解时需要把非线性问题转化为更容易处理的形式&#xff0c;例如 数值优化方法&#xff1a;数值优化方法包括梯度下降、共轭梯度法、牛顿…

Spring boot实现基于注解的aop面向切面编程

Spring boot实现基于注解的aop面向切面编程 背景 从最开始使用Spring&#xff0c;AOP和IOC的理念就深入我心。正好&#xff0c;我需要写一个基于注解的AOP&#xff0c;被这个注解修饰的参数和属性&#xff0c;就会被拿到参数并校验参数。 一&#xff0c;引入依赖 当前sprin…

寒武纪:“国产平替”道阻且长

英伟达的一季报反映了AI装备竞赛白热化&#xff0c;科技巨头们正疯狂加码投资。 不过&#xff0c;因为众所周知的原因,英伟达最先进的产品卖不到国内&#xff0c;虽然说一定程度上限制了咱们AI的发展&#xff0c;但也给国产AI芯片公司们提供了机会&#xff0c;其中就包括我们今…

K8S==ingress简单搭建和使用

基础环境 D:\DOCKER_REPO\K8S>kubectl version Client Version: v1.29.2 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.29.2 D:\DOCKER_REPO\K8S>kubectl get nodes NAME STATUS ROLES AGE VERSION docker-…

01_深度学习基础知识

1. 感知机 感知机通常情况下指单层的人工神经网络,其结构与 MP 模型类似(按照生物神经元的结构和工作原理造出来的一个抽象和简化了模型,也称为神经网络的一个处理单元) 假设由一个 n 维的单层感知机,则: x 1 x_1 x1​ 至 x n x_n xn​ 为 n 维输入向量的各个分量w 1 j…

【大学物理】Interference,diffraction,polarization:光学

nature of light definition speed of light reflection dispersion huygenss principle:惠更斯原理

OBD诊断协议

上周领导需要做个OBD相关的功能&#xff0c;我对OBD没有啥概念&#xff0c;于是周末就了解下这到底是个啥东西。了解过后发现很简单&#xff0c;其实就是个UDS协议的简化版&#xff0c;OBD是英文On-Board Diagnostics的缩写&#xff0c;中文翻译为“车载自动诊断系统”&#xf…

链表反转--理解链表指针的基本操作

链表反转--理解链表指针的基本操作 链表反转的方法--主要是理解链表指针链表心得类节点是对象和指针区别&#xff1a; 链表反转的方法–主要是理解链表指针 根据值创建新列表 用一个链表指针代替整个新链表 两个链表的赋值 递归求解反向链表 用一个链表代替前后链表数…