当前位置: 首页 > news >正文

【P46】JMeter 响应断言(Response Assertion)

文章目录

    • 一、响应断言(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)、点击清除全部,点击启动,点击查看结果树,查看请求及取样器信息

在这里插入图片描述

如图,此时请求成功,说明断言也是成功的

或者:当所选测试字段与所写测试模式中,有一个所写的测试模式值对应上时,则断言成功

相关文章:

【P46】JMeter 响应断言(Response Assertion)

文章目录 一、响应断言&#xff08;Response Assertion&#xff09; 参数说明二、准备工作三、测试计划设计3.1、包括3.2、匹配3.3、相等3.4、字符串3.5、字符串3.6、或者 一、响应断言&#xff08;Response Assertion&#xff09; 参数说明 可以对 Jmeter 取样器的响应消息进…...

19-02 基于业务量级的架构技术选型演进

从零开始——单服务应用 单体应用技术选型 &#xff08;GitHub、Gitee…&#xff09;搜索是否有线程的产品用最熟悉的技术&#xff0c;最快的速度上线如果有经费&#xff1a;考虑商业化解决方案 个人小程序怎么做技术选型的 搜索是否有快速搭建下程序的软件技术选型 后端技…...

Server - 高性能的 PyTorch 训练环境配置 (PyTorch3D 和 FairScale)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/130863537 PyTorch3D 是基于 PyTorch 的 3D 数据深度学习库&#xff0c;提供了高效、模块化和可微分的组件&#xff0c;以简化 3D 深度学…...

小猫踩球-第14届蓝桥杯省赛Scratch中级组真题第2题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第137讲。 小猫踩球&#xff0c;本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第2题&#xf…...

嵌入式开发从入门到精通之第二十一节:三轴加速度传感器(BMA250E)

目录 1、工作模式 2、中断支持的模式 2.1 新数据的产生 2.2 任何斜率的变化的监测...

代码随想录算法训练营第三十六天|435. 无重叠区间 763.划分字母区间 56. 合并区间

目录 LeeCode 435. 无重叠区间 LeeCode 763.划分字母区间 LeeCode 56. 合并区间 LeeCode 435. 无重叠区间 435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;按照右边界排序&#xff0c;从左向右记录非交叉区间的个数。最后用区间总数减去非交叉…...

shell 脚本

Shell概述 shell是一个命令行解释器&#xff0c;它接收应用程序/用户命令&#xff0c;然后调用操作系统内核 脚本入门 脚本格式 脚本以#!/bin/bash开头&#xff08;指定解析器&#xff09; helloworld # 创建脚本 [linuxlocalhost datas]$ cat helloworld.sh #!/bin/bas…...

Linux :: 【基础指令篇 :: 用户管理(补充):(4)】::用户切换

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 目录索引&am…...

打印机无法扫描的原因及解决方法

在家庭和办公环境中&#xff0c;打印机已成为不可或缺的设备。它不仅可以打印文件&#xff0c;还可以扫描文档并将它们转换为数字数据。但有时&#xff0c;打印机可能无法扫描文档或图片。以下是可能导致这些问题的原因和解决方法。 出现打印机无法扫描的原因&#xff1a; 1.…...

【Mysql】 数据类型

文章目录 【Mysql】 数据类型数据类型分类数值类型1. tinyint类型2. bit类型3. 小数类型 字符串类型1.char2.varchar3. 日期和时间类型4. enum 和 set 【Mysql】 数据类型 mysql中数据类型的作用&#xff1a; 约束操作者的行为更清晰的代码逻辑不同的功用 – 例如&#xff0c…...

mysql中如何使用乐观锁和悲观锁

MySQL中可以使用SELECT ... FOR UPDATE语句来实现悲观锁。这个语句会在查询时锁定被查询的行&#xff0c;在事务结束前都不会释放锁。 例如&#xff0c;我们可以使用以下的 SQL 语句来锁定一个特定的行&#xff1a; BEGIN; SELECT * FROM table WHERE id 1 FOR UPDATE; ... C…...

Logstash技术栈总结

Logstash 是一个可以传输和处理你的日志、事务或其他数据的功能强大的工具&#xff0c;可与各种部署集成。 它提供了大量插件&#xff0c;可帮助你解析&#xff0c;丰富&#xff0c;转换和缓冲来自各种来源的数据。 工作原理 Logstash 事件处理有三个阶段&#xff1a;inputs …...

解决:在单项目组件里面引入 base.scss/ base.less 等的外部文件不成功的问题

1、问题展示&#xff1a; 其一、问题描述&#xff1a; 在单文件组件里面使用封装在 base.scss 或 base.less 里面的样式用法一直不成功&#xff1b; 其二、代码&#xff1a; // 虽然已经标明了用的是 scss 的语法&#xff0c;但是页面调用 .scss 里的 style 样式还是不成功&a…...

论文分享 | WSBERT:Weighted Sampling for Masked Language Modeling

本次分享阿里巴巴达摩院语音实验室、新南威尔士大学与香港科技大学&#xff08;广州&#xff09;等在ICASSP2023会议发表的论文《Weighted Sampling for Masked Language Modeling》。该论文主要提出了两种简单有效的加权采样策略&#xff0c;来缓解掩码语言模型&#xff08;ML…...

java 在线音乐网站系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 在线音乐网站系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助struts2开发技术&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mys…...

软件测试基础教程学习1

文章目录 软件测试概述1.1 什么是软件测试1.2 软件测试的目的1.3 对软件测试的理解1.4 软件测试的原则1.5 测试人员的职责1.6 测试人员的素质要求 软件测试概述 1.1 什么是软件测试 1&#xff09;软件测试要发现软件的错误。 2&#xff09;软件测试最终要以软件满足用户需求为…...

