1.简介

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

2.预览断言

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

如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于JMeter5的断言类型,如下图所示:

通过以上的了解,我们对断言有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的断言。

3.常用断言详解

这一小节,宏哥就由上而下地详细地讲解一下常用的断言。

3.1 HTML断言

对响应类为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解析器)

3.2MD5 Hex断言

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

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

1、我们先来看看这个 MD5 Hex断言 长得是啥样子,路径:线程组 > 添加 > 断言 > MD5 Hex断言,如下图所示:

2、关键参数说明如下:

名称:控制器的描述性名称,显示在左边节点上,并用于命名事务

注释:控制器注释信息,非必填项

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

3.3 SMIME断言

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:执行断言消息的位置(在返回消息的具体哪个位置执行断言)

3.4XML断言

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

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

1、我们先来看看这个 XML断言长得是啥样子,路径:线程组 > 添加 > 断言 > XML断言,如下图所示:

2、关键参数说明如下:

名称:控制器的描述性名称,显示在左边节点上,并用于命名事务

注释:控制器注释信息,非必填项

3.5 XML Schema断言

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

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

1、我们先来看看这个 XML Schema断言 长得是啥样子,路径:线程组 > 添加 > 断言 > XML Schema断言,如下图所示:

2、关键参数说明如下:

名称:控制器的描述性名称,显示在左边节点上,并用于命名事务

注释:控制器注释信息,非必填项

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

3.6 Bean Shell断言

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):参照下文定义的变量(使脚本文件参照定义的变量来运行)

4.小结

  好了,今天到这里JMeter5的所有断言基础就介绍和分享完了,感谢您耐心的阅读和一路支持宏哥!!!

的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  不要忘记哦!!!

别忘了点 推荐 留下您来过的痕迹

Jmeter(二十二) - 从入门到精通 - JMeter断言 - 下篇(详解教程)的更多相关文章

  1. Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

    1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...

  2. Jmeter(二十九) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy2(详解教程)

    1.简介 上一篇文中已经对Badboy做了一个基本上详细完整的介绍,这一篇宏哥带你们实战一下,这一篇主要讲解和分享:录制和运行脚本.参数化 首先让我们使用N模式录制一个脚本,测试用例编号为:1.1.1 ...

  3. Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)

    1.简介 在性能测试中为了真实模拟用户请求,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化.JMeter配置元件与前置处理器都能帮助我们进行参数化,但是都有局限性,为了帮助我们能够更好 ...

  4. Jmeter(二十八) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy1(详解教程)

    1.简介 在使用jmeter自动录制脚本时会产生很多无用的请求,所以推荐使用badboy录制脚本之后保存为jmx文件,在jmeter中打开使用.因此宏哥在这里介绍一下Badboy这款工具,本来打算不做 ...

  5. Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)

    1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...

  6. Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)

    1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...

  7. 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...

  8. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  9. Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)

    1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下. 2.什么是远程运行? 远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一 ...

  10. Jmeter(十四) - 从入门到精通 - JMeter定时器 - 下篇(详解教程)

    1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...

随机推荐

  1. Spring事务处理时自我调用

    1.预备知识 aop概念请参考[http://www.iteye.com/topic/1122401]和[http://jinnianshilongnian.iteye.com/blog/141859 ...

  2. set自动排序去重 stringstream流分割字符

    链接:https://vjudge.net/problem/UVA-10815#author=0 题意:给几段句子,按字典序筛选出单词. 题解:用C的话太麻烦,不如用自动去重并排序的set容器.有个地 ...

  3. IDEA 2020.1.2,IDEA 2020.1.3永久破解(持续更新)

    1. 本教程适用于 IntelliJ IDEA 2020.1.3 以下所有版本,请放心食用~2. 本教程适用于 JetBrains 全系列产品,包括 IDEA. Pycharm.WebStorm.Ph ...

  4. PHP ucwords() 函数

    实例 把每个单词的首字符转换为大写: <?php高佣联盟 www.cgewang.comecho ucwords("hello world");?> 定义和用法 ucw ...

  5. 初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!

    编程并不是说代码怎么写,框架怎么用,业务怎么转换为代码逻辑,这些都不是编程的要素(但却是工作的刚需......).我认为按照下面这个路线来学习编程,会使自己在学习的路途上少去很多问题(比如为啥会有多线 ...

  6. Servlet容器启动过程

    参考:https://blog.csdn.net/fredaq/article/details/9366043 一.概念 所谓Servlet容器其实说白了是符合Servlet规范的Java web容器 ...

  7. RabbitMQ好文章推荐

    文章来源:掘金    作者:申城异乡人 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例     https://juejin.im/post/5ce644b9f ...

  8. this.getClass().getResource(String) 路径问题

    this.getClass().getResource(String) 路径问题    这里的默认当前路径是该类所在目录: this.getClass() 说明了一切!! 找到类,就找文件:很显然和类 ...

  9. Python多线程-ThreadLocal

    参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017630786314240#0 ThreadLocal ThreadLocal变量虽然是 ...

  10. IdentityServer4 (2) 密码授权(Resource Owner Password)

    写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...