性能测试-JMeter(2)
JMeter
- JMeter断言
- 响应断言
- JSON断言
- 断言持续时间
- JMeter关联
- 正则表达式提取器
- 正则表达式
- 正则表达式提取器
- XPath提取器
- JSON提取器
- JMeter属性
- JMeter录制脚本
JMeter断言
断言:让程序自动判断预期结果和实际结果是否一致
提示:
-Jmeter在请求的返回层面有个自动判断机制(响应状态码)
-但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性
- JMeter中常用断言:
- 响应断言
- JSON断言
- 持续时间断言(Duration Assertion)
响应断言
作用:对HTTP请求的任意格式的响应结果进行断言
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)断言 --> 响应断言
- 参数配置详细介绍
- 测试字段:要检查的项(实际结果)
- 响应文本:来自服务器的响应文本,即主体
- 响应代码:响应的状态码,例如:200
- 响应信息:响应的信息,例如:OK
- Response Headers:响应头部
- Request Headers:请求头部
- Request Data:请求数据
- URL样本:请求URL
- Document(text):响应的整个文档
- 忽略状态:忽略返回的响应状态码
- 模式匹配规则:比较方式
- 包括:文本包含指定的正则表达式
- 匹配:整个文本匹配指定的正则表达式
- Equals:整个返回结果的文本等于指定的字符串(区分大小写)
- Substring:返回结果的文本包含指定字符串(区分大小写)
- 否:取反
- 或者:如果存在多个测试模式,勾选代表逻辑或(只要一个模式匹配,则断言就是OK),不勾选代表逻辑与(所有都必须匹配,断言才是OK)
- 测试模式:预期结果
- 即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理
【练习】
请求:https://www.baidu.com
检查:让程序检查响应数据中是否包含“百度一下,你就知道”
操作步骤:
1.添加线程组
2.添加HTTP请求
3.添加响应断言
4.添加查看结果树
- 即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理
- 测试字段:要检查的项(实际结果)
JSON断言
作用:对HTTP请求的JSON格式的响应结果进行断言
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)断言 --> JSON断言
【练习】
请求:http://www.weather.com.cn/data/sk/101010100.html
检查:让程序检查响应的JSON数据中,city对应的内容是否为“北京”
操作步骤:
1.添加线程组
2.添加HTTP请求
3.添加JSON断言
4.添加查看结果树
断言持续时间
作用:检查HTTP请求的响应时间是否超出要求范围
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)断言 --> 断言持续时间
参数介绍:持续时间(毫秒):HTTP请求允许的最大响应时间(单位:毫秒)。超过则认为失败
【练习】
请求:https://www.jd.com
检查:让程序检查响应时间是否大于100毫秒
操作步骤:
1.添加线程组
2.添加HTTP请求
3.添加断言持续时间
4.添加查看结果树
JMeter关联
关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。
- JMeter中常用的关联方法
- 正则表达式提取器
- XPath提取器
- 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
结论:
- 通过一个正则表达式可以提取多组数据,每组数据设置对应的左边界和右边界即可
- 每一组数据都可以有一个或多个值
正则表达式提取器
作用:针对任意格式的响应数据进行提取
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)后置处理器 --> 正则表达式提取器
【练习】
1、请求:http://www.itcast.cn/,获取网页的title值把获取到的title作为请求参数2、请求:https://www.baidu.com/,把获取到的title作为请求参数
【练习2】:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)
响应中的地址格式显示:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p>
方法2
然后按照下标方式引用
XPath提取器
作用:针对HTML格式的响应结果数据进行提取
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)后置处理器 --> XPath提取器
【练习】
1、请求:http://www.itcast.cn/,获取网页的title值
2、请求:https://www.baidu.com/把获取到的title作为请求参数
操作步骤:
1.添加线程组
2.添加HTTP请求-传智播客
3.添加XPath提取器
4.添加HTTP请求-百度
5.查看结果树
JSON提取器
作用:针对JSON格式的响应结果数据进行提取
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)后置处理器 --> JSON提取器
【练习】
1、请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称“北京"
2、请求:https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数
操作步骤:
1.添加线程组
2.添加HTTP请求-天气
3.添加JSON提取器
4.添加HTTP请求-百度
5.查看结果树
JMeter属性
为什么要使用JMeter属性?
当有关联关系的两个请求在同一个线程组中时,可以使用三种提取器的变量来实现数据传递。当有关联关系的两个请求在不同线程组中时,如何进行数据传递呢?
-
JMeter属性的配置函数
-
__setProperty函数:讲值保存成JMeter属性
-
__property函数:在其他线程组中使用property函数读取属性
-
-
JMeter属性的函数执行
- __setProperty函数执行(保存JMeter属性):通过BeanShell取样器来执行
- __property函数:在其他线程组中使用property函数
【练习】
1、线程组1:请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称“北京"
2、线程组2:请求:https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数
操作步骤:
1.添加线程组1
2.添加HTTP请求-天气
3.添加JSON提取器
4.添加BeanShell取样器(将JSON提取器提取的值保存为JMeter属性)
5.添加HTTP请求-百度(读取JMeter属性)
6.添加查看结果树
JMeter录制脚本
为什么要录制脚本?
有API文档时,可以根据API文档的定义来编写HTTP接口测试脚本。那如果没有API文档时,该如何来编写HTTP接口测试脚本呢?
- JMeter录制脚本:在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本。
- 原理:录制时,JMeter作为代理服务器来拦截和转发请求与响应数据
操作步骤
- 添加HTTP代理服务器,并进行配置
- 加HTTP代理服务器:测试计划(右键) --> 非测试元件 -->HTTP代理服务器
- 配置代理服务器的参数
- 开启windows操作系统的浏览器代理
- 启动代理服务器,开始录制
可以通过Requests Filtering进行过滤设置
相关文章:

