zoukankan      html  css  js  c++  java
  • JMeter常用的几种断言方法

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

    一、响应断言
    1. 响应断言是最常用的一种断言方法,它可以对各种返回类型的结果进行断言,比如Test、html、application/json等
    2. 在需要进行断言的Sample,点击右键》添加》断言》响应断言
    在这里插入图片描述
    3. Apply to选项默认即可,Main sample only(仅作用于父节点取样器)
    在这里插入图片描述
    4. 测试字段常用的有响应文本(对响应结果进行断言)、响应头(对响应头文件进行断言)
    在这里插入图片描述
    5. 模式匹配规则常用有包括(响应结果包括断言的内容),相等(响应结果和断言结果相同)
    在这里插入图片描述
    6. 测试模式可以添加你需要断言的部分,如果是包括,就可以添加多个
    在这里插入图片描述
    7. 执行测试,断言通过则显示绿色
    在这里插入图片描述
    8. 把断言改成响应结果不存在的字段,执行结果,显示红色,断言结果显示系统响应结果不包含“测试断言”字段
    在这里插入图片描述
    在这里插入图片描述
    二、JSON断言
    1. JSON断言也是测试工作中经常用到的一种断言方法,它只能针对响应结果是applicaton/json格式的请求进行断言
    在这里插入图片描述
    2. 在需要进行断言的Sample,点击右键》添加》断言》JSON断言
    在这里插入图片描述
    3. 我们使用json断言,一般是断言某个字段值是否返回的是我们需要的,所以需要写JSON PATH(不会写的看本人另外一篇文章有介绍如何写),下图使用正则模式匹配返回的结果包含40就认为响应结果满足要求,断言配置和响应结果如下所示:
    在这里插入图片描述
    在这里插入图片描述
    4. 下面展示断言结果为常量时,如何进行断言设置,如下图所示
    在这里插入图片描述
    在这里插入图片描述
    三、BeanShell断言
    1. BeanShell断言支持各种开发语言,本文介绍使用java编写断言,使用BeanShell断言的好处是可以自由发挥,比如当断言失败,提示预期结果、实际结果,或者失败时把结果输出到日志
    2. 在需要进行断言的Sample,点击右键》添加》断言》BeanShell断言
    在这里插入图片描述
    3. 如果使用包含匹配,只需要修改预期结果即可,预期结果需要写在双引号之间,中间的双引号需要添加转义,如下:
    在这里插入图片描述
    在这里插入图片描述

    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 = "
    系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";       		          FailureMessage = Msg + "
    " + "期望结果:
    " + Str + "
    " + "响应内容: 
    " + response +"
    ";   
            }
    


    4. 使用完全相等匹配,并且失败时,输出结果到日志,本次把预期结果改错,所以会输出响应结果到错误日志,代码如下:
    在这里插入图片描述
    在这里插入图片描述

    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 = "
    系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";       		          FailureMessage = Msg + "
    " + "期望结果:
    " + Str + "
    " + "响应内容: 
    " + response +"
    ";   
            log.info(FailureMessage);
            }
    

    如果文章对你有帮助,欢迎关注本人公众号,公众号与本平台文章同步,方便大家查阅,本人会持续推出与测试有关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制


    QQ技术交流群:加群请输入验证信息 博客园
                  在这里插入图片描述


    微信二维码关注公众号:

    在这里插入图片描述


    关注之后,回复资源下载,即可获取本人共享的各种资源下载地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dkyHNY2D-1569554485737)(https://s1.51cto.com/images/blog/201908/06/2e62f8806e1dc1c391c4332ac7fd70b1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]

  • 相关阅读:
    tomcat 闪退处理
    MVC的各个部分都有那些技术来实现?如何实现?
    jsp和servlet的区别、共同点、各自应用的范围?
    如何从CDN加载jQuery?
    window.onload()函数和jQuery中的document.ready()有什么区别?
    JQuery有几种选择器?
    jQuery 库中的 $() 是什么?
    JS 中 == 和 === 区别是什么?
    如何在JavaScript中每x秒调用一个函数
    undefined,null 和 undeclared 有什么区别?
  • 原文地址:https://www.cnblogs.com/Jmeter-Automation/p/12730673.html
Copyright © 2011-2022 走看看