【测试工具JMeter篇】JMeter性能测试入门级教程(七):JMeter断言

一、前言

在 JMeter 中,断言元件(Assertion)用于验证测试结果是否符合预期。断言元件可以检查服务器的响应数据,以确保它们符合期望的模式或值,从而验证性能测试脚本的正确性。断言元件通常在每个请求的响应中添加,以确保服务器返回了正确的响应。

二、常用的JMeter断言元件

1. 常用断言元件

  • Response Assertion(响应断言)
  • Size Assertion(大小断言)
  • XPath Assertion(XPath 断言)
  • JSON Assertion(Json 断言)

2. 断言添加方式:

根据需要可在【测试计划】、【线程组】、【线程请求】下添加断言,一般在对应的【线程请求】下添加,如下图所示。
添加路径:【线程请求-点击右键-添加-断言-对应的断言形式】

3. 查看断言结果

3.1 【断言结果】看断言结果

添加路径:【测试计划-点击右键-添加-监听器-断言结果】

在这里插入图片描述


整个测试计划下所有请求所有断言结果报错信息均会在此显示,如下图所示,将所有断言结果的报错信息直接展示出来。

在这里插入图片描述

3.2【查看结果树】看断言结果

添加路径:【测试计划-点击右键-添加-监听器-查看结果树】,整个测试计划下所有请求所有断言结果报错信息均会在此显示,如下图的形式,切换查看。

在这里插入图片描述

三、断言元件的详细介绍

3.1 Response Assertion(响应断言)

3.1.1 简介

        用于检查服务器响应的内容是否符合预期,可以基于响应的内容、代码、消息或其他属性进行断言。可以根据响应文本、响应代码、响应消息和其他参数来定义断言条件,并指定断言模式(包含、匹配、不包含等)。

3.1.2 参数配置介绍

  1. Apply to 选项默认即可,Main sample only(仅作用于父节点取样器)。

  2. 测试字段:要检查的项 (实际结果)

    • Text Response:来自服务器的响应文本。
    • Response Code:响应的状态码,例如:200。
    • Response Message:响应的信息,例如: OK。
    • Response Headers: 响应头部
    • Request Headers: 请求头部
    • Request Data:请求数据
    • URL 样本:请求 URL
    • Document(text): 响应的整个文栏
    • 忽略状态:忽略返回的响应状态码
  3. 模式匹配规则:比较方式(校验规则)

    • contains(包括):文本包含指定的正则表达式
    • Matches(匹配):整个文本匹配指定的正则表达式
    • Equals(等于):整个返回结果的文本等于指定的字符串(区分大小写)
    • substring:返回结果的文本包含指定字符串(区分大小写)
    • 否: 取反
    • 或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是 ok),不勾选代表逻辑与(所有都必须匹配,断言才是 ok)
  4. 测试模式:预期结果,即填写指定的结果(可填写多个) 按钮[添加]、[删除] 是进行指定内容的管理。

3.1.3 实战案例

检查百度首页的请求响应中是否包含"百度一下,你就知道"。

1. 步骤一:添加百度的 HTTP Request,添加对应的 Response Assertion,添加查看结果树。

如下图所示:

2. 步骤二:在 Response Assertion 元件中添加对应配置,

如下图所示:

3. 步骤三:查看结果如图所示:断言成功。

3.2 Size Assertion(大小断言)

3.2.1 简介

在 JMeter 中,Size Assertion 是一种断言元件,用于验证服务器响应的内容的大小是否符合预期。Size Assertion 允许您检查返回的响应数据的大小是否在指定的范围内,以便在性能测试中验证响应的大小是否符合要求。

3.2.2 参数配置介绍

  1. Apply to 选项默认即可,Main sample only(仅作用于父节点取样器)。
  2. Response Size Field to Test:

    • Full Response:完整响应
    • Response Headers:响应头
    • Response Body:响应的消息体,选择此项判断返回主题数据 Body 的大小
    • Response Code:响应代码
    • Response Message:响应信息
  3. Size to Assert:

    • size in bytes(字节大小):设置要判断的数值,单位 bytes/kb
    • Type of Comparison(比较类型)

3.2.3 实战案例

检查百度首页的请求响应的内容大小是否大于等于 2381。

1. 步骤一:添加百度的 HTTP Request,添加对应的 Size Assertion,添加查看结果树。

如下图所示:

2. 步骤二:在 Size Assertion 元件中添加对应配置

如下图所示:

3. 步骤三:查看结果如图所示:断言成功。

3.3 XPath Assertion(XPath 断言)