浅谈一下@Async和SpringSecurityContext可能会遇到的问题和解决方案

Async和SpringSecurityContext 场景回溯 在执行一个用时较长的批量插入业务的时候,我尝试使用Async异步对业务进行优化,但是却给我报了空指针的错误,定位之后发现 此处我是基于SpringSecurity来获取用户的 是currentUserService获取到的当前登陆用户为空导致的,但是当前确实是…...

VUE常见面试题

1.为什么要使用Vue&#xff1f; 答&#xff1a;Vue是一款优秀的前端框架&#xff0c;它可以帮助我们快速构建高效、可复用、易维护的Web应用程序&#xff0c;并提供了丰富的API和生态系统。 2. Vue有哪些生命周期钩子函数&#xff1f; 答&#xff1a;Vue有8个生命周期钩子函…...

字符串匹配算法--KMP算法--BM算法

该算法解决的是字符串匹配问题&#xff0c;即查看字符串中是否含有完整的匹配字符串。如在java的string的contains方法匹配问题最简单的就是暴力破解了。在java的contains也是这么实现的&#xff0c;效率是低一点的。如果想要更快的速度可以自己写KMP算法。 代码实现体验 Knut…...

swagger的简单介绍

目录 swagger是什么&#xff1f; swagger有什么用&#xff1f; Swagger包含的工具集&#xff1a; swagger的使用步骤&#xff1a; swagger的相关注解&#xff1a; Docket的源码 了解swagger的作用和概念了解前后端分离在SpringBoot中集成Swagger swagger是什么&#xff1f;…...

HNU-电路与电子学-小班3

第三次讨论 1 、直接用晶体管而不是逻辑门实现异或门&#xff0c;并解释这个电路是如何工作的。 &#xff08;6个 MOS 管构成&#xff09; 2 、通信双方约定采用 7 位海明码进行数据传输。请为发送方设计海明码校验位 生成电路&#xff0c;采用功能块和逻辑门为接收方设计海…...

[机缘参悟-98] :层次不同、维度不同、视角不同、结论不同

目录 全局VS具备&#xff0c; 总体V部分 认知的六个认知层次&#xff1a; 认知的六个立体化维度&#xff1a; 0、维空间&#xff0c;点思维 1、一维空间&#xff0c;直线思维 2、二维空间&#xff0c;平面思维 3、三维空间&#xff1a;立体思维。 4、四维空间&#xff…...

chatgpt-web发布之docker打包流程

docker打包流程 1、使用docker前置准备&#xff1a; 电脑下载docker桌面版&#xff0c;以及开启虚拟机步骤&#xff1a;https://blog.csdn.net/qq_34905631/article/details/126573826下载docker桌面版 &#xff1a;https://docs.docker.com/desktop/install/windows-install…...

动态优化会议地点

前言 在现在快节奏的工作节奏下&#xff0c;大家的活动范围越来越广&#xff0c;但是出行成本也相应提高。在集体会面的时候&#xff0c;如何选择合适的地点成为了一个棘手的问题。本文将介绍如何通过动态优化选择会议地点&#xff0c;以达到平均交通成本最低的目标。 动态优化…...

Golang每日一练(leetDay0076) 第k大元素、组合总和III

目录 215. 数组中的第K个最大元素 Kth-largest-element-in-an-array &#x1f31f;&#x1f31f; 216. 组合总和 III Combination Sum iii &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日…...

可节省60% MCU开发成本的NV080D-S8,单片机语音芯片在恒温碗上的应用

社会在不断进步&#xff0c;科技在不断发展&#xff0c;如今的恒温碗不仅带有温度显示功能&#xff0c;更附带有语音播报&#xff0c;能更好地知晓当前饭菜&#xff0c;变凉或过烫的情况&#xff0c;有效避免伤害宝宝脆弱的肠胃&#xff1b; 广州九芯电子推出了一款&#xff0c…...

Java并发常见面试题

参考:javauide、程序员大斌、面试宝典 1.并发与并行的区别 并发:两个及两个以上的作业在同一 时间段 内执行。并行:两个及两个以上的作业在同一 时刻 执行。2.同步和异步的区别 同步:发出一个调用之后,在没有得到结果之前, 该调用就不可以返回,一直等待。异步:调用在发…...

基于vue3+pinia2仿ChatGPT聊天实例|vite4.x仿chatgpt界面

使用vue3pinia2开发仿制chatgpt界面聊天实例Vue3-Chatgpt 基于Vue3.xPinia2VueRouterVue3-Markdown等技术构建仿ChatGPT网页端聊天程序。支持经典分栏界面布局、light/dark模式、全屏半屏显示、Markdown语法解析、侧边栏隐藏等功能。 技术框架 编辑工具&#xff1a;Cursor框架…...

JDK动态代理和CGLIB动态代理

JDK动态代理和CGLIB动态代理 JDK动态代理和CGLIB动态代理 JDK动态代理和CGLIB动态代理 ① JDK动态代理只提供接口的代理&#xff0c;不支持类的代理&#xff0c;要求被代理类实现接口。JDK动态代理的核心是InvocationHandler接口和Proxy类&#xff0c;在获取代理对象时&#x…...

Jetpack Hilt 框架的基本使用

什么是 Hilt&#xff1f; Hilt 是一个功能强大、用法简单的依赖注入框架&#xff0c;于 2020 年加入到 Jetpack 家族中。它是 Android 团队联系了 Dagger2 团队&#xff0c;一起开发出来的一个专门面向 Android 的依赖注入框架。相比于 Dagger2&#xff0c;Hilt 最明显的特征就…...