JMeter中有个元件叫做断言(Assertion),它的作用和LoadRunner中的检查点类似。用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。
若接口的返回的Response Body
为JSON格式数据,使用JSON断言组件来判断测试结果是较好的选择,判定也更灵活一些。
添加JSON断言组件操作:选中“取样器”右键 —> 添加 —> 断言 —> JSON断言
。
界面如下图所示:
JSON断言组件的详细说明:
Assert JSON Path exists
:填写 JSONPath 表达式。Additionally assert value
:断言值,也就是否额外验证根据JSONPath表达式提取的值。Match as regular expression
:预期值是否可以使用正则表达式。Expected Value
:填写预期值。Expect null
:预期值为NULL。Additionally assert value
选项,否则验证的是JSONPath表达式能否找到路径。Invert assertion (will fail if above conditions met)
:若勾选,表示对断言结果取反。注意:预期值除了NULL外,还有一种特殊的值,就是空数组。这时预期值不能不填,需要设置为
[]
,表示空数组。
我们以一个登陆接口,来演示JSON断言组件的应用。
添加元件操作步骤:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。选中“取样器”右键 —> 添加 —> 断言 —> JSON断言
。选中“取样器”右键 —> 添加 —> 监听器 —> 断言结果
。选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
标准的Post请求,填写请求的基本信息和参数即可。
编写内容如下:
Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834
我们需要根据JSON Path,从返回的JSON数据中提取需要判断的实际结果。再设置预期结果,两者进行比较得出断言结果。
Additionally assert value
选项。Expected Value
填写预期值。以上是通用步骤,编写好的JSON断言如下图所示:
说明JSON断言的模式:
JSON断言可以对服务器返回的JSON文档进行验证,JSON断言有两种使用模式:
- 根据JSONPath表达式,能否在JSON文档中找到路径。也就是只关注路径存不存在,不管值找的对不对。
- 根据JSONPath表达式提取值,并对值进行验证。
JSON断言的判断方式:
我们在察看结果树组件中,观察脚本运行之后的结果。
如果断言正确,和正常发送请求一样,如下图:
如果断言失败,则会出现断言失败的提示,如下图所示:
也添加断言结果监听器,通过断言结果组件来判断断言是否通过。
如下图所示:
说明:
JSON(JavaScript Object Notation
)是一种轻量级的数据交换格式。
JSON数据容易理解,便于阅读和编写,同时计算机也易于解析和生成,所以JSON有广泛的应用。
JSON常用数据结构:
对象(object)格式:
{
"name": "zhangsan",
"sex": 1,
"age": 25
}
数组(Array)格式:
{
"man": [
{
"name": "zhangsan",
"sex": 1,
"age": 21
},
{
"name": "lisi",
"sex": 1,
"age": 18
}
],
"weman": [
{
"name": "wangwu",
"sex": 0,
"age": 25
},
{
"name": "zhaoliu",
"sex": 0,
"age": 28
}
]
}
我们经常使用XPath来分析、转换以及有选择地从XML文档中提取数据。
与XPath类似,JOSNPath可以方便的从JSON结构中发现和提取数据。
JSONPath中的“根成员对象”总是被称为$
,无论它是对象还是数组。
JSONPath表达式有dot–notation
(.
号)和bracket–notation
([]
号)两种不同的表示风格。
例如:
$.store.book[0].title
$['store']['book'][0]['title']
JSONPath语法如下表:
JSON数据如下:
{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
具体示例如下表:
Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834