JMeter之响应断言
首先,我们先聊一聊,什么是断言。
百度对于【断言】的解释:断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。
简而言之:判断请求成功与否。
接下来我们聊一聊JMeter中的断言。
添加断言的方法:【HTTP请求】 -> 添加 -> 断言。
如图所示,JMeter自带了很多种断言,对于后端Java来说,常用的断言有两种,分别是【响应断言】与【BeanShell】断言。
本文主要阐述【响应断言】。
如图所示,响应断言分为【Apply to】【测试字段】【模式匹配规则】【测试模式】【自定义失败信息】五个部分。
Apply to
断言的作用域。
笔者通常使用默认的【Main sample only】(比如给HTTP请求新增断言,选择了Main sample only,那么这个断言的作用域只针对此HTTP请求),没有对其他作用域有过深入的研究。之前笔者看到过一个帖子,对其他选项有一些印象。
【Main sample and sub-samples】与【Sub-samples only】这两个作用域的场景是:部分请求一次会触发多个线程,【Main sample and sub-samples】作用于主线程以及子线程,【Sub-sample only】只用作于子线程。如果选择了前者,即使主线程成功,子线程失败,那么断言也是以失败做结果。(笔者没有针对这种场景做详细的实验)
测试字段
这个模块,指的是我们使用哪一块的返回信息做断言。
【响应文本】指返回的文本信息。
【响应代码】指Http响应码,如200、500等。
【响应信息】指的是http的response message。
【响应头】指http响应头信息。
注意:响应文本不等于响应信息。
如下图所示,响应数据是有值的,但是响应信息显示为空,此时如果【测试字段】选择【响应信息】,断言会失败。笔者尝试了几种方式,仍然没有找到如何设置Response message,有清楚的道友可以留言给我。
其他的【测试字段】笔者工作中没有用到,以后使用到再做记录。
模式匹配规则
分为【包括】【匹配】【相等】【字符串】
【包括】与【字符串】:断言的内容,比如响应信息为
{"status":"0","message":"success"}
,选择【包括】或者【字符串】时,断言内容为【“status”:“0”】,则可以通过。二者的区别是,【包括】支持正则,【字符串】不支持正则。
【匹配】与【相等】:响应信息必须完全等于断言内容才可以通过,否则均为失败。其中【相等】是通过正则表达式匹配。(内容必须完全匹配)
【否】:挂钩之后,断言结果true为false,false为true,很奇妙的旅程。
【或者】:当有多个断言时,只要有一个断言成功,那么最终结果就是成功的。
测试模式
断言的内容。如果有多个,按照顺序执行,没有选择【或者】的情况下,所有的断言通过之后,取样器结果才是成功的。
自定义失败信息
顾名思义,当失败是,可以定义个性化信息。
实战
编写一个Java接口。
@PostMapping("/test/jmeter2")publicStringtest2(){return"{\n"+" \"status\":\"0\",\n"+" \"message\":\"success\"\n"+"}";}
响应文本断言
包括
"status":"0"
执行结果
响应代码断言
http状态码200
结果
模拟失败
响应代码为500,自定义失败信息
结果
JMeter之响应断言篇到此告一段落,部分功能笔者未使用过,后续工作中如实际使用,再做记录。如果有对断言部分比较精通的道友,还请不吝赐教。
版权归原作者 是天松啊 所有, 如有侵权,请联系我们删除。