『动善时』JMeter基础 — 29、JMeter响应断言详解
1、JMeter断言介绍
JMeter中有个元件叫做断言(Assertion),它的作用和LoadRunner中的检查点类似。用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。
使用断言的原理:在Request请求的返回层面增加一层判断机制。因为Request请求成功了,并不代表结果一定正确。所以通过断言,我们不再会被200状态码所迷惑,而是可以通过断言,看到我们请求是否真正的成功!
解释:状态码200仅表示,请求成功发送,服务器成功接收和处理,并返回处理后的结果的状态。并不能确定返回给客户端数据,是我们需要的数据。
2、响应断言组件界面详解
添加响应断言组件操作:选中“取样器”右键 —> 添加 —> 断言 —> 响应断言。
界面如下图所示:

响应断言组件的详细说明:
- 名称:响应断言组件的自定义名称,见名知意最好。
- 注释:即添加一些备注信息,对该响应断言组件的简短说明,以便后期回顾时查看。
(1)Apply to:响应断言的应用范围
Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器。Main sample only:仅作用于父节点的取样器。(选默认的main sample only就行了)Sub-samples only:仅作用于子节点的取样器。JMeter Variable Name to use:作用于JMeter变量(输入框内可写入正则提取的响应值),从指定变量中提取需要的值。
(2)测试字段
- 响应文本:请求的响应文本信息,不包含响应头信息,最常用的断言字段。
- 响应代码:HTTP请求返回的响应码。
- 响应信息:响应信息中匹配数据(
Response message)。 Response Headers:从响应头信息中提取数据。Request Headers:从请求头信息中提取数据。- URL样本:从请求URL中提取数据,如果有重定向包含重定向URL。
Document (text):文档(文本),通过Apache Tika从各种类型的文档中,提取文本进行验证,包括响应文本,pdf、word等等各种格式文本。- 忽略状态(
Ignore Status): 一个请求进行多项响应断言时,忽略某一项断言的响应结果,而继续下一项断言。 Request Data:从请求体包含的信息中提取数据。
(3)模式匹配规则
- 包括:响应的结果中,包含指定的文本或者字段值,则为True,支持正则表达式。
- 匹配:完全匹配,期望值与实际结果必须完全一致,则为True,一般结合正则表达式使用。
- 相等(
Equals):响应结果与指定的内容完全一致,则为True,不支持正则表达式。 - 子字符串(
Substring):返回结果包含指定的字符串,不需完全匹配,但大小写敏感,则为True,不支持正则表达式。 - 否:不包含或匹配给定文本,则为True。
(4)测试模式
- 在测试模式输入框中,输入我们给定的匹配内容,之后响应断言组件会获取请求中响应的数据与之匹配。
1)点击添加按钮进行编辑数据。
2)从剪贴板添加,就是粘贴已复制的内容到输入框中。
3)删除按钮,删除输入框中的全部内容。 Custom failure message:在输入框中,可以自定义断言失败所显示的消息内容。
提示:响应断言可添加多个,但是多个断言之间是与的关系,不能满足或的需求。
3、响应断言组件的使用
我们以一个登陆接口,来演示响应断言组件的应用。
(1)测试计划内包含的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。 - 在线程组里面,添加取样器“HTTP请求”组件:
选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求。 - 在取样器下,添加断言“响应断言”组件:
选中“取样器”右键 —> 添加 —> 断言 —> 响应断言。 - 在取样器下,添加监听器“断言结果”组件:
选中“取样器”右键 —> 添加 —> 监听器 —> 断言结果。 - 在线程组里面,添加监听器“察看结果树”组件:查看结果,
选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树。
最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
(2)登陆接口请求界面内容
标准的Post请求,填写请求的基本信息和参数即可。
编写内容如下:

(3)响应断言界面内容
可根据要测试响应字段,和模式匹配规则来设置断言。
比如下方截图是匹配,返回结果中的状态码是否是200,如果是则表示断言成功,否则失败。

(4)查看运行结果
我们在察看结果树组件中,观察脚本运行之后的结果。
如果断言正确,和正常发送请求一样,如下图:

如果断言失败,则会出现断言失败的提示,如下图所示:

(5)断言结果组件说明
也添加断言结果监听器,通过断言结果组件来判断断言是否通过。
如下图所示:

说明:
- 已通过的断言仅显示取样器名称。
- 未通过的,除了显示取样器的名称,还显示错误原因。
4、总结
响应断言组件常用于断言三个方面:
- 断言HTTP请求的响应状态码。如上面的练习。
- 断言响应信息中的业务状态码。如下示例:
响应结果:{"status":1,"code":"10001","data":null,"msg":"登录成功"}
匹配业务状态码界面:

- 断言接口请求后服务端响应的数据。(和上面基本一样)
5、补充两个类似的断言组件
(1)大小断言组件
根据返回内容的大小(数据多少)进行断言,作用于返回的响应报文。
添加大小断言(Size Assertion)组件操作:选中“取样器”右键 —> 添加 —> 断言 —> 大小断言。
界面如下图所示:

说明:
1)Apply to:响应断言的应用范围
同响应断言组件。
2)Response Size Field to Test:要断言哪部分内容的字节大小。
Full response:响应全部内容的字节大小。Response Headers:响应头内容的字节大小。Response Body:响应体内容的字节大小。- 响应代码:响应码字节大小。
- 响应信息:
Response message部分信息字节大小。
3)Size to Assert:设置断言字节大小的范围
自己输入字节数,然后选择范围:=、!=、>、<、>=、<=。
(2)持续时间断言组件
用于判断服务器的响应时间是否符合要求。
该断言计算的时间为,从发送请求到收到响应的这段时间,是否在我们设置的时间之内。
如果该时间小于设置时间,则成功;如果大于设置时间,则失败。
添加持续时间断言组件操作:选中“取样器”右键 —> 添加 —> 断言 —> 持续时间断言。
界面如下图所示:

说明:
1)Apply to:响应断言的应用范围
同响应断言组件。
2)断言持续时间:设置请求返回响应的最长时间,单位毫秒。
说明:这两个断言的用法和响应断言的用法一样,这里就不做演示了。
『动善时』JMeter基础 — 29、JMeter响应断言详解的更多相关文章
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
- 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解
目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...
- 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作
目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 18、JMeter配置元件【计数器】
目录 1.计数器介绍 2.计数器界面详解 3.计数器的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)计数器界面内容 (4)HTTP请求界面内容 (5)查看结果 1.计数器介绍 如果需要 ...
- 『动善时』JMeter基础 — 19、JMeter配置元件【随机变量】
目录 1.随机变量介绍 2.随机变量界面详解 3.随机变量的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)随机变量界面内容 (4)HTTP请求界面内容 (5)查看结果 1.随机变量介绍 ...
- 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)
目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...
- 『动善时』JMeter基础 — 30、JMeter中JSON断言详解
目录 1.JSON断言组件界面详解 2.JSON断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)JSON断言界面内容 (4)查看运行结果 (5)断言结果组件说明 3.JS ...
随机推荐
- CloudIDE:为开发者写代码开启“加速”模式
摘要:华为云CloudIDE,以软件基础技术结合新时代业务场景,给开发者提供更高效.优质的开发体验,帮助开发者实现业务创新新动力,以硬核技术重塑云原生开发生产力. 本文分享自华为云社区<华为云C ...
- 微服务的进程间通信(IPC)
微服务的进程间通信(IPC) 目录 微服务的进程间通信(IPC) 术语 概述 通信视角 APIs 消息格式 RPC REST gRPC 断路器 API通信的健壮性 服务发现 异步消息 概念 消息 消息 ...
- hdu4494
题意: 给你一些任务,每个任务有自己的开始时间和需要多久能干完,还有就是每个任务都需要一些人,这些人有最多五个种类,各种类之间的人不能相互替换,但是某些工人干完这个活后如果可以在另一个任务 ...
- ACM JAVA大数
有的水题自己模拟下大数就过了,有的各种坑,天知道曾经因为大数wa了多少次....自己最近学者用JAVA,下面是自己总结的JAVA常用知识.. 框架 import java.util.Scanner; ...
- 基于frida框架Hook native中的函数(1)
作者:H01mes撰写的这篇关于frida框架hook native函数的文章很不错,值得推荐和学习,也感谢原作者. 0x01 前言 关于android的hook以前一直用的xposed来hook j ...
- python 压缩模块大杂烩(zipfile,bz2,lzma,gzip,tarfile,zlib)
[*] 以下压缩模块请结合python的官方文档(https://docs.python.org/3.5/library/index.html)来实践或者对比(我的是python 3.5) 1.pyt ...
- 神经网络与机器学习 笔记—支持向量机(SVM)(上)
支持向量机(SVM)的主要思想: 给定训练样本,支持向量机建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化. 线性可分模式的最优超平面 训练样本{(xi,di)}^N i=1 ,其中x ...
- LeetCode---84. 柱状图中最大的矩形(hard)
题目:84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 示例: 输入: [2,1,5 ...
- 文件描述符fd
java 后台运行程序命令 nohup java -jar babyshark-0.0.1-SNAPSHOT.jar > log.file 2>&1 & 命令解释:后台启动 ...
- Elasticsearch exception [type=mapper_parsing_exception, reason=No type specified for field [X]
可能原因是实体类属性没有指定映射类型 创建mapping时需要指定field的type,如果不指定则报错 错误 //这是一个类中的字段 @Field(store = false) private St ...