Jmeter接口测试断言详解

news/2024/9/12 19:05:35

目录

前言:

响应断言

Apply to (响应断言的应用范围)

要测试的响应字段(可通过取样器结果查看)

响应断言:模式匹配

Json断言


前言:

在JMeter中进行接口测试时,断言是一个非常重要的概念。断言允许我们验证接口的响应是否符合预期,从而确保接口的正确性和可靠性。JMeter提供了多种断言类型,可以进行各种不同类型的验证。

接口测试是目前最主流的自动化测试手段,它向服务器发送请求,接收和解析响应结果,通过验证响应报文是否满足需求规约来验证系统逻辑正确性。接口的响应类型通过Content-Type指定,常见的响应类型有

  • text/html : HTML格式   
  • text/plain :纯文本格式         
  • text/xml :  XML格式   
  • application/xml     : XML数据格式  
  • application/json    : JSON数据格式  

Jmeter通过响应断言组件,Json断言组件实现对响应报文的解析和验证。

  • 响应断言可以验证任意格式的响应报文
  • Json断言适用于Json格式的响应报文

响应断言

响应断言可以选择断言验证的范围(URL,响应头,响应码,响应体,响应附件),匹配的模式(纯文本还是正则表达式匹配),具体选项如下:

Apply to (响应断言的应用范围)

  • Sub-samples适用于发送一个请求同时触发多个子请求的情况,一般情况下推荐使用Main Sample only,仅校验发起的请求响应。对跟随重定向的请求,重定向后的请求是主请求。
  • Jmeter Variable可对Sampler中生成的Jmeter变量进行校验,此处写明变量名。

要测试的响应字段(可通过取样器结果查看)

  • 响应文本:最常用的选项,服务器的响应文本(不包含响应头信息)
  • Document(text):除了文本响应还支持 PDF/ Office/ Audio/ Video ,Apache Tika 解析服务器响应内容,很耗内存而且很容易解析失败,非特殊需求不建议使用此选项。
  • Response Headers:响应头
  • URL样本:  请求url,如果有重定向包含重定向url
  • 响应代码:Http返回的响应码  
  • 响应信息: 响应代码对应的响应信息eg:OK(200),可在结果树中查看代码和信息
  • Ignore Status: 当http 响应代码为400/500时,jmeter默认请求失败,要验返回码为500需勾选ignore status。Sampler下多个断言是叠加作用的,只要有一个断言勾选了Ignore Status就可以。

响应断言:模式匹配

  • 包括:支持纯文本和正则,验证返回包括指定的内容
  • 匹配:支持纯文本和正则,正则需全匹配(正则必须匹配全部返回,而非部分返回)
  • Equals:字符串相等,纯文本匹配,验证返回结果和指定结果完全一致
  • SubString:字符串包含,纯文本匹配,验证返回结果包含指定结果
  • 否:结合上述条件取反,若上述断言结果为false,取否后,最终断言结果为true

Json断言

Json断言是针对Json报文的断言方式,通Json Path提取出Json响应报文中的字段,再采用纯文本或者正则去验证Json Path的提取结果,Json结合了Json Path和正则表达式,有如下选项

  • Additionally assert value:文本验证,此处是完全匹配,勾选上此选项后再勾选Match as regular expression,可以触发正则匹配。
  • Match as regular expression:支持正则表达式匹配
  • Expect null:判定返回为null
  • Invert assertion:倒置断言结果

Json Path是用于确定 JSON 文档中某部分元素位置的语言。它将 JSON 数据转换为 DOM 树状结构,并提供在数据结构中寻找节点的能力。Jmeter提供组件来验证Json Path的语法正确性,以及元素匹配情况。可以在察看结果树中将响应报文的格式从Text切换为Json Path Tester,并在Json Path Expression栏中输入相应的Json Path ,点击Test,察看JsonPath的定位结果。

目前接口测试最主流的交换文档就是Json报文,无论是响应断言还是Json断言,核心都是对正则表达式,JsonPath 语法的理解。Jmeter 内置了JsonPath的校验工具,针对正则表达式,可通过在线正则表达式工具进行测试:http://tool.oschina.net/regex/

响应断言和Json断言可以涵盖大部分的接口校验需求,针对更加复杂的接口校验需求,比如数据库校验,比如复杂计算逻辑的校验 ,可通过Beanshell断言组件编写脚本来实现断言。

作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=_FQDD5qd4CZYjk9Qsbu492DEviPX0SmQ&authKey=r8q0copgJMRQ7Mo5KrdutBNlmlb5b7%2FXEUDLCKd%2BaItO2gSPEw34DPc2HndTVJ%2FM&noverify=0&group_code=574737577


http://lihuaxi.xjx100.cn/news/1305194.html

相关文章

nacos批量信息获取-GitNacosConfig

声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法活动,如因此造成的直接或间接损失,均由使用者自行承担责任。 点点关注不迷路,每周不定时持续分享各种干货。 原文链接:众亦信安&a…

【Java】-【IDEA 编译项目时报错:GC overhead limit exceeded】

文章目录 问题简述问题分析解决方案解决方案一解决方案二 问题简述 以前项目启动都是好好的,没有任何问题,最近启动时却报错: java.lang.OutOfMemoryError: ...(此处忽略) GC overhead limit exceeded问题分析 错误是发生在编译阶段&#…

【训练营day55|动态规划|392.判断子序列、115.不同的子序列】

训练营day55|动态规划|392.判断子序列、115.不同的子序列 392.判断子序列要点代码 115.不同的子序列要点代码 392.判断子序列 要点 和最长公共子序列类似的思想 代码 class Solution:def isSubsequence(self, s: str, t: str) -> bool:m len(s) …

MCU嵌入式开发-硬件和开发语言选择

引入 RTOS的考虑因素 主要考虑以下方面来决定是否需要RTOS支持: 需要实现高响应时的多任务处理能力需要实现实时性能要求高的任务需要完成多个复杂的并发任务 NanoFramework 具备满足工控系统实时性要求的各项功能特性。通过它提供的硬件库、线程支持、中断支持等,可以完全控制…

【我的创作纪念日】关于某站的音频爬虫+GUI

文章目录 一、前言&机遇二、爬虫代码三、爬虫GUI四、文件打包五、结果展示未来可期 一、前言&机遇 许久没看私信内容,一上线就看到了官方的私信,我已经来到CSDN1024天啦! 想到注册这个号的初衷是学习记录爬虫,后面渐渐变…

Linux下Qt breakpad编译使用

一、下载安装包 下载qbreakpad源码: git clone https://github.com/buzzySmile/qBreakpad.git下载breakpad源码 git clone https://github.com/google/breakpad下载linux-syscall-support 没有这个文件,编译报错 git clone https://github.com/adels…

(0019) H5-Vue路由中引入组件Component的三种方式

一 普通引入方式 import login from ‘/components/login’优点: 易理解, 缺点:webpack在打包的时候会把整个路由打包成一个js文件,如果页面一多,会导致这个文件非常大,加载缓慢二 Vue异步组件技术 component: (resolve) > re…

kong-dashboard安装

简介 kong-dashboard提供了UI界面操作和查看kong,可以进行api、consumers、plugins操作 官网:https://hub.docker.com/r/pgbi/kong-dashboard/ 安装 联网安装 [slviewDEMO:~]$ docker search kong-dashboard INDEX NAME …