3.3.1 简介

        XPath Assertion 是 JMeter 中的一种断言元件,用于验证 XML 或 HTML 响应的内容是否符合指定的 XPath 表达式。XPath 是一种用于在 XML 文档中定位和选择元素的语言,通过 XPath Assertion,可以使用 XPath 表达式来验证响应中的特定内容,例如检查特定元素、属性或文本是否存在或符合条件。

3.3.2 参数配置介绍

  1. XML Parsing Options (XML 解析选项)

    • Use Tidy:当需要处理的页面是 HTML 格式时,必须选中该选项;如果是 XML 或 XHTML 格式(例如 RSS 返回),则取消选中,默认是 quiet;
    • Quiet 表示只显示需要的 HTML 页面,
    • Report errors 表示显示响应报错,
    • Show warnings 表示显示警告;
    • Use Namespaces:如果启用该选项,后续的 XML 解析器将使用命名空间来分辨;
    • Validate XML:根据页面元素模式进行检查解析;
    • Ignore Whitespace:忽略空白内容;
    • Fetch external DTDs:如果选中该项,外部将使用 DTD 规则来获取页面内容。引用名称:下一个请求要引用的参数名称,如填写 title,则可用${ var_regexp2}引用它。 (一些 XML 元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在 DTDs 中声明)
  2. Xpath Assertion 用于填写 xpath 表达式,点击 Validate 验证其正确性,勾选 True if nothing matches 表示确认都不匹配,才会断言验证通过。

3.3.3 实战案例

检查百度首页的请求响应的内容包含 Xpath 表达式://input[@id="kw"]

1. 步骤一:添加百度的 HTTP Request,添加对应的 XPath Assertion,添加查看结果树。

如下图所示:

2. 步骤二:在 Xpath Assertion 元件中添加对应配置

如下图所示:

3. 步骤三:查看结果如图所示:断言成功。

3.4 JSON Assertion(Json 断言)

3.4.1 简介

        JSON Assertion 是 JMeter 中的一种断言元件,用于验证 JSON 格式的响应数据是否符合预期。在进行 API 接口性能测试时,通常会返回 JSON 格式的响应数据,通过 JSON Assertion,可以根据预定义的 JSON 断言规则来验证返回的 JSON 数据是否正确。

3.4.2 参数配置介绍

  • Assert JSON Path exists: 用于断言的 JSON 元素的路径(实际结果)
  • Additionally assert value: 如果想要用某个值生成断言,请选择复选框。
  • Match as regular expression 使用正则表达式断言。
  • Expected Value: 期望值 (期望结果)
  • Expect null: 如果希望为空,请选择复选框。
  • Invert assertion (will fail if above conditions met): 反转断言(如果满足以上条件则失败)

3.4.3 实战案例

检查天气请求响应的 JSON 数据中,city 对应的内容是否为'北京'。

步骤一:添加天气的 HTTP Request,添加对应的 JSON Assertion,添加查看结果树。

如下图所示:

步骤二:在 JSON Assertion 元件中添加对应配置

如下图所示:

步骤三:查看结果如图所示:断言成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/927977.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nerdctl:与 Docker 兼容的 containerd CLI

nerdctl 是一个用于容器管理的命令行工具,它旨在提供与 Docker CLI 相似的用户体验,但却是为 containerd 这样的低级容器运行时设计的。containerd 是一个行业标准的容器运行时,被广泛用作 Kubernetes 等容器编排平台的一部分。nerdctl 通过简…

XRP 深度解析:从技术到 Meme 币交易指南

撰文:Ignas | DeFi Research 编译:Yuliya,PANews 本文来源Techub News:XRP 深度解析:从技术到 Meme 币交易指南 在当前加密货币市场,一个令人瞩目的现象正在上演:XRP 在短短一个月内暴涨 3.5 倍&#xf…

java_判断语句——acwing

