阅读文本大概需要3分钟。
0x01、断言的作用
一个请求发送出去,如何判断该请求执行的任务是否成功呢?通过检查请求的响应数据,是否返回预期想要的数据,如果是,判断请求成功;反之请求失败。断言就是用来判断请求成功与否的。
0x02、响应断言的详解
名称:响应断言的名称
注释:响应断言的备注
应用范围:通常发出一个请求只触发一个请求,只勾选“main sample only”就可以;若发一个请求可以触发多个服务器请求,就有main sample和sub-sample之分了。
① Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
② Main sample only:默认的是这个,仅作用于父节点的取样器
③ Sub-samples only:仅作用于子节点的取样器
④ JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
测试字段:针对数据来源不同部分进行匹配断言。主要来源有响应文本、响应代码、响应信息、响应头、请求头、URL样本、文档(文本)、请求数据
① 响应文本:服务器返回的文本内容,不包括任何http响应头。一般普通http响应,都勾选这个。对应“查看结果树”中“响应数据”的内容。
② 响应代码:http的响应状态码,如http请求中200代表成功,404代表请求资源不存在等。对应 “查看结果树” 中的 “取样器结果”→“Response code”
③ 响应信息:响应代码对应的响应信息,处理成功返回“Found”或者“ok”字样。对应 “查看结果树”中的“取样器结果”→“Response message”
如:
HTTP/1.1 200 Ok
HTTP/1.1 302 Found
④ 响应头(Response Header):匹配响应头中的信息。对应“查看结果树”中的“取样器结果”→“Response headers”。
如:
Server: Tengine
Date: Sun, 12 Mar 2020 09:43:52 GMT
Content-Type: text/html
Content-Length: 260
⑤ 请求头:匹配请求头中的信息。对应“查看结果树”中的“请求”→“Request Headers”
⑥ URL样本:对采样器的url进行断言。如果请求没有重定向(302),那么该url就是请求的url;如果有重定向(且跟随重定向),那么url就包含请求url和重定向url。对应“查看结果树”中的“请求”→ http请求方法后的URL
⑦ 文档(文本):通过Apache Tika从各种类型的文档中提取数据,进行断言匹配。此选项开启后,会严重影响性能,谨慎使用。
⑧ 请求数据:发送到服务器的请求文本,即正文;不包括任何http头。对应“查看结果树” 中的“响应数据” → “POST data”或者“GET data”
忽略状态:用来忽略请求响应状态码,如果请求结果状态码是200,则会被判断为成功;如果状态码是其他的,则会被判断为失败。如果选择忽略状态,就会忽略请求状态码,直接断言其他的内容
模式匹配规则:断言匹配的规则
① 包含:响应内容包括需要匹配的内容即代表响应成功
② 匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则
③ 相等:响应内容要完全等于需要匹配的内容才代表响应成功,大小写敏感,匹配内容是字符串非正则表达式
④ 字符串:响应内容包含需要匹配的内容才代表响应成功,大小写敏感,匹配内容是字符串非正则表达式
④ 否:就相当于取反操作。表示不包含、不匹配、不等于、没有和模式字符串相匹配的
⑤ 或者:一个断言可以添加多个“测试模式”。使用OR选项后,只要其中有一个模式匹配,断言将会成功;不选择OR时,将默认为AND选项,必须所有模式都匹配,断言才会成功。
备注:
1、“相等”和“字符串”模式是纯字符串,而不是正则表达式。
2、“匹配”和“相等”要完全等于模式字符串,或者模式字符串的正则表达式形式。
3、“包含”和“字符串”只需要包含有模式字符串,或者模式字符串的正则表达式形式即可,而不必完全相等。
4、正则表达式中可以传入参数
5、因为大小写敏感造成响应失败,如果被匹配的字符串不需要关注大小写,则可以降低匹配级别,类似降到“包括”、“匹配”的级别,这样可以响应成功。
测试模式:填写匹配的字符串或正则表达式