性能测试03|JMeter:断言、关联、web脚本录制

embedded/2025/1/8 19:12:56/

目录

一、断言

1、响应断言

2、json断言

3、持续时间断言

二、关联

1、正则表达式介绍

2、正则表达式提取器

3、Xpath提取器

4、JSON提取器

5、JMeter属性

三、web脚本录制


一、断言

定义:让程序自动判断实际的返回结果是否与预期结果保持一致

  • 自动校验机制:自动判断响应状态码(2xx:成功,4xx/5xx:失败)
  • 响应内容需要自己写脚本

Jmeter常用断言:

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

1、响应断言

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

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

参数

 

案例

断言响应体中包含:百度一下,你就知道
不报错就说明断言通过了
断言不通过的情况(这里是把中文逗号换成英文逗号了,所有断言没通过)

2、json断言

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

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

参数

红框为常用

路径格式以$.开头,表示根的意思 ,后面指定要取值的变量

操作步骤

  • 添加线程组
  • 添加HTTP请求
  • 添加JSON断言
  • 添加查看结果树

3、持续时间断言

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

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

参数:只有一个,允许最长响应时间

二、关联

定义:请求之间有依赖关系,一个请求的响应数据作为另一个的请求参数来传递

JMeter关联

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

1、正则表达式介绍

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

公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容

. :是通配符,可以代表任意字符(除换行回车)

* :代表前面的字符出现0次或者多次

.*:代表任意字符

(以上符号匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来)

? :代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界,即一个一个的找。

公式格式:左边界(.*?)右边界

案例一:找到“百度一下,你就知道”

原始文本:<title>百度一下,你就知道</title>

正则表达式<title>(.*?)</title>

案例二

 原始文本:

021-1234-1234

022-1234-1235

023-1234-1236

024-1234-1237

025-1234-1238

026-1234-1239   要求:匹配出 城市号、地区号、个人号码三组

正则表达式:(.*?)-(.*?)-(.*?)\n

2、正则表达式提取器

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

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

参数

模板:就是表明要匹配正则表达式中第几个括号
匹配数字:就是表明要取匹配结果中的第几个结果

操作步骤

  • 添加线程组
  • 添加HTTP请求
  • 添加正则表达式提取器
    • 引用名称:存放提取出的值的参数名称,如填写title
    • 正则表达式:左边界( .*? )右边界
    • 模板:用$$引用起来,表示解析出第几个()的值
    • 匹配数字::表示第1个值,-1表示所有取值
  • 添加HTTP请求-百度
  • 引用正则表达式中的引用名称。如:用${title}引用它
  • 添加查看结果树

案例:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区) 

方法1:

  • 添加线程组
  • 添加HTTP请求 - itcast
  • 添加正则表达式 —— 获取第5个地址

  • 添加HTTP请求 - 百度

  •  查看结果树

方法2:

  • 添加线程组
  • 添加HTTP请求 - itcast
  • 添加正则表达式 —— 获取所有匹配的地址数据

  • 添加Debug Sample:调试用的,会打印area信息
  • 添加HTTP请求 - 百度,引用第5个地址信息,格式:${变量名_索引},索引从1开始

  •  查看结果树

3、Xpath提取器

学过UI自动化就知道怎么匹配了

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

位置:测试计划 →线程组 →HTTP请求→(右键添加)后置处理器→XPath提取器

参数

引用方式:${变量名}  或  ${变量名_索引}

4、JSON提取器

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

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

参数

5、JMeter属性

类似postman中的全局变量

数据提取还是用上面三种方法实现,但是数据在不同线程组传递就可以用到JMeter属性 

详细过程: 

19.性能测试_JMeter属性的介绍_哔哩哔哩_bilibili

三、web脚本录制

实际工作一般不用 

JMetr录制脚本:在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助
编写接口测试脚本。

JMetr录制脚本原理

JMetr录制脚本的操作步骤

1、添加HTTP代理服务器,并进行配置

  • 加HTTP代理服务器:测试计划(右键)→非测试元件→HTTP代理服务器
  • 配置理代服务器的参数

2、开启windows操作系统的浏览器代理

3、启动代理服务器,开始录制

点完启动会出现一个弹窗,点OK即可
此弹窗放旁边,不管它就行,不要关掉

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

全部内容:

性能测试01|性能测试理论-CSDN博客

性能测试02|JMeter:安装、元件、线程组、HTTP请求、查看结果树、参数化-CSDN博客

性能测试03|JMeter:断言、关联、web脚本录制-CSDN博客 

性能测试04|JMeter:连接数据库、逻辑控制器、定时器-CSDN博客

性能测试05|JMeter:分布式、报告、并发数计算、性能监控-CSDN博客


http://www.ppmy.cn/embedded/152353.html

相关文章

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭&#xff0c;可通过选项字节在上电时启动硬件看门狗&#xff0c;看门狗计数只能写入不能读取。看门狗启用时&#xff0c;T6bit必须置1&#xff0c;防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗&#xff08;重置计数器&#xff0c;…

iOS - 消息机制

1. 基本数据结构 // 方法结构 struct method_t {SEL name; // 方法名const char *types; // 类型编码IMP imp; // 方法实现 };// 类结构 struct objc_class {Class isa;Class superclass;cache_t cache; // 方法缓存class_data_bits_t bits; // 类的方法…

各知名云平台对于 MySQL TDE的支持汇总和对比

MySQL Community TDE功能介绍&#xff1a; TDE: Transparent Data Encryption, 也就是透明传输加密。在MySQL community官网上有这样原文介绍&#xff1a;With MySQL version 5.7.12 and up, Oracle continues to improve MySQL’s security features by adding MySQL Enterpr…

vulnhub靶场-potato(至获取shell)

arp-scan -l 扫描IP 使用御剑端口扫描扫描端口&#xff0c;扫到了80和7120两个端口&#xff0c;其中7120为ssh端口 使用dirb http://192.168.171.134 扫描目录 发现info.php 访问为phpinfo界面 访问192.168.171.134为一个大土豆&#xff0c;没什么用 所以我们从ssh入手 盲…

Couchbase 和数据湖技术的区别、联系和相关性分析

Couchbase 和数据湖技术&#xff08;如 Delta Lake、Apache Hudi、Apache Iceberg&#xff09;分别是两类不同的数据存储与管理系统&#xff0c;但它们也可以在特定场景中结合使用&#xff0c;以下是它们的区别、联系和相关性分析&#xff1a; 区别&#xff1a; 1. 核心用途&a…

Docker: 教程07 - ( 如何对 Docker 进行降级和升级)

如果我们使用 docker 来管理容器&#xff0c;那么保持 docker 引擎的更新将会是十分重要的&#xff0c;这一篇文章我们将会讨论如何对Docker 进行降级和升级。 准备工作 - docker 环境 我们需要拥有一个安装好 docker 的运行环境。 如果你需要了解如何安装 docker 可以通过如…

Go语言的数据库交互

Go语言的数据库交互 引言 在现代软件开发中&#xff0c;数据库是应用程序不可或缺的组成部分。无论是处理用户数据、管理资产信息&#xff0c;还是记录日志&#xff0c;数据库都发挥着重要作用。Go语言以其简洁的语法和优异的并发性能&#xff0c;逐渐成为开发高效、可扩展应…

iOS - 线程与AutoreleasePoolPage

1. AutoreleasePoolPage 结构 struct AutoreleasePoolPage {static pthread_key_t key; // 只占用一份内存空间magic_t const magic;id *next;pthread_t const thread;AutoreleasePoolPage *parent;AutoreleasePoolPage *child;// ...其他成员变量 } pthread 的 TLS (Th…