jmeter之断言
关键字:断言、参数化(传参、用户变量、环境变量)
断言
响应数据显示不是我们预期的结果,但运行却显示正常,这个时候需要进行相关断言判断结果~
方法:
1、响应断言
可根据要测试响应字段和模式匹配规则来设置断言,比如下方截图是匹配返回的结果中是否包含“code:0,”,如果包含则表示断言成功,否则失败。响应断言可添加多个,但是多个断言之间是与的关系,不能满足或的需求。
apply to:是应用范围,设定匹配的范围
Main sample and sub-samples:匹配范围为当前父取样器,及子取样器
Main sample only :仅当前父取样器
Sub samples only:仅子取样器
JMeter Variable:变量值进行匹配
一般选择Main sample only即可。如果一次发送多个请求,则需要根据实际断言需要选择其他选项了。(例如一个ajax请求,会发送多个GET或POST时。)
要测试的响应字段
1.响应文本
服务器响应文本,一般情况下,我们都是勾选改选项,用于验证服务器返回值。
2.Document(text)
通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式。jmeter会用Apache Tika去解析服务器响应内容,耗内存、也耗时间,解析易失败,尽量少用或不用。多用响应文本方式来进行断言验证
3.URL样本
对请求的url进行断言,如果请求没有重定向(302),那么该url即为请求的url;如果有重定向(切跟随重定向),那么url则包含了请求url和重定向url。
4.响应代码
即http响应代码,例如200,404等等,需要注意: 由于jmeter默认情况下认为4xx,5xx时该请求失败,所以在断言这类响应代码时,需要同时勾选Ingore Status,才能正常去做断言。
5.响应信息
即响应代码对应的信息,例如OK, Not Found等等这类的。
6.Response Headers
即http响应头信息,主要用于断言当响应头带有唯一或特定意义时。
7.Ingore Status 请参见4响应代码的使用说明。
模式匹配规则
1.包括: 指返回结果包含要测试的模式中指定的内容,支持正则表达式
2.匹配:(1)相当于equals。返回值是固定的,可以以返回值做断言,效果同equals;(2)正则表达式匹配。用正则表达式来匹配返回结果,但必须全部匹配。即正则表达式必须能匹配整个返回值,而不是返回部分值,注意与包括模式的区别(包括是支持模糊匹配的)。
3.Equals:指返回结果与指定的测试模式完全一致。
4.Substring:与“包括”模式差不多,都是指返回结果包括指定的内容,但Substring不支持正则表达式。
否:相当于取反。即如果上述断言结果为true,勾选“否”选项后,则最终断言结果为false。
2.Beanshell Assertion
当某些断言不能满足使用时,比如多个断言或的情况,可以使用Beanshell Assertion来进行处理。
例如“code:0”或者“code:999”都认为断言成功时,可以使用如下方法来进行处理:
String data = SampleResult.getResponseDataAsString();
if (data.indexOf("\"Code\":999") != -1 || data.indexOf("\"Code\":0") != -1)
{
SampleResult.setSuccessful(true);
}
else
{
SampleResult.setSuccessful(false);
}