【测试工具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 元件中添加对应配置

如下图所示:

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别

🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 Linux学习笔记: https://blog.csdn.net/d…

【森林生态系统揭秘】用R语言解锁森林结构、功能与稳定性分析!生物多样性与群落组成分析、路径分析、群落稳定性分析等

目录 专题一 理论讲解 专题二 数据获取与处理 专题三 生物多样性与群落组成分析 专题四 机器学习在群落分析中的应用 专题五 路径分析和结构方程模型(SEM) 专题六 群落稳定性分析 专题七 案例分析与写作指南 在生态学研究中,森林生态系…

无分类编址的IPv4地址

/20含义:前20比特位为网络号,后面32-2012为主机号 路由聚合:找共同前缀 所有可分配地址的主机都能接收广播地址,

初始化列表与Static成员

一、再谈构造函数 1.1构造函数体赋值 在创建对象时,编译器会调用构造函数,给对象中各个成员变量一个合适的初始值 class Date { private:int _year;int _month;int _day; public:Date(int year, int month, int day){_year year;_month month;_day …

THENA大涨将对整个DeFi市场产生怎样的影响?

引言 近期,区块链行业的一个热门项目——THENA(THE)代币,在短时间内吸引了大量投资者的目光。THE代币的价格在短短几个月内经历了显著的上涨,引发了市场对其背后机制的浓厚兴趣。而在THENA生态系统的成功背后&#xf…

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章

在人工智能领域,我们正见证着一场革命性的变革。传统的AI助手,如ChatGPT,需要明确的指令才能执行任务。但现在,清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent,它能够主动观察环境…

SpringBoot(一)

Springboot(一) 什么是SpringBoot SpringBoot是Spring项目中的一个子工程,与Spring-famework同属于Spring的产品 用一些固定的方式来构建生产级别的Spring应用。SpringBoot推崇约定大于配置的方式以便于能够尽可能快速的启动并运行程序 我们把Spring Boot称为搭建程…

PDF与PDF/A的区别及如何使用Python实现它们之间的相互转换

目录 概述 PDF/A 是什么?与 PDF 有何不同? 用于实现 PDF 与 PDF/A 相互转换的 Python 库 Python 实现 PDF 转 PDF/A 将 PDF 转换为 PDF/A-1a 将 PDF 转换为 PDF/A-1b 将 PDF 转换为 PDF/A-2a 将 PDF 转换为 PDF/A-2b 将 PDF 转换为 PDF/A-3a 将…

【设计模式系列】备忘录模式(十九)

目录 一、什么是备忘录模式 二、备忘录模式的角色 三、备忘录模式的典型应用场景 四、备忘录模式在Calendar中的应用 一、什么是备忘录模式 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不暴露对象内部状态的情况下保存和恢…

window 下用Ollama 开发一个简单文档问答系统

文档问答系统 本系统利用先进的语言模型和检索技术,为用户提供基于上传文件内容的问答服务。支持多种文件格式,包括 Word、PDF、CSV、SQL 和 TXT 文件。 功能介绍 文件上传 用户可以同时上传多个文件。支持的文件类型包括:.doc, .docx, .…

全国296个地级市平均房价数据(2000-2022年)

全国296个地级市平均房价数据(2000-2022年),包括面板数据和截面数据 点击下载 1、数据来源:安居客、房天下、房价行情网等住房交易网页整理 2、时间跨度:2000-2022年 3、区域范围:全国296个地级市 4、缺失说明:西…

贴片式内存卡 ​SD NAND​

SD NAND FLASH 贴片式SD卡 贴片式t卡 存储芯片 1. 什么是贴片式内存卡 贴片式内存卡是指一种将内存芯片直接贴装在电路板上的内存卡类型。与传统的插针式内存卡(如SD卡、MicroSD卡)不同,贴片式内存卡通常不具有外部引脚或接口,而…

C—操作符易错点

strlen与sizeof strlen求的是大小,包含“\0” strlen求的是,长度不包括“\0” 注意:空格也算一个字符 操作符“/”(除法) 对于除法操作符来说,两边都是整数,那么就是整数除法 如果想计算出小数&#x…

基于PyTorch框架的线性回归实现指南

目录 ​编辑 1. 线性回归基础 2. PyTorch环境搭建 3. 数据准备 4. 定义线性回归模型 5. 损失函数和优化器 6. 训练模型 7. 评估模型 8. 结论 线性回归是统计学和机器学习中最基本的预测模型之一,它试图找到输入特征和输出结果之间的线性关系。在深度学习框…

R语言机器学习论文(六):总结

文章目录 介绍参考文献介绍 本文采用R语言对来自进行数据描述、数据预处理、特征筛选和模型构建。 最后我们获得了一个能有效区分乳腺组织的随机森林预测模型,它的性能非常好,这意味着它可能拥有非常好的临床价值。 在本文中,我们利用R语言对来自美国加州大学欧文分校的B…

基于Java Springboot校园导航微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开发…

面试题-RocketMQ的基本架构、支持的消息模式、如何保证消息的可靠传输

相关问题 1、RocketMQ的基本架构是怎样的?请简述各组件的作用。 2、RocketMQ支持哪几种消息模式(如点对点、发布/订阅)?请简要说明它们的区别。 3、如何使用Java客户端实现一个简单的消息生产者和消费者? 4、RocketMQ…

WPF+LibVLC开发播放器-LibVLC在C#中的使用

使用WPFLibVLC快速 开发一个播放器 安装包Nuget 安装下面两个包,必须安装两个 一个是相关框架对应的包,Winform就安装LibVLCSharp.Winform;WPF就安装LibVLCSharp.WPF,以此类推,他们都默认依赖LibVLCSharp,不需要例外安装 一个是…

CSS变量用法及实践

目录 一、基本用法 1.1、定义变量 1.2、使用变量 1.3 、修改变量的值 二、命名规范 2.1、使用有意义的名称 2.2、使用命名空间 三、变量值类型 3.1、如果变量值是一个字符串,可以与其他字符串拼接,例如: 3.2、 如果变量值是数值&a…

WEB开发: 丢掉包袱,拥抱ASP.NET CORE!

今天的 Web 开发可以说进入了一个全新的时代,前后端分离、云原生、微服务等等一系列现代技术架构应运而生。在这个背景下,作为开发者,你一定希望找到一个高效、灵活、易于扩展且具有良好性能的框架。那么,ASP.NET Core 显然是一个…