Jmeter响应断言详解
一、添加响应断言
选中需要进行断言的Sampler,右键添加 “断言” → “响应断言”。参数配置如下:
适用于:
1、仅主样本 - 仅适用于主样本
2、仅子采样 - 仅适用于子采样
3、主样本和子样本 - 适用于两者。
4、要使用的JMeter变量名称 - 断言将应用于指定变量的内容。(???)
要测试的字段:
1、文本响应 - 来自服务器的响应文本,即正文,不包括任何HTTP标头。对应 “查看结果树” 中 “响应数据” 的内容。
2、响应代码 - 例如200。对应 “查看结果树” 中的 “取样器结果”→“Response code” 。
3、响应信息 - 例如OK。对应 “查看结果树” 中的 “取样器结果”→“Response message” 。
4、Response Headers - 包括Set-Cookie头(如果有的话)。对应 “查看结果树” 中的 “取样器结果”→“Response headers”。
5、Request Headers - 对应 “查看结果树” 中的 “请求”→“Request Headers”。
6、URL样本 - 当前请求的URL。对应“查看结果树” 中的 “请求”→ HTTP请求方法后跟着的URL。
7、Document(text) - 通过Apache Tika从各种类型的文档中提取文本(请参阅查看结果树文档视图部分)。
8、Request Data - 发送到服务器的请求文本,即正文,不包括任何HTTP标头。对应 “查看结果树” 中的 “响应数据” → “POST data” / “GET data” 。
9、Ignore Status - 样本的总体成功取决于断言结果与现有的响应状态的结合。当选择 “Ignore Status” 复选框时,响应状态被强制成功,再进行本次断言评估。(具有4xx和5xx范围内的状态的HTTP响应通常被认为不成功。执行进一步检查之前,可以使用“ 忽略状态 ”复选框来设置状态。请注意,这将会清除以前断言失败的效果,因此请确保“ 忽略状态”复选框仅用于第一个断言。)
模式匹配规则:
1、包括 - 如果文本包含正则表达式模式,则为true
2、匹配 - 如果整个文本与正则表达式模式匹配,则为true
3、Equals - 如果整个文本等于模式字符串,则为true(区分大小写)
4、Substring - 如果文本包含模式字符串,则为true(区分大小写)
5、否 - 反转检查结果,用于表示不包含,不匹配,不等于,没有和模式字符串相匹配的Substring。
6、或者 - 一个断言可以添加多个“要测试的模式”。使用OR选项后,只要其中有1个模式匹配,断言将会成功。不选择“OR”时将默认为AND选项,必须所有模式都匹配,断言才会成功。
注意:
1、“Equals” 和 “Substring” 模式是纯字符串,而不是正则表达式。
2、“匹配” 和 “Equals” 要完全等于模式字符串,或者模式字符串的正则表达式形式。
3、“包含” 和 “Substring” 只需要包含有模式字符串,或者模式字符串的正则表达式形式,而不必完全相等。
4、正则表达式中可以传入参数,如验证登录成功后的用户路径,传入用户名${user}。
<a href="/user/${user}" class="model-link inside inverse"><b>.*</b></a>
注意模式字符串不要包含正则表达式的定界分隔符“/”, i.e. 表达式应该写为“Price: \d+”,而不是“/Price: \d+/”,否则会报错。更多关于正则表达式的说明见用户手册Response_Assertion:http://jmeter.apache.org/usermanual/component_reference.html#Response_Assertion
5、因为大小写敏感造成响应失败,如果被匹配的字符串不需要关注大小写,则可以降低匹配级别,类似降到“包括”、“匹配”的级别,这样可以响应成功。
要测试的模式:
要测试的模式列表。默认每种模式都单独测试,如果模式失败,则不会检查更多模式。与 “模式匹配规则” 的 “或者” 搭配时,可以实现 “或” 逻辑。
二、查看断言结果
一、添加 “断言结果” 监听器,运行脚本后看可以在这里看到所有请求的断言结果。
如果失败,将显示失败的断言信息。
第一次运行断言失败如果成功,则只显示请求的信息:
修改后,第二次运行断言成功二、在“查看结果树” 中,也可以看到断言的结果。
“查看结果树” 中的断言结果