Jmeter(六):断言

作者: 倔强的潇洒小姐 | 来源:发表于2018-04-03 16:07 被阅读37次

目录

JMeter(一):基础概念
JMeter(二):配置元件
JMeter(三):变量参数化
JMeter(四):监听器
JMeter(五):脚本录制

断言:验证服务器返回的数据是否满足我们的要求
即LR中的检查点,是对响应结果做一个判断,我们在请求一个网址时会有返回数据,那怎么判断请求是成功的呢,那么就对某一字段或内容进行匹配,如果跟预想的一样就认为请求是正确的

使用断言的目的:在request的返回层面增加一层判断机制(因为request成功了,并不代表结果一定正确)

针对何时使用JMeter断言,下面给出了一些建议:
(1)请求使用的是来自“CSV数据集配置”的数据
(2)使用的HTTP的POST、PUT、PATCH方法
(3)登录和注销后
(4)当2xx status codes同时在正面测试和负面测试中返回
(5)在API性能测试中
(6)在功能测试中
(7)有SOAP / XML-RPC请求
需要注意:断言消耗内存,谨慎使用

断言类型

如果没有断言只能人工对比对接口返回的数据,接口很多时,比对数据的过程就会非常耗时,而且也容易出错,可以通过Fiddler抓包http请求来设置

1、响应断言

在使用该断言时,需要熟练使用正则表达式

抓包查看Resopnse.png

允许用户通过添加模式字符串来比较验证服务器返回的响应,Jmeter提供了很多种匹配规则,断言中设置要测试的模式,实际响应的内容与设计的字符串进行匹配,如果返回的内容包含了字符串,则认为该次测试通过,否则就是失败(模式中的内容也可以参数化)

对断言做判断,只需添加监听器--断言结果
1)如果断言成功,显示的是HTTP请求名称
2)若失败,则会显示请求名称和失败的原因(“Test failed XXXXXX”内容)

PS:一个Sampler可以添加多个断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了,才算request成功

断言.png
  • Apply to:一般情况下,使用默认的就行,如果一次发送多个请求(Ajax请求,GET或POST),就需要根据实际断言需要选择其他选项了。
  • 要测试的响应字段:根据实际需要选择
    • 响应文本
      服务器响应文本,一般情况下,我们都是勾选改选项,用于验证服务器返回值。
    • Document(text)
      通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式。jmeter会用Apache Tika去解析服务器响应内容,耗内存、也耗时间,解析易失败,尽量少用或不用。多用响应文本方式来进行断言验证
    • URL样本
      对请求的url进行断言,如果请求没有重定向(302),那么该url即为请求的url;如果有重定向(切跟随重定向),那么url则包含了请求url和重定向url。
    • 响应代码
      即http响应代码,例如200,404等等,需要注意: 由于jmeter默认情况下认为4xx,5xx时该请求失败,所以在断言这类响应代码时,需要同时勾选Ingore Status,才能正常去做断言。
    • 响应信息
      即响应代码对应的信息,例如OK, Not Found等等这类的。
    • Ingore Status 请参见4响应代码的使用说明。

如下常见类似是响应信息,即http响应头信息,主要用于断言当响应头带有唯一或特定意义

      HTTP/1.1 200 Ok
      HTTP/1.1 302 Found
      Response Header : 响应头信息,例如
      Server: Tengine
      Date: Thu, 12 Mar 2015 09:43:52 GMT
      Content-Type: text/html
      Content-Length: 260Connection: close
      Location: http://www.baidu.com/404.html
      Response Headers
  • 模式匹配规则:支持正则表达式
    • 包括:返回结果包括指定的内容,当返回值固定时,可以使用返回值做断言,效果和equals相同
    • 匹配:用正则表达式必须能匹配整个返回值,而不是返回值的一部分
    • Equals:返回结果与你指定结果完全一致
    • Substring:返回结果是指定结果的字串,不支持正则字符串
    • 否:相当于取反,即如果上述断言结果为true,勾选“否”选项后,则最终断言结果为false
  • 要测试的模式:要匹配的响应值(字符串或正则表达式),即接口测试结果的期望值或者其他期望值
2、断言持续时间

持续时间(uration in milliseconds):单位是毫秒,如果响应时间大于设置的响应时间,则断言失败,否则成功!

断言持续时间.png
3、XPath Assertion

适用情况:服务器返回的响应内容是xml格式

