JMeter(十六)-JMeter断言

news2024/11/29 7:59:18

十六、JMeter断言

1.简介

  断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式。虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JMeter还是为我们提供了适合多个场景的断言元件,辅助我们来更好的完成结果验证工作。在使用JMeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过。

2.预览断言

  首先我们来看一下JMeter的断言,路径:线程组(用户)->添加->断言;我们可以清楚地看到JMeter5中共有15个断言(不包括jp@gc开头的断言,这个是安装的插件),如下图所示:

3.常用断言详解

比较常用的断言:响应断言、JSON断言、持续时间断言

3.1 响应断言

响应断言,判断返回消息中的内容。响应断言是最常用的一种断言方法,它可以对各种返回类型的结果进行断言,比如Test、html、application/json等

使用频率:非常高,大部分场景均可以使用该断言器

3.1.1新建:线程组 > 添加 > 断言 > 响应断言,如下图所示:

3.1.2关键参数说明如下:

APPly to:

  • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
  • Main sample only:仅作用于父节点取样器(默认)
  • Sub-samples only:仅作用于子节点取样器
  • JMeter Variable Name to use:作用于jmeter变量(输入框内可输入jmeter的变量名称)

测试字段

  • 响应文本:从服务器返回的响应文本,比如body,包含 HTTP 头(请求的响应数据——Response Body)
  • 响应代码:比如 200、404(请求的取样器结果中的 Response code)
  • 响应消息:比如 OK(请求的取样器结果中的 Response message)
  • 响应头:比如 Set-Cookie 头(请求的响应数据——Response headers)
  • 请求头:(请求的请求——Request Headers)
  • URL样本:请求的地址(请求的请求——Request Body 中的地址)
  • 文档(文本):通过 Apache Tika 追踪的各种类型文档的文本(比如返回的是HTML格式,其中的文本信息)
  • 忽略状态:指示 JMeter 设置 sampler status 的初始状态为 success。sample status 是否成功,由已 Response status 和断言结果决定,当选中 Ignore Status 时,Response status 被强制设置为 success,不执行进一步的断言判断。仅第一次断言时使用
  • 请求数据:(请求的请求——Request Body)

模式匹配规则

  • 包括:响应内容包括需要匹配的内容即代表响应成功,支持正则表达式
  • 匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式。
  • 相等:响应内容要完全等于需要匹配的内容才代表成功,大小写敏感,需要匹配的内容是字符串正则表达式
  • 字符串:返回结果包含指定结果的字串,但是 subString 不支持正则字符串
  • 否:不进行匹配

测试模式: 与模式匹配规则一同使用,可以直接写值也可以使用正则表达式

自定义失败消息: 自定义失败消息

3.2JSON断言

JSON断言也是测试工作中经常用到的一种断言方法,它只能针对响应结果是applicaton/json格式的请求进行断言。适用于返回消息是JSON格式

使用频率:比较高,尤其是返回为 JSON 时,为首先断言器

3.2.1新建:线程组 > 添加 > 断言 > JSON断言,如下图所示:

3.2.2关键参数说明如下:

Assert JSON Path exists: json路径

Additionally assert value:等于特定值

Match as regular expression:正则匹配

Expected Value:预期值;支持脚本语言写法

Expect null:空值

Invert assertion(will fail if above conditions met):上面的条件满足则fail;若勾选,表示对断言结果取反

3.3大小断言

