断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式。虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是 JMeter 还是为我们提供了适合多个场景的断言元件,辅助我们来更好的完成结果验证工作。在使用 JMeter 进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过。
首先我们来看一下 JMeter 的断言,路径:线程组(用户)->添加->断言;我们可以清楚地看到 JMeter5 中共有 13 个断言(不包括 jp@gc 开头的断言,这个是宏哥安装的插件),如下图所示:
如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于 JMeter5 的断言类型,如下图所示:
通过以上的了解,我们对断言有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的断言。
这一小节,宏哥就由上而下地详细地讲解一下常用的断言。
对响应类为 XML 类型的文件进行断言;
作用对象: 针对 sampler 中的 SOAP/XML-RPC Request 而使用的断言
1、我们先来看看这个 HTML 断言 *长得是啥样子,路径: *线程组 > 添加 > 断言 > **HTML 断言** ,如下图所示:
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,只对误差作统计检查;如果对返回内容的检查结果不超过指定结果,则断言通过,否则失败。
Write JTidy report to file: 写入 JTidy 报告的文件(JTidy 是 Tidy 的一个 java 移植,可以将它当成一个处理 HTML 文件的 DOM 解析器)
MD5 是一种消息摘要算法,用以提供消息的完整性保护,对返回的 MD5 结果进行断言,使用简单,直接跳入 MD5 值。执行服务器响应的 MD5 哈希并将其与给定的 Md5 哈希进行比较。它非常适合您要检查下载文件是否完整的情况。
作用对象: 针对参数类型为 MD5Hex 加密的参数的断言
1、我们先来看看这个 MD5 Hex 断言 *长得是啥样子,路径: *线程组 > 添加 > 断言 > **MD5 Hex 断言** ,如下图所示:
2、关键参数说明如下:
名称: 控制器的描述性名称,显示在左边节点上,并用于命名事务
注释: 控制器注释信息,非必填项
MD5Hex: 将已被 MD5 加密的参数写入其中,添加取样器等其他元件
SMIME 是一种多用途网际邮件扩充协议,相比于之前的 SMAP 邮件传输协议,增加了安全性,对邮件主题进行保护;
作用对象: 针对采用了该种邮件传输协议的信息
1、我们先来看看这个 SMIME 断言长得是啥样子,路径: 线程组 > 添加 > 断言 > **SMIME 断言** ,如下图所示:
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: 执行断言消息的位置(在返回消息的具体哪个位置执行断言)
XML(可扩展标记语言) 提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的 HTML 标记不同,XML 标记用于定义数据本身的结构和数据类型;
作用对象: 判断返回结果是否和 xml 的格式即<></>成对出现
1、我们先来看看这个 XML 断言长得是啥样子,路径: 线程组 > 添加 > 断言 > **XML 断言** ,如下图所示:
2、关键参数说明如下:
名称: 控制器的描述性名称,显示在左边节点上,并用于命名事务
注释: 控制器注释信息,非必填项
亦可以称为 XML 模型断言/XML 数据类型断言;XML Schema 定义了两种主要的数据类型:①xml document schema 文档架构 ;② 文档架构xml-schema xml 模式
作用对象: 返回结果为 XML 概要断言的 2 中数据类型的消息
1、我们先来看看这个 XML Schema 断言 *长得是啥样子,路径: *线程组 > 添加 > 断言 > **XML Schema 断言** ,如下图所示:
2、关键参数说明如下:
名称: 控制器的描述性名称,显示在左边节点上,并用于命名事务
注释: 控制器注释信息,非必填项
文件名: 载入文件名 ,(写入需要断言的文件名称)
BeanShell 是一种松散类型的脚本语言(这点和 JS 类似),一种完全符合 java 语法的 java 脚本语言,并且又拥有自己的一些语法和方法;
BeanShell 断言支持各种开发语言,本文介绍使用 java 编写断言,使用 BeanShell 断言的好处是可以自由发挥,比如当断言失败,提示预期结果、实际结果,或者失败时把结果输出到日志。
作用对象: 针对 sampler 中的 Bean Shell sampler 而使用的断言
1、我们先来看看这个 BeanShell 断言 *长得是啥样子,路径: *线程组 > 添加 > 断言 > BeanShell 断言 ,如下图所示:
2、关键参数说明如下:
名称: 控制器的描述性名称,显示在左边节点上,并用于命名事务
注释: 控制器注释信息,非必填项
Reset bsh.interpreter before each call: 在每次调用 Bean Shell 之前重置 bsh.interpreter 类(bsh.interpreter 是 Bean Shell 脚本语言的一种类,也可以理解为一种解析器)
Parameters(String Parameters and String [] bsh.args): String 参数(String [] bsh.args 是主类 main 函数的形式参数,是一个 String 对象数组,可以用来获取命令行用户输入进去的参数)
Script file: 脚本文件(可以填入脚本文件路径)
Script(see below for variables that are defined): 参照下文定义的变量(使脚本文件参照定义的变量来运行)
好了,今天到这里 JMeter5 的所有断言基础就介绍和分享完了,感谢您耐心的阅读和一路支持宏哥!!!
的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波 ** 推荐 ** 不要忘记哦!!!