Jmeter的元件使用介绍:(八)断言器详解

Jmeter有许多断言器,如:响应断言、Json断言、Beanshell断言、持续时间断言、大小断言、Xpath断言、Html断言。此文主要介绍前面4种断言的使用,其他断言器使用非常少,此处不作多介绍。使用过程中需要注意作用域的问题,(1)如果在测试计划下添加断言器,那该断言器会对整个测试计划下的取样器断言(2)如果在线程组下添加断言器,那么对加了断言器的线程组断言(3)如果在取样器添加断言器,那么只对当前取样器断言。(4)如果作用域下存在多个断言器,断言器会叠加。

下面介绍几种断言器的使用

一:响应断言

该种断言器一般放到具体的取样器下,断言具体的取样器是否包含自己的预期内容。

1:测试字段

(1)响应文本:对响应的文本做断言,此选项不包含响应头信息

(2)响应代码:对响应的状态码断言

(3)响应信息:对响应的全部信息做断言,此选项包含响应所有信息

(4)响应头:对响应头做断言

(5)请求头:对请求头做断言

(6)URL样本:对取样器URL做断言

(7)文档:对响应文档内容断言,至今未使用过

(8)忽略状态:博主也没使用过,应该不怎么使用,默认即可

(9)请求数据:对请求数据做断言

2、模式匹配规则

(1)包括:延段测试字段是否包含指定的文本或者字段值,支持正则表达式

(2)匹配:断言测试字段是否与期望值完全匹配,一般需要结合正则表达式使用

(3)相等:断言测试字段是否与期望值完全相等,此处不支持正则表达式

(4)字符串:断言测试字段是否包含指定的字符串,不支持正则表达式

(5)否:不进行匹配

(6)或者:博主也没使用过,默认即可

3、自定义失败消息

对于断言不通过的时候,可以输出自定义的失败消息

实例:

对百度发起请求,断言响应信息是否包含"百度"字符串,如果包含即断言成功,不包含则断言失败,自定义失败消息"该请求断言不通过噢噢噢"

执行结果:

二:断言持续时间

该断言器一般添加在测试计划或者线程组下,用来断言脚本下所有取样器是否在指定时间内完成了请求和响应

三:Json断言器

该断言器一般添加到指定取样器下。可以使用Json表达式提取指定断言字段进行断言,断言方式支持正则表达式。

例子:对【聚合数据】提供的新闻列表API请求做断言,通过author_name字段是否包含"人民资讯"进行断言。

响应数据格式如下:

断言器设计:

执行结果:由于包含指定字符串,所以断言结果是通过的。

四:Beanshell断言器

博主极力推荐使用该种断言器,功能最为强大,使用简单。

前面介绍过的Beanshell前置处理器语法在这里都可以使用上,要看Beanshell基础语法可以看前面的博客:
Jmeter全方面讲解------Jmeter的元件使用介绍:(四)前置处理器详解 - 筱筱创 - 博客园

Beanshell断言器添加了几个主要的内置对象的使用:

1、Failure:如果Failure=true;则声明断言失败

2、FailureMessage:可以自定义指定断言器的断言输出报告

下面使用Beanshell断言器对【聚合数据】提供的新闻列表API请求做断言。

查看代码

复制代码
String response = prev.getResponseDataAsString();//获取响应信息
String code=prev.getResponseCode();//获取响应的状态码

//断言状态码是否为200且响应信息是否包含字符串"人民资讯",两者都满足才断言通过
if(response.contains("人民资讯")&&"200".equals(code)){
Failure = false;
log.info("新闻头条请求断言通过");
}else{
Failure = true;
FailureMessage="断言失败了哦";

}

执行结果:

相关推荐
泥水沟的胖头鱼9 小时前
关于jmeter修改 JVM 堆,到底是在jmeter.properties还是jmeter.bat?
jvm·jmeter·压力测试
1candobetter1 天前
JMeter + ServerAgent 压测监控实践
jmeter
查拉图斯特拉面条2 天前
JMeter 实战技巧:JSON 数组筛选指定对象并剔除首尾大括号
jmeter·json
查拉图斯特拉面条2 天前
JMeter 实战:JSON 响应中文节点 + 数值精准断言(附真实接口案例)
jmeter·json
qq_4924484464 天前
Jmeter Transaction Controller(事务控制器) 的 TPS(每秒事务数)严格固定为 1
java·开发语言·jmeter
Rookie_hh4 天前
使用Jmeter进行性能测试
jmeter
qq_452396237 天前
第十四篇:《JMeter插件扩展:自定义函数与第三方插件》
开发语言·python·jmeter
qq_452396237 天前
第十三篇:《分布式压测:JMeter Master-Slave集群》
分布式·jmeter
qq_452396238 天前
第十一篇:《性能压测基础:JMeter线程模型与压测策略设计》
java·开发语言·jmeter
沫沫-小白8 天前
JMeter 上传固定文件时,如何修改 Content-Disposition 的 filename
jmeter