zoukankan      html  css  js  c++  java
  • Jmeter学习笔记(十二)——断言

    一、断言简介

    jmeter中有个元件叫做断言(Assertion)。用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致。

    使用断言的目的:在request的返回层面增加一层判断机制;因为request成功了,并不代表结果一定正确。

    使用断言的方法:

    在选择的Sampler下添加对应的断言(因为不同类型的断言检查的内容不同);配置好响应的检查内容(根据断言情况而定,有的断言控制面板不需要添加任何内容,如XML Assertion)。

    添加一个断言结果的监听器(从监听器中添加),通过“断言结果”可以看到是否通过断言;对于一次请求,如果通过的话,断言结果中只会打印一行请求的名称;

      如果失败,则除了请求的名称外,还会有一行失败的原因(不同类型的断言,结果不同)。

    PS:一个Sampler可以添加多个断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了,那么才算request成功。

    二、断言的种类

    Jmeter4.0有12钟断言

     三、常用几种断言的介绍

    1、响应断言

    在sampler下面添加响应断言

    APPly to:适用范围

             Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

             Main sample only:仅作用于父节点取样器

             Sub-samples only:仅作用于子节点取样器

             JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

    要测试的响应字段:要检查的项

                    响应文本

                    响应代码

                    响应信息

                    Response Headers:响应头部

                   Request Herders:请求头部

                   URL样本

                   Documeng(text)

                   Ignore status:忽略返回的响应报文状态码、

                   Request Datas

    模式匹配规则:

               包括:返回结果包括你指定的内容

               匹配:(好像跟Equals查不多,弄不明白有什么区别)   

               Equals:返回结果与你指定结果一致

               Substring:返回结果是指定结果的字串

               否:不进行匹配

               或者 

    要测试的模式:即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理

     2、XPath断言

    XPath为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。

    作用对象:针对返回信息为XPAth的数据类型进行断言。就是如果服务器响应返回的是 xml 格式的内容,这时最佳的断言验证类型就是使用 XPath Assertion。

    Apply to:适用范围

             Main sample and sub-samples:主要样本和次级样本

             Main sample only:仅主要样本

             Sub-samples only:仅次级样本

             JMeter Variable:jmeter变量(输入框内可输入jmeter的变量名称)

    XML Parsing Options:XML解析选项

             Use Tidy(tolerant parser):使用Tidy(容错解析器),默认选择quiet(不显示)

             Quiet:不显示

             Report errors:错误报告

             Show warnings:显示错误

             Use Namespaces:使用名称空间

             Validate XML:验证XML(文件包/数据)

             Ignore Whitespace:忽略空格(允许你指定语法分析器可以忽略哪个空格,而哪个空格重要的)

             Fetch external DTDs:获取外部DTDs(一些XML元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在DTDs中声明)

    XPath Assertion:输入框中写入xpath断言,点击Validate验证其正确性

             True if nothing matches:确认都不匹配

    3、size断言

    用于判断返回内容的大小,判断响应结果是否包含正确数量的byte。可定义(=, !=, >, <, >=, <=)

    APPly to:应用范围(返回内容的断言范围)

             Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

             Main sample only:仅作用于父节点取样器

             Sub-samples only:仅作用于子节点取样器

             JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

    Response Size Field to Test:响应字节的测试范围(可以选择用于判断的响应范围)

             Full Response:全部响应

             Response Headers:响应头部

             Response Body:响应主体

             响应代码:响应报文相关的代码

             响应信息:响应报文的信息

             Size to Assert:断言字节范围

             字节大小单位为:字节;比较顺序是①返回内容的大小②比较类型③指定字节大小

     

    4、断言持续时间

    作用:用于判断服务器的响应时间,判断是否在给定的时间内返回响应结果

    APPly to:适用范围

             Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

             Main sample only:仅作用于父节点取样器

             Sub-samples only:仅作用于子节点取样器

    持续时间(毫秒):响应时间设置(单位:毫秒),如果响应时间大于设置的响应时间,则断言失败,否则成功

    5、BeanShell断言

    (1)BeanShell断言介绍

    BeanShell是jmeter的解释型脚本语言,和java语法大同小异,并有自己的内置对象和方法可供使用。 BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。

    作用对象:针对sampler中的Bean Shell sampler而使用的断言

    Name名称:断言的名字(可以用一个比较容易理解和分辨的名称)

    Comments注释:对这个断言进行一个解释,备注

    Reset bsh.interpreter before each call:在每次调用Bean Shell之前重置bsh.interpreter类(bsh.interpreter是Bean Shell脚本语言的一种类,也可以理解为一种解析器)

    Parameters参数(String Parameters and String []bsh.args):String参数(String []bsh.args是主类main函数的形式参数,是一个String 对象数组,可以用来获取命令行用户输入进去的参数)

    Script file脚本文件:可以填入脚本文件路径

    Script(see below for variables that are defined):参照下文定义的变量(使脚本文件参照定义的变量来运行)

    (2)BeanShell断言实例

    JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

    log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);

    ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。

    vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

        a) vars.get(String key):从jmeter中获得变量值

        b) vars.put(String key,String value):数据存到jmeter变量中

        更多方法可参考:org.apache.jmeter.threads.JMeterVariables

    props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

        a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义

        b) props.put("PROP1","1234");

    prev - (SampleResult):获取前面的sample返回的信息,常用方法:

        a) getResponseDataAsString():获取响应信息

        b) getResponseCode() :获取响应code

        更多方法可参考:org.apache.jmeter.samplers.SampleResult

    sampler - (Sampler):gives access to the current sampler

     在这里除了可以使用beanshell的内置变量外,主要通过 Failure 和 FailureMessage来设置断言结果。

     简单实例:

    断言结果:

  • 相关阅读:
    [Robot Framework] Robot Framework用Execute Javascript对XPath表示的元素执行scrollIntoView操作
    一台机器管理其他都装有kvm的实体机的虚拟机
    阿里云服务器问题
    开发族的跨域问题
    mysql不能连接的原因
    网络命令
    mysql5.7报错端口占用,服务起不来
    nagios的原理及server端跟client端安装配置全部过程
    查看CPU数量和核心数
    iptables的生产场景w
  • 原文地址:https://www.cnblogs.com/pachongshangdexuebi/p/11583712.html
Copyright © 2011-2022 走看看