性能测试-JMeter(2)

news2025/1/17 17:53:50

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进行过滤设置

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

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

相关文章

【Linux】【命令】查找(grep/find)与统计(wc)

查找与统计 grepfindwcExamples grep grep 命令用于在文件中或者标准输出中搜索特定字符串&#xff0c;并显示匹配结果。 grep 全称&#xff1a;Global Regular Expression Print 基本语法&#xff1a; grep [OPTION]... PATTERN [FILE] ...默认情况下&#xff0c;PATTERN 是…

浙大数据结构:09-排序3 Insertion or Heap Sort

这个题跟上个题差不多&#xff0c;只不过是换成了堆排序而已 机翻 1、条件准备 跟之前一样&#xff0c;oldnum数组存旧数组&#xff0c;newnum数组存新数组 #include <iostream> #include<vector> #include<algorithm> using namespace std; #define end…

从调用NCCL到深入NCCL源码

本小白目前研究GPU多卡互连的方案&#xff0c;主要参考NCCL和RCCL进行学习&#xff0c;如有错误&#xff0c;请及时指正&#xff01; 内容还在整理中&#xff0c;近期不断更新&#xff01;&#xff01; 背景介绍 在大模型高性能计算时会需要用到多卡&#xff08;GPU&#xf…

Android实现App内直接预览本地PDF文件

在App内实现直接预览pdf文件&#xff0c;而不是通过调用第三方软件&#xff0c;如WPS office等打开pdf。 主要思路&#xff1a;通过PhotoView将pdf读取为图片流进行展示。 一、首先&#xff0c;获取对本地文件读取的权限 在AndrooidManifest.xml中声明权限&#xff0c;以及页…

案例-登录认证(上)

案例-登录认证 在前面的课程中&#xff0c;我们已经实现了部门管理、员工管理的基本功能&#xff0c;但是大家会发现&#xff0c;我们并没有登 录&#xff0c;就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的&#xff0c;所以我们今天的主题就是登录 认证。 最终我…

Educational Codeforces Round 170 (Rated for Div. 2)(A~E题解)

本场也算是对我努力的一个reward吧&#xff0c;也是非常nice啊&#xff0c;话不多说&#xff0c;先写题解&#xff0c;写完直接休息 A. Two Screens 思路&#xff1a;我们先去想其最多需要多少次&#xff0c;也就是两个串长度之和&#xff0c;然后在哪里有优化呢&#xff1f;就…

pip安装opencv和imageio_ffmpeg慢,pip使用清华镜像源

文章目录 一、在命令行使用二、修改配置文件 pip.ini 一、在命令行使用 1、普通安装 pip install package pip install opencv-python2、使用清华源进行安装&#xff08;暂时&#xff09; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package pip install -i …

从opencv-python入门opencv--GUI功能之绘图鼠标与图像界面的交互

从opencv-python入门opencv--GUI功能之绘图和鼠标操作 一、文章介绍二、opencv绘制直线、矩形、圆形1、cv.line()2、cv.circle()3、cv.rectangle()4、在图像上绘制直线、矩形和圆形5、cv.ellipse()&#xff08;在空白画布上绘制椭圆&#xff09;&#xff08;1&#xff09;img …

Linux的Spark 环境部署

前言:需自行准备hadoop集群 1. Spark 是一款分布式内存计算引擎&#xff0c; 可以支撑海量数据的分布式计算。 Spark 在大数据体系是明星产品&#xff0c; 作为最新一代的综合计算引擎&#xff0c; 支持离线计算和实 时计算。 在大数据领域广泛应用&#xff0c; 是目前世界上使…

关于Java部署项目,文件上传路径问题 、Windows是\ linux是/

Windows是\ linux是/ &#xff0c;踩坑。报错如下&#xff1a;

HyperWorks汽车B-柱网格变形

在这一节&#xff0c;将练习如何使用变形域&#xff0c;实现汽车 B-柱有限元模型的网格变形。 图 7-13 网格变形前后的 B 柱模型 Step01&#xff1a;读取并查看模型。 打开模型文件 Exercise_7c.hm。 Step02&#xff1a;创建变形域。 (1) 通过路径 HyperMorph > Morph…

SDV 峰会聚焦:下一代软件定义汽车的关键开源技术

10 月 17 - 18 日&#xff0c;由 GOSIM 开源创新汇主办、CSDN 承办的 GOSIM CHINA 2024 将在北京盛大启幕。作为 GOSIM 开源年度大会的第三届盛会&#xff0c;本次活动邀请了 60 多位国际开源专家&#xff0c;汇聚了来自全球百余家顶尖科技企业、知名高校及开源社区的技术大咖、…

量子计算机的原理与物理实现

量子计算机的原理与物理实现很复杂 指导性原则 首先思考制备一台量子计算机需要些什么&#xff1f; 需要量子比特——二能级量子系统。除了量子计算机需要满足一些物理特性&#xff0c;它还必须要把量子比特绘制到某种初态上&#xff0c;以及测量系统的输出态。 而实验上的挑战…

Vue检测获取最新资源 解决浏览器缓存问题

Vue检测获取最新资源 解决浏览器缓存问题 1、在public文件夹下创建version.json文件2、vue.config.js中&#xff0c;每次打包动态更新version.json内容3、App.vue中使用定时器去检测版本号和本地是否有差异 背景&#xff1a;由于浏览器缓存问题&#xff0c;vue2项目发布后&…

毕业设计选题:基于ssm+vue+uniapp的实习记录小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

数码准备记录

1.数据结构 常见的数据结构包括数组、链表、栈、队列、树&#xff08;如二叉树、B树、B树&#xff09;、图等 2.队列和栈的区别 队列是一种先入先出的数据结构&#xff0c;即最先加入的元素被最先移除&#xff1b; 栈是一种后进后出的数据结构&#xff0c;即最后加入的元素…

nbsaas vue3管理后台框架

nbsaas vue3管理后台框架 一、项目概述 Nbsaas Admin Vue 是一个基于 Vue.js 3.0 构建的轻量级后台管理系统&#xff0c;结合了现代前端技术栈的最佳实践&#xff0c;旨在帮助开发者快速构建具有高可扩展性和良好用户体验的后台管理系统。该项目拥有简洁的 UI 设计&#xff0…

计算机性能的指标

CPI——每条指令的时钟周期数&#xff08;执行一条指令所需的时间周期&#xff09;

基于SpringBoot+Vue+MySQL的社区医疗管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当前医疗体系日益完善的背景下&#xff0c;社区医院作为基层医疗服务的重要一环&#xff0c;其管理效率和服务质量直接关系到居民的健康福祉。传统的社区医院管理模式存在效率低下、资源分配不均、患者就医体验差等问题。为了…

SpringBoot技术在人事管理中的应用:系统开发全解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…