工具癖

JMeter入门指南-3.断言的介绍与使用

2018-10-25  本文已影响130人  X_Bellamy

3.断言的介绍与使用

3.1为什么要使用断言

在上一章JMeter入门指南-2.手动编写一个简单的请求性能测试中,我们对于一个请求进行接口测试,并没有对响应内容进行验证,简单来说,就是只验证了这个接口的联通性,并没有验证这个接口获取的准确性,而断言,则能很好的去验证数据的准确性。

那么,断言究竟要判断什么呢?

3.2如何使用断言

3.2.1查看响应数据

首先,现在JMeter中执行一次脚本,然后我们能在查看结果树中观察到我们的HTTP请求。

可以看到,这里有三个TAB页,分别是取样器结果,请求,响应数据

取样器结果:包含了取样器的一些响应结果,如响应头,响应代码,响应时间,响应大小等数据

请求:为本脚本模拟发送的请求

响应数据:为响应的具体数据,可能是HTML,JSON,XML,DOC等

图一

在响应数据页中,我们可以在响应体中观察响应具体返回的值

图二

请求1:对关键字【测试进行搜索】

图三 图四

请求2:网络超时

图五

请求3:对关键字【简书】进行搜索

图六 图七

可以发现,响应1与响应3都是请求成功,但是请求的结果并不是我们想要的结果,所以需要筛选关键字

3.2.2筛选关键字

在响应体中,一般都能已text格式来表示,此时我们只需要筛选出,本响应独特的,或者是唯一的关键字,来给断言使用。

就如上述三种请求,我们不难发现,我们需要筛选的关键字即为“简书”。

3.2.3添加响应断言

右键需要使用断言的HTTP请求,选择 添加->断言->响应断言

图八

Apply to:

关于此处,一般为Main sample only即可,当请求中有重定向请求时,最后跳转的页面没Main sample only,其余请求为Sub-samples only。

图九

响应文本:服务器响应文本,基本都用这个

响应代码:可以用于判断响应的各种代码    

[200 OK 请求成功],[301 Moved Permanently 永久跳转],[302 Found 临时跳转],[303 See Other GET重定向],[304 Not Modified 未修改,使用缓存],[400 Bad Request 请求语法错误],[401 Unauthorized 未授权],[403 Forbidden 禁止访问],[404 Not Found 找不到页面],[500 Internal Server Error 服务器程序错误],[502 Bad Gateway 网关错误],[503 Service Unavailable 服务不可用],[504 Gateway Timeout  服务器超时]

注意,如需要判断响应代码400,404等的错误代码,则需要勾选忽略状态。

一般测试字段都为这两个

图十

包含:返回的结果中包含需要匹配的值,支持正则表达式

匹配:返回的结果中与需要匹配的值相同,支持正则表达式

Equals:返回的结果中与需要匹配的值相同,不支持正则表达式

Substring:返回的结果中包含需要匹配的值,不支持正则表达式

否:若匹配成功则返回失败

或者:多个匹配字段只需要匹配成功一个即为通过

图十一

我们添加一个"简书"为断言:

图十二

这样就能使搜索条件为"测试"的HTTP请求判断为失败请求

图十三 图十四

3.2.3添加JSON断言

当HTTP请求得到的响应为JSON时,我们也可以使用JSON断言。

测试连接,本链接能得到一个基本的JSON响应

图十五

可以通过JSON转化器将其结构转化的方便观察

图十六

在这我创建了一个HTTP脚本,右键HTTP脚本,添加JSON断言,选择 添加->断言->JSON断言

图十七

Assert JSON Path exists:这个参数为需要匹配的JSON中的任意参数名称。

若需要获取content,则修改为$.content   (获取所有content) 

若需要获取A的所有子类,则修改为$..A(获取所有的所有子类)

若只需要获取A的第二个子类,则修改为$..A[1],

当然也可以这样写:$.content.data.allCitySearchLabels.A[1].id,这样便能获取所有A类第二个的ID

为请求添加个断言结果

先用$.content测试:

可以发现$.content能获取content下的所有内容。

图十八

$..A:

这个则为A下的所有id,name....的集合

图十九

$..A[1]:

则只获取了单个A

图二十

$.content.data.allCitySearchLabels.A[1].id:

获取单个ID

图二十一

Additionally assert value:勾选后可自己填写Expected Value

Match as regular expression :可以使用正则表达式

Expected Value:输入匹配的值

Expect null :匹配结果为null

Invert assertion (will fail if above conditions met):取反操作

图二十二

添加完成断言后,执行脚本,这样就能看到错误的请求

图二十三

后续还会陆续添加各种断言的使用。

上一篇下一篇

猜你喜欢

热点阅读