性能测试-JMeter(2)
JMeter JMeter断言响应断言JSON断言断言持续时间 JMeter关联正则表达式提取器正则表达式正则表达式提取器 XPath提取器JSON提取器 JMeter属性JMeter录制脚本 JMeter断言 断言:让程序自动判断预期结果和实际结果是否一致 提示: -Jmeter在请求的返回层面有…...

芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇
今天小编给大家介绍的是UI_Creator(μgui)平台下关于图像处理的选项。 UI_Creator(μgui)平台图片类控件有图像控件和分级图像控件,均包含以下选项: 1、消除水波纹: 由于16位真彩色(…...

QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作
目录 1、前言 2、界面设计 3、英文、数字的输入 4、符号的输入 5、中文的输入 6、中文拼音库的选择 7、其他 8、结语 1、前言 使用QT C在带显示器的Linux系统 开发板上(树莓派等)编写操作UI界面时,很多时候都需要一个软键盘来输入文字…...

element-ui点击文字查看图片预览功能
今天做一个点击文字查看图片的功能,大体页面长这样子,点击查看显示对应的图片 引入el-image-viewer,点击的文字时候设置图片预览组件显示并传入图片的地址 关键代码 <el-link v-if"scope.row.fileList.length > 0" type&…...

SpringBoot集成Redis使用Cache缓存
使用SpringBoot集成Redis使用Cache缓存只要配置相应的配置类,然后使用Cache注解就能实现 RedisConfig配置 新建RedisConfig配置类 package com.bdqn.redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annota…...

【瑞萨RA8D1 CPK开发板】lcd显示
1.8寸lcd使用gpio模拟spi驱动 由于板子引出的接口限制,故使用gpio模拟spi驱动中景园的1.8寸lcd 1.77寸液晶屏 1.8寸TFT LCD SPI TFT彩屏st7735驱动128x160高清屏-淘宝网 (taobao.com) 使用RASC 的gpio配置 根据厂家提供的驱动文件移植 #define LCD_SCLK_Clr() g…...

算法收敛的一些证明方法与案例
证明一个算法收敛通常涉及多个角度,以下是一些常用的方法和示例: 一、方法 1. 数学归纳法 通过数学归纳法证明算法在每一步的输出结果都在收敛范围内。 示例:考虑一个递归算法,假设我们要证明它在每一步中输出的值逐渐接近目标…...

基于vue框架的蛋糕店网上商城740g7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:用户,店长,商品分类,商品信息,订单投诉,反馈信息 开题报告内容 基于Vue框架的蛋糕店网上商城开题报告 一、项目背景与意义 随着互联网技术的快速发展和普及,电子商务已成为现代商业的重要组成部分。蛋糕作为一种受欢迎的美…...

你真的了解Canvas吗--解密六【ZRender篇】
目录 📚入口 Circle - 图形 Group - 组 事件捕获 - 流程 step - 1 step - 2 总结 这篇文章我们讲讲Circle圆形,Group组的使用以及大家最熟悉又陌生的事件捕获和冒泡在ZRender中的实现,篇幅较长,且听我慢慢分析。 &#x…...

孤独相伴 - 结婚十七年
07年的今天,我和老公请假,去了新加坡的大使馆领证。 17年后的今天,此刻凌晨16分, 这是17年来我第一次这么早写结婚纪念,只是凑巧。 今天的心情莫名其妙。 此刻,两个词出现在我的脑海:孤独 &am…...

json-server,跨域
启动json-serer json-server --watch db.json 注意: db.json为json文件的名称,你自己的文件名叫什么,就启动对应的文件就可以了 启动json-server的时候,必须在你db.json所在的文件夹下进行启动 这样服务器就可以启动成功了&…...

【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南
目录 流程图示1. 下载 Anaconda 安装程序2. 重命名现有的 Anaconda 安装目录Windows 操作系统Linux 操作系统 3. 运行新的 Anaconda 安装程序Windows 操作系统Linux 操作系统 4. 同步原环境使用 robocopy 命令(Windows)使用 rsync 命令(Linux…...

转行高薪 AI 产品经理,快速入门方法在此处
根据《2024年中国AI大模型场景探索及产业应用调研报告》,当前整体AI大模型行业仍然处于萌芽期,但市场规模增速较快。2023年我国AI大模型行业规模达到了147亿元,近三年复合增速高达114%。预计2024年,该市场规模将进一步增长至216亿…...

初识环境变量
初识环境变量 目录: 什么是环境变量常见的环境变量Linux中与环境变量的有关的命令如何获取环境变量环境变量的特点环境变量的作用 1.什么是环境变量 我们在Linux操作系统下,使用指令,比如ls,pwd,cd等等,可以直接使用,…...

成像基础 -- 景深计算
景深计算 景深(Depth of Field, DOF)指的是在摄影中,能够清晰成像的物体前后距离的范围。景深的大小取决于多个因素,包括焦距、光圈值、物距以及相机感光元件的尺寸。 1. 景深的主要参数 焦距( f f f)&a…...

Git中从dev分支恢复master分支
问题 需要从dev分支恢复master分支。之前搞错远程地址了,把master分支搞乱了,现在需要从dev分支恢复代码到master分支。 步骤 git checkout dev # 切换到 dev 分支 git branch -D master # 删除本地 master 分支 git checko…...

12.5 Linux_进程间通信_信号灯
概述 什么是信号灯: 信号灯也称为信号量,代表的是一类资源,其值表示系统中该资源的数量。 主要用途是实现进程、线程的同步。 什么是P/V操作: P操作就是申请资源,V操作就是释放操作。 信号灯的种类: …...

Linux——cp-mv-rm命令
cp命令 复制文件 cp test01.txt test02.txt 复制文件夹 cp -r hsy01 hsy02 mv命令 移动文件/文件夹 rm命令 删除文件 rm test.txt 删除文件夹(目录 rm -r hsy01 通配符 * 匹配任意内容 注意* 位置 强制删除-f root超级管理员...

上升点列
题目描述 在一个二维平面内,给定 n 个整数点 (xi,yi),此外你还可以自由添加 k 个整数点。 你在自由添加 k 个点后,还需要从 nk 个点中选出若干个整数点并组成一个序列,使得序列中任意相邻两点间的欧几里得距离恰好为 1 而且…...

刷题 链表
面试经典150题 - 链表 141. 环形链表 class Solution { public:bool hasCycle(ListNode *head) {ListNode* slow head, *fast head;while (fast ! nullptr && fast->next ! nullptr) {slow slow->next;fast fast->next->next;if (slow fast) {return…...

SQL 语法学习指南
目录 前言1. SQL 的基本概念1.1 SQL 的作用1.2 SQL 的特点 2. SQL 的基础语法2.1 数据查询 - SELECT 语句2.2 数据插入 - INSERT 语句2.3 数据更新 - UPDATE 语句2.4 数据删除 - DELETE 语句 3. SQL 的进阶语法3.1 聚合函数3.2 表连接 - JOIN3.3 子查询 4. SQL 学习建议4.1 多实…...

低代码可视化-uniapp商城首页小程序-代码生成器
在设计一个小程序的首页时,包含轮播图、通知栏和商品列表这三个元素是非常常见且有效的布局方式。这样的设计既能够吸引用户的注意力,又能够高效地展示信息和商品。 轮播组件 小程序首页幻灯片通常位于小程序的顶部或显著位置,通过滑动屏幕可…...

Vue3 富文本:WangEditor
wangEditor 开源 Web 富文本编辑器,开箱即用,配置简单 wangEditor 1. 安装依赖包 npm install wangeditor/editor-for-vuenext --save 2. 在引用页面加入如下代码 <template><div style"border: 1px solid #ccc"><Toolbar …...

Unity实现自定义图集(四)
以下内容是根据Unity 2020.1.0f1版本进行编写的 在之前的篇章中已经把自定义图集在编辑器上的使用,以及运行时所需的信息都准备好了,接下来就是魔改UGUI的Image组件,使其能够像Image那样运行时如果引用的资源有打自定义图集,则加载对应自定义图集的Texture。 1、思路 …...

k8s-pod的管理及优化设置
Pod是Kubernetes(k8s)中最小的资源管理组件,也是最小化运行容器化应用的资源对象。以下是对Pod的详细介绍: 一、Pod的基本概念 定义:Pod是Kubernetes中可以创建和管理的最小单元,是资源对象模型中由用户创…...

软件测试面试题大全
什么是软件测试? 答案:软件测试是一系列活动,旨在评估软件产品的质量,并验证它是否满足规定的需求。它包括执行程序或系统以识别任何缺陷、问题或错误,并确保软件产品符合用户期望。 软件测试的目的是什么?…...

SQL第16课挑战题
1. 美国各州的缩写应始终用大写。更新所有美国地址,包括供应商状态(Vendors表中的vend_state)和顾客状态(customers表中的cust_state),使它们均为大写。 2. 第15课挑战题1要求将自己添加到customers表中,现在删除自己,…...

Python3 爬虫 中间人爬虫
中间人(Man-in-the-Middle,MITM)攻击是指攻击者与通信的两端分别创建独立的联系,并交换其所收到的数据,使通信的两端认为其正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中…...

Leetcode 50. Pow ( x , n ) 快速幂、取模 C++实现
问题:Leetcode 50. Pow ( x , n ) 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数。 算法: 具体实现流程如下: 代码: class Solution { public:double myPow(double x, int N) {double ans 1;long long n N;if (n <…...

Java SE vs Java EE 与 JVM vs JDK vs JRE
Java SE(Java Platform,Standard Edition): Java 平台标准版,Java 编程语言的基础,它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简单的服务器应用程序。…...