题目一:倍数 665. 倍数 - AcWing题库 代码 import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt(), b sc.nextInt();if(a%b0 || b%a0) System.out.printf("Sao Mu…

构建自己的docker的ftp镜像

aarch64系统可运行的docker镜像 构建自己的vsftpd镜像,我是在windows系统下的docker desktop中构建运行于aarch64 GNU/Linux系统的ftp镜像。 系统环境: Welcome to Debian GNU/Linux with Linux x.x.x dockerfile FROM ubuntu:latestUSER rootRUN ap…

【LeetCode】169.多数元素

题目连接: https://leetcode.cn/problems/majority-element/solutions/2362000/169-duo-shu-yuan-su-mo-er-tou-piao-qing-ledrh/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述: 思路一: 使用哈希表unordered_map记录每个元…

Ajax基础总结(思维导图+二维表)

一些话 刚开始学习Ajax的时候,感觉很模糊,但是好像学什么都是这样的,很正常,但是当你学习的时候要持续性敲代码,边敲代码其实就可以理解很多了。然后在最后的总结,其实做二维表之后,就可以区分…

structuredClone()与 lodash.cloneDeep与 JSON.parse JSON.stringify()拷贝对比

structuredClone()与 lodash.cloneDeep与 JSON.parse & JSON.stringify()拷贝对比

Vue02

前端最新Vue2Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1HV4y1a7n4?spm_id_from333.788.videopod.episodes&vd_source016213ecd945408976ff307a6bda30…

数据结构---图

图是一种较为复杂的非线性结构。 为啥说其较为复杂呢? 根据前面的内容,我们知道: 线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次…

FakeLocation 1.3.5 BETA 提示校园跑漏洞修复解决

任务一 作者对此又进行了更新,在本次更新中,我们依旧使用hookvip进行破解 本次的更新,使得包名强制写入更加严重,之前靠一些方法已经无法阻止appconfigs.xml的文件的修改,而且使得验证加强,和云端加强&…

在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用

在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用 在ROS的可视化工具RViz中,“Fixed Frame"是一个关键的全局选项,它设置了一个参考坐标系,用于解释和显示所有其他坐标系中的数据。通过您提供的…

夜神模拟器+Charles+postern+Mgisk+TrustMeAlready实现抓包

[实测有用]夜神模拟器CharlesposternMgiskTrustMeAlready实现抓包 PS:此贴仅做为技术交流,禁止非法用途。 1.初始化条件 A.安装MUMU模拟器安卓12版本 B.按图示选择,设置好代理端口8889 C.查看本机IP地址 D.导出证书,安装配置,暂时保存…

【零基础学习UDS诊断测试】——0x10测试用例设计

从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 1.概述 2.三个会话介绍 3.会话切换逻辑 4.会话响应格式 5.解析测试点 5.1. 0x10 5.1.1 具体用例设计 5.1.1.1 NRC否定响应码 6.详细用例展示 1.概述 主要基于诊断调查表介…

一键生成后端服务,MemFire Cloud重新定义开发效率

作为开发者,特别是独立开发者和小团队成员,大家都知道开发的最大难题之一就是搭建后端服务。要让一个应用从零开始,除了前端的开发工作外,还需要考虑数据库、接口、认证、存储等等一系列繁琐的后台工作。而MemFire Cloud这款神器&…

QT:信号和槽01

QT中什么是信号和槽 概念解释 在 Qt 中,信号(Signals)和槽(Slots)是一种用于对象间通信的机制。信号是对象发出的事件通知,而槽是接收并处理这些通知的函数。 例如,当用户点击一个按钮时&#…

抓包之查看websocket内容

写在前面 本文看下websocket抓包相关内容。 1:正文 websocket基础环境搭建参考这篇文章。 启动后,先看chrome的network抓包,这里我们直接使用is:running来过滤出websocket的请求: 可以清晰的看到发送的内容以及响应的内容。在…

java网络通信(三):TCP通信、实现客户端-服务端消息通信

目录 1、什么是 TCP协议? 2、代码实现TCP协议的一发一收 2.1、客户端 2.2、服务端 2.3 结果演示 3、代码实现TCP协议的多发多收 3.1 客户端 3.2 服务端 3.3 结果演示 简介:本文章主要是演示如何用java代码以及TCP协议实现网络通信,实…

java基础概念46-数据结构1

一、引入 List集合的三种实现类使用了不同的数据结构! 二、数据结构的定义 三、常见的数据结构 3-1、栈 特点:先进后出,后进先出。 java内存容器: 3-2、队列 特点:先进先出、后进后出。 栈VS队列-小结 3-3、数组 3-…

python: Treeview Pagination

# encoding: utf-8 # 版權所有 2024 ©塗聚文有限公司 # 許可資訊查看:言語成了邀功的功臣,還需要行爲每日來值班嗎? # 描述: Treeview Pagination # Author : geovindu,Geovin Du 塗聚文. # IDE : PyCharm 2023.1…

C# winform非常好用的图表开源控件Scottplot

wifnorm自带的chart控件功能和性能都不太行,所以在网上搜索到了Scottplot开源图表控件。根据自己需要,将已经试验使用过的用法记录在这里 winform建议使用版本 Scottplot包版本:4.1.71 这个版本在winform中可以以控件形式直接拖拉到窗体中使…