Jmeter —— 常用的几种断言方法(基本用法)

在使用JMeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过,本文 主要介绍几种常用的断言:响应断言、JSON断言、BeanShell 断言

一、响应断言

  1. 响应断言是最常用的一种断言方法,它可以对各种返回类型的结果进行断言,比如Test、html、application/json等

  2. 在需要进行断言的Sample,点击右键》添加》断言》响应断言

  1. Apply to选项默认即可,Main sample only(仅作用于父节点取样器)
  1. 测试字段常用的有响应文本(对响应结果进行断言)、响应头(对响应头文件进行断言)
  1. 模式匹配规则常用有包括(响应结果包括断言的内容),相等(响应结果和断言结果相同)
  1. 测试模式可以添加你需要断言的部分,如果是包括,就可以添加多个
  1. 执行测试,断言通过则显示绿色
  1. 把断言改成响应结果不存在的字段,执行结果,显示红色,断言结果显示系统响应结果不包含"测试断言"字段
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

二、JSON断言

  1. JSON断言也是测试工作中经常用到的一种断言方法,它只能针对响应结果是applicaton/json格式的请求进行断言
  1. 在需要进行断言的Sample,点击右键》添加》断言》JSON断言
  1. 我们使用json断言,一般是断言某个字段值是否返回的是我们需要的,所以需要写JSON PATH(不会写的看本人另外一篇文章有介绍如何写),下图使用正则模式匹配返回的结果包含40就认为响应结果满足要求,断言配置和响应结果如下所示:
  1. 下面展示断言结果为常量时,如何进行断言设置,如下图所示

三、BeanShell断言

  1. BeanShell断言支持各种开发语言,本文介绍使用java编写断言,使用BeanShell断言的好处是可以自由发挥,比如当断言失败,提示预期结果、实际结果,或者失败时把结果输出到日志

  2. 在需要进行断言的Sample,点击右键》添加》断言》BeanShell断言

  1. 如果使用包含匹配,只需要修改预期结果即可,预期结果需要写在双引号之间,中间的双引号需要添加\转义,如下:
 String response = "";
String Str = "{\"errNo\":\"403\"";   //预期结果,需要校验的字段
 
response = prev.getResponseDataAsString();    //获取当前请求响应结果
  
if(response == ""){  
    Failure = true;  
    FailureMessage =   "系统无响应,获取不到响应数据!";  
    //对比数据库内容和响应内容,私用euqals方法判断是否一致  
    }
else if(response.contains(Str) == false){  
        //把断言失败置为真   
        Failure = true;    
        String Msg = "\n系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";       		          FailureMessage = Msg + "\n" + "期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n";   
        }
  1. 使用完全相等匹配,并且失败时,输出结果到日志,本次把预期结果改错,所以会输出响应结果到错误日志,代码如下:
String response = "";
String Str = "{\"errNo\":\"401\"";   //预期结果,需要校验的字段
 
response = prev.getResponseDataAsString();    //获取当前请求响应结果
  
if(response == ""){  
    Failure = true;  
    FailureMessage =   "系统无响应,获取不到响应数据!";  
    log.info(FailureMessage);
    //对比数据库内容和响应内容,私用euqals方法判断是否一致  
    }
else if(response.equals(Str) == false){  
        //把断言失败置为真   
        Failure = true;    
        String Msg = "\n系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";       		          FailureMessage = Msg + "\n" + "期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n";   
        log.info(FailureMessage);
        }

今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

相关推荐
字节程序员1 小时前
Jmeter分布式压力测试
分布式·jmeter·压力测试
Seven 7 Chihiro2 小时前
软件测试之非功能测试设计
功能测试
美团测试工程师12 小时前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
love静思冥想15 小时前
JMeter 使用详解
java·jmeter
测试者家园18 小时前
ChatGPT生成接口文档的方法与实践
软件测试·chatgpt·测试用例·接口测试·接口文档·ai赋能·用chatgpt做软件测试
Heaven64521 小时前
6.8 Newman自动化运行Postman测试集
软件测试·自动化·接口测试·postman·newman
测试老哥1 天前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
测试者家园1 天前
ChatGPT接口测试用例生成的流程
软件测试·chatgpt·测试用例·接口测试·测试图书·质量效能·用chatgpt做测试
互联网杂货铺2 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
测试者家园2 天前
ChatGPT与接口测试工具的协作
软件测试·测试工具·chatgpt·接口测试·ai赋能·用chatgpt做软件测试·测试图书