• Jmeter 响应断言


    响应断言(Response Assertion):对服务器的响应进行断言校验。

    image

    (1)Apply to (应用范围): Main sample and sub-samples,Main sample only , Sub-samples only ,Jmeter Variable Name to use一共4种

    a、关于应用范围,我们大多数勾选“Main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,类似于ajax那种,那么就有main sample  和 sub-sample之分了
    b、此外,对于有重定向的请求,并且勾选了“跟随重定向”, 那么这两个请求都是 sub-sample,重定向后的请求(第二个请求)就是main-sample

    (2)响应字段: 响应文本,响应代码,响应信息,Response Headers,Request Headers,URL样本,Document(Text),Ignore Status 一共8种

    a、响应文本: 服务器响应文本,一般普通http响应,都勾选这个
    b、响应代码:http响应代码,如101,200,302,404,501等。但当我们要验证404,501等http响应代码时,需要勾选“ Ignore Status”,Ignore Status选项一定只能放在第一个Response Assertion中。
    一个sampler的成功与否取决于两方面,
    1、请求本身返回的响应码       2、断言结果
    只有这两个都正确,sampler才会是成功,否则失败。
    但是当我们勾选“Ignore Status”时,针对第一条的判断会取消,即默认请求本身返回的响应码是正确的,此时sampler的结果只依赖于断言结果。

    Http响应码4xx与5xx系列,sampler默认都是不成功的。此时如果我们勾选了“Ignore Status”,sampler最终的结果完全取决于我们添加的断言,如果断言结果正确则sampler成功,否则sampler失败。

    “Ignore Status”有一个副作用,它会清除上一个Response Assertion的断言结果信息,所以“Ignore Status”只能在第一个Response Assertion中设置。否则会出现请求显示是成功的,但实际上断言是失败的。(实际结果应该是:请求是失败的,因为第一条Response Assertion断言失败了,,只是这个Response Assertion断言失败被第二条的Ignore Status给忽略了)
    c、响应信息:http响应代码对应的响应信息,例如:OK, Found
        HTTP/1.1 200 Ok
        HTTP/1.1 302 Found
    d、Response Headers : 响应头信息,例如
        Cache-Control:private
        Connection:Keep-Alive
        Content-Encoding:gzip
        Content-Length:84
        Content-Type:text/html;charset=utf-8
        Date:Sun, 23 Jul 2017 03:08:43 GMT
        Expires:Sun, 23 Jul 2017 03:08:43 GMT
        Server:BWS/1.0
        Vary:Accept-Encoding
    e、Request Headers :请求头信息,例如    
        Accept:text/plain, */*; q=0.01
        Accept-Encoding:gzip, deflate, sdch
        Accept-Language:zh-CN,zh;q=0.8
        Connection:keep-alive
        Cookie:XXX
        Host:www.baidu.com
        Referer:https://www.baidu.com/
        User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
        X-Requested-With:XMLHttpRequest

    (3)模式匹配规则 :包括、匹配、相等、字符串、否、或者

    a、包括:返回结果包括你指定的内容,支持正则匹配   
       例如:
        响应字段为: 响应文本
        模式匹配规则:匹配
        断言为:1、success    2、[a-z]+
        当返回值为:{"msg":"login success."} , 这两个断言都是ok的,返回true
    b、匹配:   
        (1) 相当于 equals 。当返回值固定时,可以返回值做断言,效果和equals相同
        (2) 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。即正则表达式必须能匹配整个返回值,而不是返回值的一部分。
         例如:
          响应字段为: 响应文本
          模式匹配规则:匹配
          断言为:1、{"msg":"login success."}    2、{"msg":"[a-z]+ success."}  , 3、[a-z]+
          当返回值为:{"msg":"login success."}   ,断言1 2 是ok的, 断言3是false
          原因是,断言1 只能用于equals,而断言3 只匹配了返回值部分,而不是全部匹配。
    c、相等(Equals) : 响应内容要完全等于需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式
    d、字符串(SubString):与 “包括”差不多,都是指返回结果包括你指定的内容,但是字符串不支持正则字符串
      例如:
         响应字段为: 响应文本
         模式匹配规则:匹配
         断言为:1、success    2、[a-z]+
         当返回值为:{"msg":"login success."} , 断言1返回true, 但断言2返回false
    e、否:就相当于取反。 如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为 true。
    f、或者:如果不想用AND连接(所有的模式都必须匹配,断言才算成功),用OR选项可以用于将多个断言模式进行OR连接(只要一个模式匹配,断言就是成功的)

  • 相关阅读:
    ICQ
    Create小程序
    LRU最近最少使用算法
    感知器
    聚类-K均值
    阈值分类法
    最邻近分类
    设计模式
    高级排序算法
    Socket编程
  • 原文地址:https://www.cnblogs.com/fanfeng/p/14900331.html
Copyright © 2020-2023  润新知