接口测试是目前最主流的自动化测试手段,它向服务器发送请求,接收和解析响应结果,通过验证响应报文是否满足需求规约来验证系统逻辑正确性。接口的响应类型通过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断言组件编写脚本来实现断言。

作  者:Testfan 北河

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

接口测试断言详解(Jmeter)的更多相关文章

  1. 接口测试参数化详解(Jmeter)

    简介 接口测试是目前最主流的自动化测试手段,它组合不同的参数向服务器发送请求,接受和解析响应结果,通过测试数据的交换逻辑来验证服务端程序工作的正确性.我们在测试过程中需要考虑不同的输入组合,来覆盖不同 ...

  2. jmeter --响应断言详解

    jmeter --响应断言详解 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-samp ...

  3. Jmeter接口之响应断言详解

    响应断言 : 对服务器的响应进行断言校验 Apply to 应用范围: main sample and sub sample, main sample only , sub-sample only , ...

  4. 详解JMeter正则表达式

    详解JMeter正则表达式(1) 1.概览 JMeter中包含范本匹配软件Apache Jakarta ORO .在Jakarta网站上有一些关于它的文档,例如a summary of the pat ...

  5. python 之re模块(正则表达式) 分组、断言详解

    正则表达式分组.断言详解   提示:阅读本文需要有一定的正则表达式基础. 正则表达式中的断言,作为高级应用出现,倒不是因为它有多难,而是概念比较抽象,不容易理解而已,今天就让小菜通俗的讲解一下. 如果 ...

  6. 详解JMeter函数和变量(转载)

    详解JMeter函数和变量(1) JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var ...

  7. junit 常用注解 + junit 断言详解

    @Test: 在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有的测试类必须继承junit的测试基类.在junit4中,定义一个测试方法变得简单很多,只需要在方法前加上@Test ...

  8. 全网最全最细的jmeter接口测试教程以及接口测试流程详解

    一.Jmeter简介 ​ Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. Jmeter可以实 ...

  9. 『动善时』JMeter基础 — 29、JMeter响应断言详解

    目录 1.JMeter断言介绍 2.响应断言组件界面详解 3.响应断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)响应断言界面内容 (4)查看运行结果 (5)断言结果组件 ...

随机推荐

  1. centos7.7下docker与k8s安装(DevOps三)

    1.系统配置 centos7.7 docker 1.13.1 centos7下安装docker:https://www.cnblogs.com/pu20065226/p/10536744.html 2 ...

  2. Linux 常用命令之 mv cp scp

    1.mv 命令是move的缩写,用于文件(或文件夹)移动的. 1)将 luna 目录下的文件 a.txt,移动到 miracle 目录下: mv ./luna/a.txt ./miracle/ 2)将 ...

  3. Professional JavaScript for Web Developers P226

    我是这么理解的: (object.getName = object.getName),这条语句在执行结束后,返回的是右操作数object.getName: 但是关键是这个右操作数现在放在哪里 ?  我 ...

  4. java:IO流(File,字节流/输入输出流(InputStream(FileInputStream),OutputStream(FileOutStream)),字符流(Reader,Writer))

    File: * java.io.File类:代表一个文件或目录. * 常用的构造方法: * File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例 ...

  5. oracle 在sql中显示blob的字符串

    最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了. blob字段直接用 select * from table_name ...

  6. 用番茄工作法提升工作效率 (四)ToDoList的持续优化

    一.写在前面 前面三篇文章,系统介绍了我如何使用番茄工作法,并结合“自制”的桌面ToDoList工具来实现自己的任务管理. 自制ToDoList的初衷是自我管理,但是好友看到我的桌面(程序)后,建议我 ...

  7. SpringBoot 和 SpringCloud 之间关系?

    SpringBoot:专注于快速方便的开发单个个体微服务(关注微观):SpringCloud:关注全局的微服务协调治理框架,将SpringBoot开发的一个个单体微服务组合并管理起来(关注宏观):Sp ...

  8. 【VS开发】cmd dos 批处理重命名文件

    原文地址:http://hi.baidu.com/benchoi/item/c1f531f5f1367b0b85d2785b 批处理实现文件批量重命名并自动加递增序列号 有时我们想把一些图片批量重命名 ...

  9. magento下载地址

    https://download.magentochina.org/magento/2/ https://www.magentochina.org/blog/download-install-mage ...

  10. Win10删除右键菜单快捷键方法

    打开注册表,找到HKEY_CLASSES_ROOT\Directory\Background路径,删除对应的快捷方式即可