大小断言,显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据。判断响应结果是否包含正确数量的byte。可定义(=, !=, >, =,

使用频率:一般

3.3.1新建:线程组 > 添加 > 断言 > 大小断言,如下图所示:

3.3.2关键参数说明如下:

APPly to:

  • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
  • Main sample only:仅作用于父节点取样器(默认)
  • Sub-samples only:仅作用于子节点取样器
  • JMeter Variable Name to use:作用于jmeter变量(输入框内可输入jmeter的变量名称)

响应字段大小

  • 完整响应
  • 响应头
  • 响应的消息体
  • 响应代码
  • 响应信息

Size to Assert:断言字节范围

  • 字节大小
  • 比较类型

3.4 JSR223 断言

JSR223即Java 规范请求,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求;

作用对象:针对取样器中的JSR223 sampler而使用的断言

使用频率:一般

3.4.1新建:线程组 > 添加 > 断言 > JSR223断言,如下图所示:

3.4.2关键参数说明如下:

语言:脚本语言(可以从下面的下拉框中选择对应的脚本语言JavaScript、beanshell等)

参数:(传递给脚本的参数→可以理解为使用JSR223断言脚本时候一起引用的参数 )

文件名:重写脚本(可以通过选择脚本文件的状态,是浏览调用已有的脚本还是在在下方的输入框内写入脚本;)

脚本:下面的输入框表示可以输入变量类型,运用的脚本(取样结果、断言结果、取样日志文件等参数)

3.5XPath2 Assertion

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。

使用频率:一般

3.5.1新增:线程组 > 添加 > 断言 > XPath2 Assertion,如下图所示:

3.5.2关键参数说明如下:

APPly to:

  • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
  • Main sample only:仅作用于父节点取样器(默认)
  • Sub-samples only:仅作用于子节点取样器
  • JMeter Variable Name to use:作用于jmeter变量(输入框内可输入jmeter的变量名称)

XPath2 Assertion

  • 反转断言(如果XPath表达式匹配,则将失败)
  • 验证XPath表达式

命名空间别名列表

输入框中写入xpath断言

3.6 比较断言

这是一种比较特殊的断言元件,针对断言进行字符串替换时使用;

作用对象:需要替换的字符串

使用频率:一般

3.6.1新建:线程组 > 添加 > 断言 > 比较断言,如下图所示:

3.6.2关键参数说明如下:

选择比较运算符

  • 比较的内容:可以选择比较的内容类型(true/false或者自定义,编辑)
  • 比较的时间:比较时间(可以设定比较的时间,单位为秒,默认为-1)

比较过滤器

  • 正则表达式替换
    • 正则表达式:要替换的正则表达式(可从断言结果中选择)
    • 替换:替换的正则表达式(替换结果)

3.7 HTML断言

对响应类为XML类型的文件进行断言;

作用对象:针对sampler中的SOAP/XML-RPC Request而使用的断言

使用频率:一般

3.7.1新建:线程组 > 添加 > 断言 > HTML断言,如下图所示:

3.7.2关键参数说明如下:

Tidy Settings:Tidy 环境(Tidy是一个HTML语法检查器和打印工具,可以将HTML转换为XML类型的文件)

  • Doctype:文档类型(可通过下拉框选择不同文档类型→ omit疏忽遗漏的/auto动态的/strict严格的/loose)

Format:文件格式(可选择HTML/XHTML/XML三种不同类型的文件格式来检查返回内容)

Errors only:误差校正(能接受的最大值)

Error threshold:误差/错误范围(可选择误差/错误数量的范围,最大值)

Warning threshold:警告范围(可选择误差警告的数量范围,最大值)

如果勾选“Error only”这里忽略Warning,只对误差作统计检查;如果对返回内容的检查结果不超过指定结果,则断言通过,否则失败。

将JTidy报告写入文件:写入JTidy报告的文件(JTidy是Tidy的一个java移植,可以将它当成一个处理HTML文件的DOM解析器)

3.8JSON JMESPath Assertion

同JSON断言类似,不详细讲解

3.9MD5 Hex断言

MD5是一种消息摘要算法,用以提供消息的完整性保护,对返回的MD5结果进行断言,使用简单,直接跳入MD5值。执行服务器响应的MD5哈希并将其与给定的Md5哈希进行比较。它非常适合您要检查下载文件是否完整的情况。

作用对象:针对参数类型为MD5Hex加密的参数的断言

3.9.1新建:线程组 > 添加 > 断言 > MD5 Hex断言,如下图所示:

3.9.2关键参数说明如下:

MD5Hex:将已被MD5加密的参数写入其中,添加取样器等其他元件

3.10 SMIME断言

SMIME是一种多用途网际邮件扩充协议,相比于之前的SMAP邮件传输协议,增加了安全性,对邮件主题进行保护;

作用对象:针对采用了该种邮件传输协议的信息

使用频率:少

3.10.1新建:线程组 > 添加 > 断言 > SMIME断言,如下图所示:

3.10.2关键参数说明如下:

signature:签名(可选择对协议的签名验证状态)

  • Verify signature:验证签名
  • Message not signed:没有签名消息

Signer certificate:签名证书(因为SMIME协议增加了安全传输,需要证书验证)

  • No check:不检查
  • Check values:检查

Signer distinguished name:签名证书者名称(证书注册者的名称)

Sigmer email address:签名者的邮件地址(注册的邮件地址)

Issuer distinguished name:发行者名称(由谁发行的证书)

Serial Number:证书序号

Certificate file:选择证书文件

Execute assertion message at position:执行断言消息的位置(在返回消息的具体哪个位置执行断言)

3.11XML Schema断言

亦可以称为XML模型断言/XML数据类型断言;XML Schema 定义了两种主要的数据类型:①xml document schema 文档架构 ;② 文档架构xml-schema xml模式

作用对象:返回结果为XML概要断言的2中数据类型的消息

使用频率:少

3.11.1新建:线程组 > 添加 > 断言 > XML Schema断言,如下图所示:

3.11.2关键参数说明如下:

文件名:载入文件名 ,(写入需要断言的文件名称)

3.12XML断言

XML(可扩展标记语言) 提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的 HTML 标记不同,XML 标记用于定义数据本身的结构和数据类型;

作用对象:判断返回结果是否和xml的格式即<>成对出现

使用频率:少

3.12.1新建:线程组 > 添加 > 断言 > XML断言,如下图所示:

3.13Xpath 断言

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。

使用频率:一般

3.13.1新增:线程组 > 添加 > 断言 > Xpath断言,如下图所示:

3.13.2关键参数说明如下:

APPly to:

  • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
  • Main sample only:仅作用于父节点取样器(默认)
  • Sub-samples only:仅作用于子节点取样器
  • JMeter Variable Name to use:作用于jmeter变量(输入框内可输入jmeter的变量名称)

XML Parsing Options:XML解析选项

  • Use Tidy(tolerant parser):使用Tidy(容错解析器),默认选择quiet(不显示)
    • Quiet:不显示
    • 报告异常
    • 显示警告
  • Use Namespaces:使用名称空间
  • Validate XML:验证XML(文件包/数据)
  • Ignore Whitespace:忽略空格(这允许你指定语法分析器可以忽略哪个空格,而哪个空格是重要的)
  • Fetch external DTDs:获取外部DTDs(一些XML元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在DTDs中声明)

XPath 断言:输入框中写入xpath断言,点击“验证”验证其正确性

  • Invert assertion(will fail if XPath expression matches):反转断言(如果XPath表达式匹配,则将失败)

3.14 断言持续时间

断言持续时间,用于判断服务器的响应时间

使用频率:一般

3.14.1新建:线程组 > 添加 > 断言 > 断言持续时间,如下图所示:

3.14.2关键参数说明如下:

APPly to:

  • 选项默认即可,Main sample only(仅作用于父节点取样器)
  • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
  • Sub-samples only:仅作用于子节点取样器

断言持续时间

  • 持续时间(毫秒):响应时间设置,如果响应时间大于设置的响应时间,则断言失败,否则成功!

3.15 Bean Shell断言

BeanShell是一种松散类型的脚本语言(这点和JS类似),一种完全符合java语法的java脚本语言,并且又拥有自己的一些语法和方法;

BeanShell断言支持各种开发语言,本文介绍使用java编写断言,使用BeanShell断言的好处是可以自由发挥,比如当断言失败,提示预期结果、实际结果,或者失败时把结果输出到日志。

作用对象:针对sampler中的Bean Shell sampler而使用的断言

使用频率:一般

3.15.1新建:线程组 > 添加 > 断言 > BeanShell断言,如下图所示:

3.15.2关键参数说明如下:

每次调用前重置bsh.Interpreter:在每次调用Bean Shell之前重置bsh.interpreter类(bsh.interpreter是Bean Shell脚本语言的一种类,也可以理解为一种解析器)

参数:String参数(String []bsh.args是主类main函数的形式参数,是一个String 对象数组,可以用来获取命令行用户输入进去的参数)

文件名:脚本文件(可以填入脚本文件路径)

脚本(see below for variables that are defined):参照下文定义的变量(使脚本文件参照定义的变量来运行)

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

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

相关文章

Redis原理及常见问题

高性能之道 单线程模型基于内存操作epoll多路复用模型高效的数据存储结构redis的单线程指的是数据处理使用的单线程,实际上它主要包含 IO线程:处理网络消息收发主线程:处理数据读写操作,包括事务、Lua脚本等持久化线程:执行RDB或AOF时,使用持久化线程处理,避免主线程的阻…

服务器监控软件夜莺部署(一)

文章目录 一、夜莺介绍1. 简介2. 相关网站 二、夜莺部署1. 部署架构2. Docker启动3. 配置数据源4. 内置仪表盘效果5. 时序指标效果 一、夜莺介绍 1. 简介 夜莺监控系统是一款专业的服务器监控软件&#xff0c;它可以帮助用户实时监测服务器的CPU、内存、磁盘利用率等。 夜莺监…

二叉树题目:根到叶路径上的不足结点

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;根到叶路径上的不足结点 出处&#xff1a;1080. 根到叶路径上的不足结点 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root…

C语言之sizeof详解,5点透析,帮你真正了解它

今天也要继续坚持 前言 今天复习C语言了解到不少和她有关的知识&#xff0c;才知道之前对他了解甚少&#xff0c;于是写下博客及时记录自己的所得&#xff0c;与大家分享一下 第一点&#xff1a;sizeof不是函数 sizeof是一个关键字而不是函数&#xff01;是的&#xff0c;他…

【AIGC矢量风格】黑色和白色一系列物体

基于矢量风格的一组画面&#xff1a; 矢量风格是海报设计中常见的一种风格&#xff0c;它主要使用矢量图形进行设计。矢量图形是由数学公式定义的图形&#xff0c;其特点是可以在不失去清晰度的情况下进行任意缩放&#xff0c;无论图形尺寸如何变化&#xff0c;都不会失真或模糊…

猫咪训练的方法指南,新手养猫的攻略大全

一、教程描述 本套教程可以教你学会养猫&#xff0c;让您快速成长为养猫专家。视频教程是猫咪基础训练&#xff0c;共有7个视频&#xff0c;电子书教程是养猫攻略大全&#xff0c;共有11本&#xff0c;包括爱猫养护实用手册&#xff0c;全世界250多种猫的彩色图鉴&#xff0c;…

解密C++中的forward<int>(a)和forward<int >(a):你真的了解它们之间的区别吗?

一文看尽C中的forward完美转发 一、前言二、深入理解forward和完美转发三、对forward<int>(a)的解析四、对forward<int &&>(a)的解析五、forward<int>(a)和forward<int &&>(a)的区别总结 一、前言 完美转发在C中具有重要性&#xff0…

kafka 的零拷贝原理

文章目录 kafka 的零拷贝原理 今天来跟大家聊聊kafka的零拷贝原理是什么&#xff1f; kafka 的零拷贝原理 零拷贝是一种减少数据拷贝的机制&#xff0c;能够有效提升数据的效率&#xff1b;   在实际应用中&#xff0c;如果我们需要把磁盘中的某个文件内容发送到远程服务器上…

zlib.decompressFile报错 【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:方案1方案2此Bug解决方案总结寄语项目场景: 最近也是遇到了这个问题,看到网上也有人在询问这个问题,本文总结了自己和其他人的解决经验,解决了zlib.decompressFile报错 的问题。 问题: zlib.decompressFile报错,怎么解…

1. 私有云实战之基础环境搭建

文章目录 服务器搭建准备基础环境介绍展示效果iKuai展示效果iStroreOS展示效果ESXI展示效果群辉展示效果JumpServer展示kubesphere展示 环境搭建ESXI系统安装及基础网络环境配置ESXI系统安装基础网络环境配置配置虚拟交换机配置端口组 ESXI中虚拟机安装 ikuai安装及配置ikuai安…

C# PrinterSettings修改打印机纸张类型,paperType

需求&#xff1a;直接上图&#xff0c;PrinterSettings只能改变纸张大小&#xff0c;打印质量&#xff0c;无法更改打印纸类型 爱普生打印机打印照片已经设置了最高质量&#xff0c;打印图片仍不清晰&#xff0c;需要修改打印纸类型&#xff0c;使用PrintDialog调出对话框&…

普中STM32-PZ6806L开发板(HAL库函数实现-7段共阳数码管数字显示)

简介 通过操作GPIO输出电平实现驱动单个共阳数码管 0 ~ F的显示。电路原理图 数码管电路原理图 数码管与主芯片电路原理图 其他知识 1. 由原理图可知, 共阳极已接VCC, 所以只需要控制GPIO输出低电平就可以点亮7 . 的数码管了. 2. 驱动管与主芯片引脚对应关系A -> PC0…

Python学习笔记之(一)搭建Python 环境

搭建Python 环境 1. 使用工具准备1.1 Python 安装1.1.1 下载Python 安装包1.1.2 安装Python 1.2 VScode 安装1.2.1 下载VScode安装包1.2.2 给VScode安装Python 扩展 2. 第一次编写Python 程序 本篇文章以Windows 系统为例。 1. 使用工具准备 1.1 Python 安装 1.1.1 下载Pytho…

Java多线程之线程池,volatile,悲观锁,乐观锁,并发工具类

目录 1.线程池核心原理1.创建线程池2.任务拒绝策略3.自定义线程池 2.线程池的大小1.最大并行数2.影响线程池大小的因素 3.多线程常见考点&#xff08;volatile&#xff0c;悲观锁&#xff0c;乐观锁&#xff09;4.并发工具类 1.线程池核心原理 ①创建一个空的池子 ②提交任务时…

印象笔记01:初识印象笔记

印象笔记01&#xff1a;初识印象笔记 印象笔记是一个历史比较久的笔记软件&#xff0c;近几年营销渠道不断完善&#xff0c;软件生态也日渐健全。个人因为很早接触印象笔记&#xff0c;从有道云笔记转粉到印象笔记了&#xff08;2017 年&#xff09;。而且在前几年一下子开了十…

图像分割实战-系列教程3:unet医学细胞分割实战1(医学数据集、图像分割、语义分割、unet网络、代码逐行解读)

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 上篇内容&#xff1a; Unet系列算法 下篇内容&#xff1a; unet医学细胞分割实战2 1、医学细胞数据…

vite+Vue3学习笔记(3)——界面设计

1 Element-plus 这是一个基于Vue3的组件库&#xff0c;能够快速构建界面样式。 官网链接&#xff1a; https://element-plus.gitee.io/zh-CN/guide/design.html 1.1 基础组件 1.1.1 安装 项目中的终端输入&#xff1a; npm install --save element-plus 1.1.2 引用 1.1.2.1…

Spring Boot日志:从Logger到@Slf4j的探秘

写在前面 Hello大家好&#xff0c;今日是2024年的第一天&#xff0c;祝大家元旦快乐&#x1f389; 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用&#xff1f;三、日志怎么用&#xff1f;四、自定义日志打印&#x1f4ac; 常见日志框架说明4.1 在程序…

打印菱形和金字塔类型(总结)

首先&#xff0c;在之前的学习中&#xff0c;我们了解了菱形的打印&#xff0c;今天我们来对金字塔和菱形这类打印图形的问题&#xff0c;我们来做一个总结。 这个总结的来源是这今天做了一道题 这道题的答案如下 这个题做起来并不难&#xff0c;拓展到这类问题中&#xff0c;…

Java智慧工地管理平台系统源码带APP端源码

智慧工地将“互联网”的理念和技术引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度地收集人员、安全、环境、材料等关键业务数据&#xff0c;依托物联网、互联网&#xff0c;建立云端大数据管理平台&#xff0c;形成“端云大数据”的业务体系和新的管理模式&a…