JMeter:断言_响应断言(Response Assertion)

作用:一个HTTP请求发出去,怎么判断执行的任务是否成功呢?通过检查服务器响应数据,是否返回预期想要的数据,如果是,判断任务成功,反之任务失败。

1、添加方式

选中一个取样器,右键->添加->断言->选中“响应断言”

页面相关参数

关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,类似于ajax那种,那么就有main sample  和 sub-sample之分了。

此外,对于有重定向的请求,并且勾选了“跟随重定向”, 那么这两个请求都是 sub-sample,重定向后的请求(第二个请求)就是main-sample。

Main Samples and Sub Samples: JMeter will check for the 'expected text' to be present in both main and sub samples and if any of the samplers do no have the text, it fails.

Main Sample Only: - JMeter will check for the 'expected text' only in the main sample. It fails if it is not found.

Sub Sample only: - JMeter will check for the 'expected text' only in all the sub samples. All the sub samplers are expected to have the text. Otherwise it fails.

2、响应字段

响应文本:服务器响应文本,一般普通http响应,都勾选这个。

Document(Text):一切Apache Tika 支持服务器响应,包括文本响应,还支持 PDF, Office, Audio, Video formats。jmeter会用Apache Tika 去解析服务器响应内容,会很耗内存,而且也很容易解析失败。所以一般普通http请求,不要选择这个。

URL样本:是对sample的url进行断言。如果请求没有重定向(302),那么就是这个就是请求url。 如果有重定向(且跟随重定向),那么url就包含请求url 和重定向url

响应代码:http响应代码,如101,200,302,404,501等。但当我们要验证404,501等http响应代码时,需要勾选“ ignore status”。因为当http 响应代码为400,500时,JMeter默认这个请求时失败的。

响应信息:http响应代码对应的响应信息,例如:OK, Found

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: 260

    Connection: close

    Location: http://www.baidu.com/404.html

lgnore Status:忽略状态

3、模式匹配规则

包括:返回结果包括你指定的内容,支持正则匹配

  例如:

  响应字段为:响应文本

  模式匹配规则:匹配

  断言为:1、invalid    2、[a-z]+

  当返回值为:{"msg":"channel invalid."}, 这两个断言都是ok的,返回true

匹配:

  (1)相当于 equals 。当返回值固定时,可以返回值做断言,效果和equals相同

  (2)正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分。

  例如:

  响应字段为:响应文本

  模式匹配规则:匹配

  断言为:1、{"msg":"channel invalid."}   2、\{"msg":"[a-z]+ invalid\."\}  , 3、[a-z]+

  当返回值为:{"msg":"channel invalid."},断言1 2 是ok的, 断言3是false

  当返回值为:{"msg":"channel invalid."}, 断言1 3是false, 断言2才是ok的。

  原因是,断言1只能用于equals,而断言3 只匹配了返回值部分,而不是全部匹配。

Equals : 返回结果与你指定断言完全一致

SubString:与“包括”差不多,都是指返回结果包括你指定的内容,但是SubString不支持正则字符串

  例如:

  响应字段为:响应文本

  模式匹配规则:匹配

  断言为:1、invalid    2、[a-z]+

  当返回值为:{"msg":"channel invalid."}, 断言1返回true, 但断言2返回false

否:就相当于取反。如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为 true。

4、示例

1)、根据接口响应的结果,判断接口请求是否成功

结果树查看,可以看到响应的数据

2)、添加断言

判断请求的接口响应是否有【"code":200,"msg":"成功"】

3)、添加断言结果

添加断言结果,右键点击我们的“登录”页面---->添加---->监听器---->断言结果

4)、查看相关结果

断言判断,不匹配时,结果树可以看到相应的失败

聚合报告,异常率也会统计到相关数据

你可能感兴趣的:(JMeter:断言_响应断言(Response Assertion))