zoukankan      html  css  js  c++  java
  • 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连接(只要一个模式匹配,断言就是成功的)

  • 相关阅读:
    Android Media Playback 中的MediaPlayer的用法及注意事项(二)
    Android Media Playback 中的MediaPlayer的用法及注意事项(一)
    34. Search for a Range
    33. Search in Rotated Sorted Array
    32. Longest Valid Parentheses
    31. Next Permutation下一个排列
    30. Substring with Concatenation of All Words找出串联所有词的子串
    29. Divide Two Integers
    28. Implement strStr()子串匹配
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/fanfeng/p/14900331.html
Copyright © 2011-2022 走看看