0


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. 在右侧窗口的'断言持续时间'栏中输入持续时间(单位是毫秒),如下图所示:

标签: 压力测试

本文转载自: https://blog.csdn.net/weixin_44007111/article/details/125436938
版权归原作者 小杜℃ 所有, 如有侵权,请联系我们删除。

“Jmeter之断言”的评论:

还没有评论