Jmeter之断言

在调试生成的JMeter脚本时,可以通过使用断言的方式验证接口的返回信息是否正确,断言可以创建在任何目录下(包括测试计划、线程组、取样器),添加路径为:右键单击左侧某个菜单 - '添加' - '断言',如下图所示:

常用的断言有响应断言、JSON断言、大小断言、断言持续时间。

响应断言

用于检查任何形式的响应信息是否符合预期

  1. 右键单击取样器,添加'响应断言'

  2. 选中响应断言,在右侧窗口中可以修改响应断言的名称

  3. 在右侧窗口的'测试字段'中选择'响应文本',在'模式匹配规则'中选择字符串,点击'添加'按钮,在测试模式窗口中输入要检查的内容,比如'百度一下,你就知道',这样就会自动检查返回的响应体中是否包含这个字符串 

  • 响应代码(Response Code):校验响应返回的状态码,比如'200'
  • 响应信息(Response Message):校验响应代码对应的响应信息,比如'OK'
  • 响应头(Response Header):校验整个响应头的内容
  • 请求头(Request Header):校验整个请求头的内容
  • 请求数据(Request Data):校验整个请求体的数据

Contains:返回结果包括指定的内容,支持正则表达式  

Matches:返回结果完全等于指定的内容,支持正则表达式

Equals:返回结果完全等于指定的内容,不支持正则表达式

Substring:返回结果包括指定的内容,不支持正则表达式

Not:比如希望返回结果中不包含'百度一下'这几个字

Or:右侧窗口中,可以通过点击'添加'按钮多次新增多个校验规则,默认多个规则之间是'与'的关系,即需要同时满足这些条件。

JSON断言

 返回的结果是JSON格式的数据,可以使用'JSON断言'进行校验。比如这个连接https://www.atstudy.com/api/consume/Lecturer/10021

  1. 右键单击取样器,添加'JSON断言'

  2. 在'Assert JSON Path exists'栏中填写JSON path路径,比如'$.nickName',勾选'Additionally assert value'选项,在'Expected Value'栏中填写期望值

  3. 执行请求,这时JMeter会检查在响应的JSON字符串的根节点下的nickName节点的值是否等于'肖老师',如果验证通过,则结果树中显示正常结果,不显示断言相关信息,如下图所示 

JsonPath语法

JSON断言之所以能够读取JSON字符串中的特定信息,是因为使用了一种叫做 JsonPath的语言。JsonPath将JSON字符串当成一棵树,通过一些语法规则遍历树中的节点,常用的语法规则如下:

JsonPath描述
$表示根节点
@当前节点
.表示层级关系
[]表示数据的下标
*表示所有节点
..表示所有符合条件的节点
?()表示过滤操作
{
    "id": 10021, 
    "nickName": "肖老师", 
    "avatar": "//cdn.atstudy.com/user/769b40a50d544d0988ba9f11a842c9a3.JPG", 
    "title": "测试讲师", 
    "introduction": "<p><span style=\"font-size:14px\">拥有13年软件测试从业经验,及软件测试培训经验,对大型软件系统有深厚的测试实践及管理经验。熟悉各种测试工具和测试理论,对性能测试和配置管理有深刻的认识。</span></p>
", 
    "projectExpr": null, 
    "trainingExpr": null, 
    "courses": [
        {
            "id": 1000009, 
            "courseSetId": 4, 
            "title": "性能测试与LoadRunner基础培训", 
            "icon": "//cdn.atstudy.com/course/16000754590278060.png", 
            "mode": 1, 
            "chargeMode": 2, 
            "price": "1580.00", 
            "sales": 1510, 
            "promotionPrice": null, 
            "tags": [ ], 
            "liveStartTime": 0, 
            "isLive": false
        }, 
        {
            "id": 1000010, 
            "courseSetId": 4, 
            "title": "性能测试与LoadRunner基础培训", 
            "icon": "//cdn.atstudy.com/course/16000754590278060.png", 
            "mode": 1, 
            "chargeMode": 1, 
            "price": "0.00", 
            "sales": 1510, 
            "promotionPrice": null, 
            "tags": [ ], 
            "liveStartTime": 0, 
            "isLive": false
        }
    ]
}
JsonPath表达式含义结果
$.title获取根节点下title节点的值[
"测试讲师"
]
$.courses[1]获取根节点下courses节点的列表中第二项内容[
{
"id": 1000010,
"courseSetId": 4,
"title": "性能测试与LoadRunner基础培训",
"icon": "//cdn.atstudy.com/course/16000754590278060.png",
"mode": 1,
"chargeMode": 1,
"price": "0.00",
"sales": 1510,
"promotionPrice": null,
"tags": [],
"liveStartTime": 0,
"isLive": false
}
]
$.courses.*获取根节点下courses节点的所有内容[
{
"id": 1000009,
"courseSetId": 4,
"title": "性能测试与LoadRunner基础培训",
"icon": "//cdn.atstudy.com/course/16000754590278060.png",
"mode": 1,
"chargeMode": 2,
"price": "1580.00",
"sales": 1510,
"promotionPrice": null,
"tags": [],
"liveStartTime": 0,
"isLive": false
},
{
"id": 1000010,
"courseSetId": 4,
"title": "性能测试与LoadRunner基础培训",
"icon": "//cdn.atstudy.com/course/16000754590278060.png",
"mode": 1,
"chargeMode": 1,
"price": "0.00",
"sales": 1510,
"promotionPrice": null,
"tags": [],
"liveStartTime": 0,
"isLive": false
}
]
$.courses..id获取根节点下courses节点下所有id的值[
1000009,
1000010
]
$..id获取根节点下所有id的值[
10021,
1000009,
1000010
]
$.courses[?(@.price>500)]获取获取根节点下courses节点的列表中,满足price大于500的项的内容[
{
"id": 1000009,
"courseSetId": 4,
"title": "性能测试与LoadRunner基础培训",
"icon": "//cdn.atstudy.com/course/16000754590278060.png",
"mode": 1,
"chargeMode": 2,
"price": "1580.00",
"sales": 1510,
"promotionPrice": null,
"tags": [],
"liveStartTime": 0,
"isLive": false
}
]

大小断言

判断响应内容的大小(字节为单位)

  1. 右键单击取样器,添加'大小断言'

  2. 选中大小断言,在右侧窗口中可以修改大小断言的名称,如下图所示:

  3. 在右侧窗口的'响应字段大小'中选择'完整响应',在'Size to Assert'中输入预期的字节大小,并选择对应的比较类型,如下图所示: 

  • 响应字段大小

    响应字段大小允许用户选择校验的目标,包括:

    • 完整响应:即所有响应内容
    • 响应头:响应头的内容
    • 响应的消息体:即响应体的内容
    • 响应代码:响应的状态码,如'200'
    • 响应信息:响应状态码的信息,如'OK'

 断言持续时间

判断规定时间内是否收到响应数据,如果超时即校验失败,实际响应时间可查看结果树中的loadtime

  1. 右键单击取样器,添加'断言持续时间'

  2. 选中断言持续时间,在右侧窗口中可以修改断言持续时间的名称,如下图所示:

  3. 在右侧窗口的'断言持续时间'栏中输入持续时间(单位是毫秒),如下图所示:

 

 

 

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值