接口测试
概念
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点。测试重点是要检查数据的交换、传递和控制管理过程,以及系统之间的相互依赖关系等。
通俗来说,所谓接口测试就是通过测试不同情况下的入参与之相对应的出参信息来判断接口是否符合或满足相应的功能性、安全性等要求。
测试方面
- 接口文档测试
- 接口功能测试
- 接口性能测试
- 接口异常测试
- 后端白盒测试
- 接口兼容性测试
- 前端交互测试
- 接口自动化测试
测试步骤
-
梳理上下游调用链
看项目wiki、产品文档和开发文档或代码,梳理接口间的依赖关系,画出流程图,方便定位问题。 -
编写接口测试用例(可省略)
-
测试接口文档并调试接口
接口文档管理工具:wiki或在线文档;Swagger、Yapi等
接口文档测试点:- 格式内容是否完备,包括URL、请求方法、Header、入参、返回值、示例Demo等
- 接口设计是否符合规范,包括接口名、接口格式、字段命名、字段类型、响应状态码、接口容错、字段是否冗余、接口是否鉴权、是否有版本区分等。
接口测试步骤:- 将后端代码部署到测试环境上。
- 通过postman或swagger去对接口文档提到的接口进行测试。
-
前端接口测试&Mock数据(接口层面的测试)
工具:Charles
利用Charles来对前端发送的请求进行抓包
测试点:- 验证前端调用接口的传参是否正确;
- 验证后端的接口相应是否符合预期;
- 前端拿到数据之后,交互和UI展示是否正确。
当数据有多种状态,并且数据比较难以构造时,可以通过Mock数据去进行测试。
常见的Mock数据方式:- 用Fiddler或者Charles去篡改请求和相应。
- 如果是PHP或Python等动态语言,可以直接在后端代码里面更改条件。
- 数据库中修改数据。
- 用Mock工具去构造数据:EasyMock、TestableMock、Mockjs等。
-
后端接口测试&业务逻辑覆盖(看日志、看代码)
看日志是否有报错。
看代码:- 可借助git查看commit diff
- java覆盖率工具:jacoco
- 代码静态扫描:sonar,检测代码编写规范。
-
接口性能调优
工具:Arthas,排查响应慢的类或方法 -
接口异常机制
测试接口是否做了容错处理或降级处理:当依赖的上游接口出现问题时,当前接口能否正常处理。
工具:Chaosblade,注入异常 -
接口版本控制
如果接口不是很规范,或者改了一些通用的逻辑,这个时候就需要对老版本进行一次回归测试。
方法:- 直接拿新旧两个版本APP对比测试
- 使用diffy工具
-
接口自动化
接口自动化一般常用于进行线上巡检回归、提测冒烟测试等场景。
实现方式:- coding:Python+pytest+requests,方便定制化;
- postman+newman: 效率较高,但不方便定制化;
- 流量录制与回放:使用gor工具,低代码实现,但实现成本高。