当前位置: 首页 > news >正文

性能测试-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作为代理服务器来拦截和转发请求与响应数据

操作步骤

  1. 添加HTTP代理服务器,并进行配置
    • 加HTTP代理服务器:测试计划(右键) --> 非测试元件 -->HTTP代理服务器
    • 配置代理服务器的参数
      在这里插入图片描述
  2. 开启windows操作系统的浏览器代理
    在这里插入图片描述
  3. 启动代理服务器,开始录制
    在这里插入图片描述
    可以通过Requests Filtering进行过滤设置

相关文章:

性能测试-JMeter(2)

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

芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇

今天小编给大家介绍的是UI_Creator&#xff08;μgui&#xff09;平台下关于图像处理的选项。 UI_Creator&#xff08;μgui&#xff09;平台图片类控件有图像控件和分级图像控件&#xff0c;均包含以下选项&#xff1a; 1、消除水波纹&#xff1a; 由于16位真彩色&#xff08…...

QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作

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

element-ui点击文字查看图片预览功能

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

SpringBoot集成Redis使用Cache缓存

使用SpringBoot集成Redis使用Cache缓存只要配置相应的配置类&#xff0c;然后使用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驱动 由于板子引出的接口限制&#xff0c;故使用gpio模拟spi驱动中景园的1.8寸lcd 1.77寸液晶屏 1.8寸TFT LCD SPI TFT彩屏st7735驱动128x160高清屏-淘宝网 (taobao.com) 使用RASC 的gpio配置 根据厂家提供的驱动文件移植 #define LCD_SCLK_Clr() g…...

算法收敛的一些证明方法与案例

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

基于vue框架的蛋糕店网上商城740g7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,店长,商品分类,商品信息,订单投诉,反馈信息 开题报告内容 基于Vue框架的蛋糕店网上商城开题报告 一、项目背景与意义 随着互联网技术的快速发展和普及&#xff0c;电子商务已成为现代商业的重要组成部分。蛋糕作为一种受欢迎的美…...

你真的了解Canvas吗--解密六【ZRender篇】

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

孤独相伴 - 结婚十七年

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

json-server,跨域

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

【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南

目录 流程图示1. 下载 Anaconda 安装程序2. 重命名现有的 Anaconda 安装目录Windows 操作系统Linux 操作系统 3. 运行新的 Anaconda 安装程序Windows 操作系统Linux 操作系统 4. 同步原环境使用 robocopy 命令&#xff08;Windows&#xff09;使用 rsync 命令&#xff08;Linux…...

转行高薪 AI 产品经理,快速入门方法在此处

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

初识环境变量

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

成像基础 -- 景深计算

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

Git中从dev分支恢复master分支

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

12.5 Linux_进程间通信_信号灯

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

Linux——cp-mv-rm命令

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

上升点列

题目描述 在一个二维平面内&#xff0c;给定 n 个整数点 (xi​,yi​)&#xff0c;此外你还可以自由添加 k 个整数点。 你在自由添加 k 个点后&#xff0c;还需要从 nk 个点中选出若干个整数点并组成一个序列&#xff0c;使得序列中任意相邻两点间的欧几里得距离恰好为 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…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...