我们在利用jmeter做功能性的测试时,常常需要确定Jmeter究竟有没有正确工作。有时,我们利用监听器查看的结果是正确的。但实际上,我们发送的请求中的有些参数可能是错误的,而系统并没有按照我们预期的方式进行,比如:
1.有一个登录页,它是整个应用的入口。当用户登录之后,应用会将用户相关的安全信息放到session中。
2.有一个filter,它拦截请求,检查每个请求相关的session中是否包含有用户安全信息。如果没有,那么请求被重定向到登录页,要求用户提供安全信息。
在这种配置下应用测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请求实际定位到登录页。如果不加断言,那么在监听器看来所有的请求都是成功。而实际上,这些请求最终都没有到达它们应该去的地方。显然,这种测试结果不是我们所期望的。
如果我们要确定Jmeter有没有按照我们的预期进行工作,我们应当考虑使用Jmeter提供的断言。例如判断http返回结果里面是否含有某个字符串。如果断言为真,Jmeter会标记请求为成功,否则标记为失败。为了最大限度的灵活性,Jmeter允许使用正则表达式创建断言。
要在Jmeter中添加断言,我们首先要知道我们期望返回什么结果,比如我们利用Jmeter测试http请求,向程序添加数据,同时,Jmeter又有查询的http请求,那么,我们当然要验证我们利用Jmeter的http请求,是否成功添加了数据,这个时候,我们可以在查询的http请求中添加断言,如下图所示:
我们一般选择响应断言,如下图所示:
我们可以根据自己的需要选择要测试的响应字段,文本,还是代码,一般选择响应文本,然后,我们选择匹配规则,一般选择“包含”,如果要精确匹配,则可以选择“匹配”,但是选择“匹配”,因为响应的内容一般还包含其他的信息,比如html语言标签,所以很难准确匹配。然后在在要测试的模式下面,添加你要响应的内容。
添加好断言后,要添加一个监听器,以监听响应断言,选择添加——监听器——断言结果,则,如果在执行的时候,http请求返回的数据符合添加的断言内容,断言结果则为运行成功的灰色,否则,则为运行失败的红色。