先说一下使用断言的目的:在request的返回层面增加一层判断机制。因为request成功了,并不代表结果一定正确。类似于QTP中的检查点检查点。断言的使用方法:
step_1:在你选择的Sampler下添加对应的断言(因为不同类型的断言检查的内容不同)。配置好响应的检查内容(根据断言情况而定,有的断言控制面板不需要添加任何内容,如XML Assertion)。
step_2:添加一个断言结果的监听器(从监听器中添加),通过“断言结果”可以看到是否通过断言。对于一次请求,如果通过的话,断言结果中只会打印一行请求的名称;如果失败,则除了请求的名称外,还会有一行失败的原因。(不同类型的断言,结果不同。)
注意:一个Sampler可以添加多个断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了,那么才算request成功。
下面简单说一下几种断言的使用(前3种应该较为常用一点):
1、Response Assertion(响应断言)
适用于判断返回内容中的内容,控制面板元素如下:
位置1:名称、注释
位置2:要测试的相应字段,即要检查的项
位置3:模式匹配规则
- 包括:返回结果包括你指定的内容
- 匹配:(好像跟Equals查不多,弄不明白有什么区别)
- Equals:返回结果与你指定结果一致
- Substring:返回结果是指定结果的字串
否:不进行匹配
位置4:要测试的模式,即填写你指定的结果(可填写多个,如图中就是希望返回文本中包含有2个指定的字符串,只有当同时包含了这2个串,这个断言才算通过,否则,算失败。)按钮【添加】、【删除】是进行指定内容的管理
2、Size Assertion(Size断言)
Size Assertion用于判断返回内容的大小,Size Assertion控制面板元素如下:
位置1:名称、注释
位置2:指定大小(单位:字节)与比较类型,返回内容的大小、比较类型、指定字节大小的比较时的摆放顺序是:【返回内容的大小】【比较类型】【指定字节大小】,如果这个比较结果通过,则断言通过,如图中,如果返回内容的大小大于10个字节,则断言通过,否则失败。
3、Duration Assertion(Size断言)
Duration Assertion用于判断服务器的响应时间,控制面板元素如下:
位置1:名称、注释
位置2:响应时间设置(单位:毫秒),如果响应时间大于设置的响应时间,则断言失败,否则成功!(等于的情况不好设置,暂不知道具体情况如何)
4、HTML Assertion(HTML断言)
html assertion的作用是检查返回的的内容,格式是否符合指定格式的相关标准。具体见下面说明。HTML Assertion的控制面板元素如下:
位置1:名称、注释
位置2:Tidy Settings,Doctype有auto、omit、strict、loose(这里各设置代表什么意思暂不太了解)
位置3:格式类型,即你按那种格式来检查返回内容,html or xhtml or xml?
位置4:能接受的最大值设置,Error threshold:最大可以接受的错误数;Warning threshold:最大可以接受的警告数。如果勾选“Error only”这忽略Warning,只对Error作统计检查。如果对返回内容的检查结果不超过指定结果,则断言通过,否则失败。
5、XML Assertion(XML断言)
就目前的理解来看XML Assertion的作用是判断返回结果是否否和xml的格式即<></>成对出现。(不知这样理解对不对?如果是这样的话,这个在HTML中,设置Format为XML就可以实现了,为什么还需要这个呢?)XML Assertion控制面板元素如下:
从控制面板上可以看出,XML Assertion不需要设置任何内容。
在使用XML Assertion的过程中,遇到一个问题,弄不明白,问题贴在这里,希望路过的朋友,如果知道的话,帮忙解答一下:
Jmeter中添加xml assertion
断言结果:Error on line 1: The element type "Detail" must be terminated by the matching end-tag "</Detail>".
但实际请求返回结果:
<?xml version="1.0" encoding="UTF-8"?><Info><Country>中国</Country><Province>未知</Province><City>未知</City><Type>大学</Type><ISP>教育网</ISP><Detail>中国教育网</Detail></Info>
问题:<Detail></Detail>是成对的,断言那边怎么会过不去?