在用JMeter做接口功能或自动化测试时,有时候需要验证Response Body是否符合Json Schema,以确认代码修改有没有影响到原有接口返回响应的参数结构。这时就需要用到外部插件“JSON Schema Assertion”,具体的使用方法如下:
Step 1
将“jmeter-json-schema-assertion-plugin”项目打包,获取“Custom_JsonSchemaAssertion_component.jar”包;
项目获取地址:https://github.com/kde-intro/jmeter-json-schema-assertion-plugin
Step 2
将jar包放到JMeter安装目录的\lib\ext\下,重启JMeter;
Step 3
右键点击目标“HTTP Request”sampler,add->Assertion->JSON Schema Assertion,添加JSON Schema断言;
Step 4
获取预期的Response Body(json格式),通过下面网站生成json schema,保存到txt文本(注意:编码格式为UTF-8,否则jmeter会报错);
https://jsonschema.net/#/editor
Step 5
选中JSON Schema Assertion,在JSON Schema->File Name配置对应的json schema文件绝对路径;
Step 6
执行测试用例,可在Assertion Results中查看结果。
经验证,对于少参数、多参数、参数类型不匹配等场景均能看到对应的错误(没有截图是因为保存有道云笔记的图都打不开了:-|)。
之前在系统拆分测试中,出现过开发同学手抖粘代码粘错一小部分的情况,刚好那一小部分是接口返回参数中不太关注的,由于断言没有验证整个Response Body的参数格式,导致粘错的那一小部分成了漏网之鱼,于是对接的业务线无法解析接口响应,导致生产问题。于是有了用JMeter验证Response Body的json schema的尝试,以尽量避免类似的低级错误,更好保证交付质量。