Jmeter中有个元件叫断言,他是用来检查接口响应数据是否符合预期的工具,类似于LR中的检查点。目的就是为了在返回层面增加一层判断机制,以免某些请求成功了,但返回数据却不正确。
在jmeter中有许多的断言,如下图,不同的断言应用于不同的场景,那么具体怎么应用,需要我们了解了所有的断言之后,在使用的时候才能针对不同的场景拿来即用。
断言的使用方法:在取样器点击右键添加-断言,选择要使用的断言,配置响应的检查内容,根据断言而定。
添加断言结果监听器,可以通过断言结果判断断言是否通过,如图:
未通过的,除了显示取样器的名称,还显示错误原因,已通过的仅显示取样器名称。接下来介绍下常用的几种断言。
响应断言
这个应该说是用的最多的一种断言,主要是判断响应信息里有没有预期的信息,如果有这个信息,请求就是通过的,如果没有测试不通过。
1. Apply to(响应断言的应用范围)
Main sampleand sub-sample:作用于主main sample和子sub-sample
Main sampleonly:只作用于main sample
Sub-samplesonly:只作用于sub-sample
JMeterVariable:作用于JMeter变量
一般情况下,只勾选“Main sample only”足够了,因为一般发起一个请求实际上就是一个请求,除了某些情况类似于ajax请求,发起一个请求会触发多个请求,这时候就有main sample和sub-sample之分,另外如果发起了重定向请求,并且勾选“跟随重定向”,那么则把重定向的请求作为main-sample
2. 要测试的相应字段:
响应文本(TextResponse):从服务器返回的相应文本,包括body和请求头。
响应代码(ResponseCode):例如200/404等返回码
响应消息(ResponseMessage):比如success、ok
ResponseHeaders -响应头:包括Set-cookie头等信息
Document(text):通过ApacheTika追踪的各种各种类型文档的文本
IgnoreStatus:指示JMeter设置sampler status的初始状态为success。
3. 模式匹配规则
包括:如果文本中包含给定的正则表达式模式则为true
匹配:如果文本可以匹配给定的正则表达式则为true
Equals:如果整个文本等于给定的字符串(完全一模一样,大小写敏感)则为true。
Substring:如果文本包含模式字符串(大小写敏感),则为true
否:如果文本不包含或匹配给定文本,则为true
Size assertion
根据返回内容的大小进行判断,作用于返回的响应报文
1. Apply to:返回内容的断言范围(同相应断言)
2. Response Size Field to Test:响应字节的测试范围
Full response:全部响应
Response Headers:响应头
Response Body:响应体
相应代码:响应报文相关的代码
响应信息:响应报文的信息
3. Size to Assert:断言字节范围
大小单位:字节
比较类型:=、!=、>、=、<=
持续时间断言
用于判断服务器的响应时间是否符合要求,该断言计算的时间为从发送请求到收到响应的这段时间是否在我们设置的时间之内,如果该时间小于设置时间,则成功,如果大于设置时间则失败。
Apply to:
Main sampleand sub-sample:作用于父节点取样器和子节点取样器
Main sampleonly:仅作用于父节点取样器
Sub-sample only:仅作用于子节点取样器
断言持续时间:单位毫秒
先详细的解释这三个断言,还有许多的断言会在后续的使用过程中继续整理