XPath Assertion.png
  • Apple to
    一般选择Main sample only即可。如果一次发送多个请求,则需要根据实际断言需要选择其他选项了。(例如一个ajax请求,会发送多个GET或POST时。)
  • XML Parsing Options
    Use Tidy(tolerant parser):使用Tidy(容错解析器),默认选择quiet
    Quiet:不显示
    Report errors:错误报告
    Show warnings:显示错误
    Use Namespaces:使用名称空间
    Validate XML:验证XML(文件包/数据)
    Ignore Whitespace:忽略空格(允许指定语法分析器可以忽略哪个空格,而哪个空格是重要的)
    Fetch external DTDs:获取外部DTDs(一些XML元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在DTDs中声明)
  • Path Assertion
    输入框中写入xpath断言,点击Validate验证其正确性
  • True if nothing matches
    确认都不匹配
4、按照字节断言
按照字节断言.png
  • APPly to:应用范围(返回内容的断言范围)
    Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
    Main sample only:仅作用于父节点取样器
    Sub-samples only:仅作用于子节点取样器
    JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

  • Response Size Field to Test:响应字节的测试范围(可以选择用于判断的响应范围)
    Full Response:全部响应
    Response Headers:响应头部
    Response Body:响应主体
    响应代码:响应报文相关的代码
    响应信息:响应报文的信息

  • Size to Assert:断言字节范围
    字节大小:单位是字节;比较顺序是①返回内容的大小②比较类型③指定字节大小

5、jp@gc - JSON Path Assertion

Jmeter4.0版本已增加JSON Assertion插件,如果是3.2以上版本的话也可以在插件管理里面进行下载,插件下载地址:https://jmeter-plugins.org/?search=jpgc-json
适用情况:服务器返回的响应内容是json格式
PS:点击apply按钮时,请记得保存测试计划,因为安装后会进行重启

插件安装.png

参数说明:

  • JSON Path:json提取表达式,用于提取目标json串节点值
  • Validate against expected value:勾选该选项,则验证目标期望结果,不勾选可以填写 Expected Value
  • Match as regular expression:支持正则表达式
  • Expected Value:自定义期望值
  • Expect null:期望值为null,勾选该选项,则会断言结果为null的情况
  • Invert assertion(will fail if above condition met):取反,如果上述两种期望值断言为true,勾选该选项,则断言结果为fail;如果上述期望值断言为fail,勾选该选项,则断言结果为true。
jp@gc - JSON Path Assertion.png

PS:若断言成功,查看结果树中是看不到的,若失败,则会显示错误信息(如图中提示天气质量预期值是良,但实际是优)

也可以通过监听器-断言结果来查看

断言结果.png

PS:一个断言在测试树中是分等级的,如果父元件是请求,它就仅被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。

相关文章

  • Jmeter(六):断言

    目录 JMeter(一):基础概念JMeter(二):配置元件JMeter(三):变量参数化JMeter(四):监...

  • JMeter断言07

    前言 在jmeter中断言用于验证服务器返回的数据是否满足我们的要求。 jmeter提供了以下断言类型: 下面我们...

  • Jmeter断言

    响应断言 apply to:适用范围与提取器一致,从左至右分别为:匹配当前父取样器及其子取样器、匹配当前父取样器(...

  • jmeter | 断言

    jmeter | 断言 之前我们讲了参数化和集合点,这些都是取样器并发之前执行的操作,接下来我们一起看一下并发开始...

  • 【Jmeter断言】:Json断言

    Additionally assert value:按匹配值Match as regular expression...

  • 【JMeter】JSON断言中的JSON Path

    【JSON Assertion】就是JMeter断言中的JSON断言。此组件允许对JSON文档执行验证。它在使用过...

  • 12. Jmeter-断言

    jmeter-断言介绍与使用 性能测试中较少用到断言。断言会增加脚本执行时间,但是接口测试中断言是必备的。什么是断...

  • Jmeter断言设置

    Jmeter可以针对每一个请求响应进行断言,设置步骤:选中一个请求右击->添加->断言->响应断言 模式匹配规则含...

  • jmeter-断言-响应断言

    响应断言 Apply to 有四个应用范围: main sample and sub sample | main ...

  • JMeter:断言之响应断言

    一、断言的定义 断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。可以是看成验证测试是否预期的方法。 对...

网友评论

    本文标题:Jmeter(六):断言

    本文链接:https://www.haomeiwen.com/subject/rnrucftx.html