文章目录
- 一、响应断言(Response Assertion) 参数说明
- 二、准备工作
- 三、测试计划设计
- 3.1、包括
- 3.2、匹配
- 3.3、相等
- 3.4、字符串
- 3.5、字符串
- 3.6、或者
一、响应断言(Response Assertion) 参数说明
可以对 Jmeter 取样器的响应消息进行检查
使用场景:当响应中有明显的业务标志时,我们可以采用该断言器检测响应报文返回的特征值,进而判断在业务上是否确定
使用频率:非常高,大部分场景均可以使用该断言器
右键 >>> 添加 >>> 断言 >>> 响应断言(Response Assertion)
断言成功,查看结果为绿标;断言失败,查看结果为红标
Apply to
-
Main sample and sub-samples:作用于父节点取样器及对应子节点取样器;对所有取样器进行断言
-
Main sample only:只作用于父节点取样器;只对主取样器进行断言
-
Sub-samples only:只作用于子节点取样器;只对子取样器进行断言(子取样器:原始取样器,通过后置处理器处理后,获取的请求结果)
-
JMeter Variable Name to use:作用于jmeter变量;针对某一个变量进行断言(输入框内输入变量名称)
测试字段(Field to Test)
-
响应文本(Text Response):从服务器返回的响应文本,比如body,包含 HTTP 头(请求的响应数据——Response Body)
-
响应代码(Response Code):比如 200、404(请求的取样器结果中的 Response code)
-
响应消息(Response Message):比如 OK(请求的取样器结果中的 Response message)
-
响应头(Response Headers):比如 Set-Cookie 头(请求的响应数据——Response headers)
-
请求头(Request Headers):(请求的请求——Request Headers)
-
URL样本(URL Sample):请求的地址(请求的请求——Request Body 中的地址)
-
文档(文本)(Document(text)):通过 Apache Tika 追踪的各种类型文档的文本(比如返回的是HTML格式,其中的文本信息)
-
忽略状态(lonore Status):指示 JMeter 设置 sampler status 的初始状态为 success。sample status 是否成功,由已 Response status 和断言结果决定,当选中 Ignore Status 时,Response status 被强制设置为 success,不执行进一步的断言判断。仅第一次断言时使用
-
请求数据(Request Data):(请求的请求——Request Body)
模式匹配规则(Pattern Matching Rules)
-
包括(Contains):响应内容包括需要匹配的内容即代表响应成功,支持正则表达式
-
匹配(Matches):响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式。
-
Equals:响应内容要完全等于需要匹配的内容才代表成功,大小写敏感,需要匹配的内容是字符串正则表达式
-
Substring:返回结果包含指定结果的字串,但是 subString 不支持正则字符串
-
否(Not):不进行匹配
测试模式(Patterns Matching Rules): 与模式匹配规则一同使用,可以直接写值也可以使用正则表达式
自定义失败消息(Custom failure message): 自定义失败消息
二、准备工作
慕慕生鲜: http://111.231.103.117/#/login
-
进入网页后,登录,页面提供了账户和密码
-
搜索框输入“虾”
-
右键检查或按F12,打开调试工具,点击搜索
三、测试计划设计
3.1、包括
(1)、测试计划右键 <<< 添加 <<< 配置原件 <<< 用户定义的变量
- 添加一个变量:IP,值为 111.231.103.117
(2)、测试计划右键 <<< 添加 <<< 测试片段 <<< 测试片段
- 名称:HTTP 采样请求
(3)、在网页中,调试中点击网络,找到请求,点击负载,复制参数值
(4)、HTTP 采样请求右键 <<< 添加 <<< 取样器 <<< HTTP请求
-
协议:GET
-
路径:/product/list
-
点击从剪切板添加,会自动添加;也可手动添加
(5)、HTTP请求右键 <<< 添加 <<< 后置处理器 <<< JSON提取器
- 勾选 Main sample only
只对主取样器进行提取
- Name of created variable:var1
参数名为:var1
- JSON Path expressions:$…list[*].name
$:开始符固定的;..:0到多个级别,单个为根级别;list:返回的响应数据结构,相当于字典,key为list的值;name:list值中名为name键的值
- Match No. (0 for Random):-1
匹配所有符合正则表达式的值
(6)、HTTP请求右键 <<< 添加 <<< 后置处理器 <<< 调试后置处理程序
- 参数默认即可
(7)、HTTP请求右键 <<< 添加 <<< 配置元件 <<< HTTP请求默认值
-
协议:http
-
服务器名称或IP:${IP}
使用变量获取ip
-
端口:8083
-
内容编码:utf-8
(8)、在网页中,调试中点击网络,找到请求,点击标头找到请求标头,复制所有请求标头
(9)、HTTP请求右键 <<< 添加 <<< 配置元件 <<< HTTP信息头管理器
- 点击从剪切板添加,会将复制的值自动添加进去
如图,可以将信息头中的 ip 使用变量 ${IP} 代替
(10)、测试计划右键 <<< 添加 <<< 线程(用户)<<< 线程组
- 参数默认即可
(11)、线程组右键 <<< 添加 <<< 逻辑控制器 <<< 模块控制器
- 选择 HTTP 采样请求
(12)、线程组右键 <<< 添加 <<< 断言 <<< 响应断言
- 勾选 Main sample only
只对主取样器(HTTP请求)进行断言
- 勾选 响应文本
请求的响应数据——Response Body
-
勾选 包括
-
测试模式中,点击添加,输入正则表达式:.*虾
表示断言响应文本中,是否包含 “虾” 这个字;.*代表任意字符;测试模式中可以直接写值也可以使用正则表达式;比如:龙虾、.*虾、.*虾.*
(13)、线程组右键 <<< 添加 <<< 监听器 <<< 查看结果树
(14)、点击启动,点击查看结果树,查看请求及取样器信息
如图,HTTP请求成功,HTTP请求的响应数据下的Response Body中存在多个 “虾” 字,所以断言成功,请求也是成功的
包括:只要所选的测试字段中,包含了所添加的测试模式的正则表达式,则断言成功
3.2、匹配
测试计划设计在 3.1 基础上进行修改验证
(1)、修改 响应断言,勾选匹配
- 勾选 Main sample only
只对主取样器(HTTP请求)进行断言
- 勾选 响应文本
请求的响应数据——Response Body
-
勾选 匹配
-
测试模式中,点击添加,输入正则表达式:.*虾
表示断言响应文本中,是否匹配所设置的正则表达式;.*代表任意字符
(2)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,主取样器 HTTP请求 失败,说明断言是失败的,因为勾选的是 Main sample only,并不断言子取样器,所以子取样器 HTTP请求-0 是成功的
(3)、修改 响应断言,将测试模式中的正则表达式改为:.*虾.*
.*虾.*
(4)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,此时请求成功,说明断言也是成功的
匹配:所选的测试字段中,匹配上了所添加的测试模式中的正则表达式(测试字段中的所有值都匹配上),则断言成功
3.3、相等
测试计划设计在 3.2 基础上进行修改验证
(1)、修改 响应断言,勾选相等
- 勾选 Main sample only
只对主取样器(HTTP请求)进行断言
- 勾选 响应文本
请求的响应数据——Response Body
-
勾选 相等
-
测试模式中,点击添加,将HTTP请求下的响应数据下的Response Body下的返回值,全部复制粘贴过来
选择 相等时,不能写正则表达式
(2)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,此时请求成功,说明断言也是成功的
相等:所选的测试字段中,测试模式中的值必须与所选测试字段返回的值完全一致,则断言成功;选择相等时,测试模式中正则表达式无效
3.4、字符串
测试计划设计在 3.3 基础上进行修改验证
(1)、修改 响应断言,勾选字符串
- 勾选 Main sample only
只对主取样器(HTTP请求)进行断言
- 勾选 响应文本
请求的响应数据——Response Body
-
勾选 字符串
-
测试模式中,点击添加,添加需要断言的字符串:龙虾
只要包含多添加的字符串即断言成功;选择 字符串时,不能写正则表达式
(2)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,此时请求成功,说明断言也是成功的
字符串:所选的测试字段中,包含测试模式中的字符串值,则断言成功;选择字符串时,测试模式中正则表达式无效,会将所写的正则表达式当成字符串进行判断
3.5、字符串
测试计划设计在 3.4 基础上进行修改验证
(1)、修改 响应断言,勾选否
- 勾选 Main sample only
只对主取样器(HTTP请求)进行断言
- 勾选 响应文本
请求的响应数据——Response Body
-
勾选 字符串
-
测试模式中,点击添加,添加需要断言的字符串:龙虾
只要包含多添加的字符串即断言成功;选择 字符串时,不能写正则表达式
- 勾选 否
取反值,当字符串断言成功时,则取反,断言失败,请求失败;当字符串断言失败时,则取反,断言成功,请求成功
(2)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,主取样器 HTTP请求 失败,说明断言是失败的;3.4 中断言是成功的,响应断言 中勾选 否,则取反,断言失败,请求失败
否:取反值,当所选测试字段与所写测试模式对应上时,则取反,断言失败,请求失败;当所选测试字段与所写测试模式未对应上时,则取反,断言成功,请求成功
3.6、或者
测试计划设计在 3.5 基础上进行修改验证
(1)、修改 响应断言
- 勾选 Main sample only
只对主取样器(HTTP请求)进行断言
- 勾选 响应文本
请求的响应数据——Response Body
-
勾选 字符串
-
测试模式中,点击添加,添加需要断言的字符串:龙虾、小龙虾、澳洲龙虾
测试模式中可以添加多个需要判断的字符串,只有都包含匹配上,才断言成功
(2)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,主取样器 HTTP请求 失败,说明断言是失败的;HTTP请求,响应数据下的Response Body中,并不存在 ”小龙虾“ 字符串,所以断言失败
(3)、修改 响应断言,勾选 或者
- 勾选 或者
只要测试模式中的字符串有一个匹配上,则断言成功
(4)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息
如图,此时请求成功,说明断言也是成功的
或者:当所选测试字段与所写测试模式中,有一个所写的测试模式值对应上时,则断言成功