接口自动化测试实践指导(下):接口自动化测试断言设置思路
在前篇文章:
接口自动化测试实践指导(中):接口测试场景有哪些
中详细给小伙伴们讲解了一下接口自动化需要做哪些准备工作及接口测试场景有哪些。
本篇文章是最后一篇,主要分享一下接口自动化测试断言设置思路。
如果没有好的断言,自动化用例效果将大大打折扣,甚至是无用的,前期的很多工作都因此浪费。
这里我继续结合自身经验,帮助大家梳理一下,希望有所帮助和提升。
1 断言设置思路
这里总结了我在项目中常用的 5 种断言方式,基本可能满足 90% 以上的断言场景,具体参见如下脑图:
下面分别解释一下图中的五种思路:
1) 响应码
对于 http 类接口,有时开发人员只是通过设置接口响应码来反应接口是否成功,这时我们的断言就需要检查接口响应码是否符合预期来判断用例是否执行成功。
2) 验证关键字段值
一般接口中会设有专门的字段来反馈接口成功与否的信息。
比如:msg字段
,经常好多接口通过该字段反应后台的处理情况,如果成功会返回成功信息,失败会返回失败原因。
这样我们测试时可以直接校验该字段值来判断用例是否执行成功。
3) 正则匹配
当一个接口返回内容比较多时,但有一定规则可寻,我们可以借助正则表达式来校验检查。
4) 数据库匹配核对
要对一个查询类接口的返回数据进行验证,我们可以采用编写 SQL,到数据库查询结果。
然后将数据库结果与接口返回结果进行核对检查,这样就能比较准确的验证接口返回数据的正确性。
5) 相关接口辅助验证
举个例子,比如测试一个删除接口,删除了一条记录后,如何验证接口真的把记录删除成功了?
可以再调用查询接口,检查被删除的记录是否真的查询不到了,那就说明删除真的成功了。
2 断言设置实战演示
基于上面的断言思路,接下来,我通过实际例子给大家做一下展示,这里通过两种平台工具来展示:
一种是开源好用的Jmeter
;
另一种是之前给大家推荐的eolink
平台,eolink
平台因为支持自定义脚本,且平台提供了很多内置函数,也可以像Jmeter
一样灵活实现上述 5 种断言思路。
下图展示一下eolink
平台的自定义脚本功能:
更多内置函数可以参考:
https://help.eolink.com/#/tutorial/?groupID=c-806&productID=23
2.1 响应码断言展示
如果一个接口需要通过接口请求的响应码来断言,判断是否达到预期结果,Jmeter
工具的实现如下:
说明:
该用例会返回 400 的错误码,断言设置校验响应码是否为 400,如果等于400 表示用例执行成功,否则失败。
再展示一下用eolink
的实现效果:
2.2 验证关键字段值
如果一个接口需要通过响应结果中出现某个关键词来判断是否达到预期结果,可以采用验证关键字段值的断言方式,用Jmeter
工具实现如下:
说明:
该用例通过检查接口返回字段 msg的值 是否为“您没有登录,请重新登录”来判断用例是否执行成功。
再展示一下用eolink
的实现效果:
2.3 正则匹配
如果一个接口返回的响应结果是不断变化的,但结果符合某个预期的规则,这时可以采用正则匹配的方式来断言,用Jmeter
工具实现如下:
说明:
通过正则匹配,除了验证某个符合预期规则的字段值,可以用于匹配检查接口返回样式,匹配成功了,说明用例执行通过。
再展示一下用eolink
的实现效果:
2.4 数据库匹配核对
针对一个查询类接口,如果想详细验证返回结果的各个字段,可以采用数据库匹配核对方式来断言,用Jmeter
工具实现如下:
说明:
对于一个查询类用例,通过查询数据库,然后将接口返回结果与数据库返回结果进行对比,对比成功说明用例执行通过。
再展示一下用eolink
的实现效果:
执行结果:
2.5 相关接口辅助验证
很多接口的验证需要依赖其他相关接口来判断,实现起来会稍微复杂些,但断言效果非常好,先用Jmeter
工具给大家展示一下:
说明:
对于部署接口是否成功的验证,我这边通过查看部署日志接口来辅助验证。
当部署日志接口中获取到部署成功日志打印后,就说明用例执行通过。
再展示一下用eolink
的实现效果:
1)有两种方式,一种步骤中添加相关接口,提取相应内容,后续做判断。
2)再一种就通过 JS 脚本来维护多个接口,并处理接口的响应结果,添加断言来实现。
eolink
平台有着非常丰富易用的功能,帮助项目团队更好的对 API 接口进行管理和测试。
最后,再补充介绍一下该平台对于 API 接口测试方面的某系高级功能:
1)与 API 文档关联与自动同步
在测试用例中,绑定 API 文档之后,当 API 发生变化时,您可以一键将文档内容同步到测试步骤中,减轻维护用例的成本。
想了解更多,可以参见:
https://help.eolink.com/#/tutorial/?groupID=c-752&productID=23
2)0代码,拖拉拽完成测试流程编排
平台支持拖拉方式进行复杂多接口链路的场景编排,减轻脚本维护工作量。
更多可参见:
https://help.eolink.com/#/tutorial/?groupID=c-751&productID=23
3)对数据库进行操作
平台也支持在自动化用例中添加对数据库的操作,常用于以下场景:
1. 测试前对数据库插入测试数据。
2. 清除脏数据。
3. 查询 API 操作是否对数据库生效。
…更多可参见:
https://help.eolink.com/#/tutorial/?groupID=c-748&productID=23
4)定时自动测试
该平台也支持自动化用例定时执行,减少人为的干预,进一步降低执行成本。
想了解更多,可以参见:
https://help.eolink.com/#/tutorial/?groupID=c-787&productID=23
综合来看,eolink
平台功能十分强大,除了能像Jmeter
一样灵活实现各类接口场景的自动化测试,还有丰富的 API 管理、API 监控、API 市场功能。
帮助整个研发团队高效实现 API 全流程的管控,可以说是非常强大易用的一款 API 管理测试平台。
至此,接口自动化测试实践指导三篇文章全部完结,希望测试小伙伴们看后能有所收获,后续要多多实践,才能很好提升自动化测试能力。
体验地址:
https://www.eolink.com/?utm_source=w2703
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想【进阶自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
接口自动化测试实践指导(下):接口自动化测试断言设置思路相关推荐
- 接口自动化测试实践指导(中):接口测试场景有哪些
在第一篇文章 接口自动化测试实践指导(上):接口自动化需要做哪些准备工作中详细给小伙伴们讲解了一下接口自动化需要做哪些准备工作,准备工作中最后一步接口测试用例设计是非常重要的一个环节,用例设计的好不好 ...
- Lego-美团接口自动化测试实践
一.概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个&qu ...
- Lego-美团点评接口自动化测试实践
Lego-美团点评接口自动化测试实践 2018-02-07 转自:Lego-美团点评接口自动化测试实践 目录 一.概述 1.1 接口自动化概述 1.2 提高ROI 针对"减少 ...
- 实战丨基于接口的银行系统自动化测试实践
本文以接口自动化测试作为银行测试工作突破口,在分析主流工具与银行业实际需求之间差异的基础上,通过自研打造接口自动化测试平台,分享了平台建设及落地的实践经验. 自动化测试类型分析 自动化测试是提高测试效 ...
- 接口自动化测试平台Lego ------ 美团接口自动化测试超全实践【3000字长文】
一.概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个&qu ...
- 手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告
手把手教你搭建java接口自动化测试框架(四):断言.生成测试报告 上一集说到post和Get请求,请求后得到的响应(即接口返回值)是我们想要的吗 比如网站上get接口文档说明 : "dat ...
- 阿里java接口自动化实践pdf_接口自动化测试设计
1.接口测试基础 1.1.什么是接口测试? 接口测试是测试系统组件间接口的一种测试. 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 接口测试的重点是要检查数据的交换,传递和控 ...
- 接口自动化测试工具- 基础篇:postman 断言
1.断言的作用 2. Postman中 添加断言 点击请求里面的Test,可以写JavaScript脚本,但是不需要自己写,右侧postman已经帮忙写好了脚本. 3. Postman中 添加断言的思 ...
- ApiPost自动化测试基础之:接口参数依赖的情景处理
在<ApiPost环境变量之第1课>里,我们介绍了什么是ApiPost环境变量,并如何定义.使用它. 环境变量.接口参数依赖的处理是ApiPost自动化测试的基础.本文主要讲解接口参数依赖 ...
最新文章
- Ruby DSL介绍及其在测试数据构造中的使用(2)
- 70个python毕设项目_10 个最值得 Python 新人练手的有趣项目
- python 命令-python 处理命令行参数
- android studio module不识别 红色j,androidstudio 不显示 Module-- 新年第一波
- VTK:多块数据集用法实战
- 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别
- OpenGL:显示一些立体图形示例程序(真不错)
- edge浏览器怎么设置activex_微软在新Edge浏览器中拒绝了ActiveX插件技术
- JAVA时间格式处理工具类
- http_load压力测试步骤
- 搜狗-国内首个双核浏览器
- 复选框点击后弹出输入框
- Visual C++网络编程经典案例详解 第5章 网页浏览器 CHtmlView类 实现查看源文件功能步骤
- Android集成腾讯云通信IM
- oppo手机工程模式清除数据需要密码_普通人也可以做码农?黑客教你如何在手机上开发运用代码...
- 一些个人电脑问题记录
- JAVA计算机毕业设计喜枫日料店自助点餐系统(附源码、数据库)
- 使用wordpress搭建个人网站保姆级教程
- 房屋租赁系统的C++实现
- HTML——微信H5分享