接口测试是什么:
1)接口测试又称为API测试,是测试系统组件间接口的一种测试,属于灰盒测试范畴;
2)接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点;
3)测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试范围:
1)接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试
2)接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,
3)接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大
接口测试特点:
1)接口测试主要关注于服务器逻辑验证
2)而UI测试可以关注于页面逻辑展示及界面前端与服务器集成验证
接口测试分类:
1)按业务:分为单接口、多接口流程
2)按系统:分为内部接口、外部接口
接口测试流程:
1)从立项和需求开始跟进
2)获取系统架构(内联、外围)
3)获取接口文档
4)接口测试执行环境搭建
5)接口测试数据准备
6)接口测试mock服务搭建
7)接口测试脚本编写与调试(持续推进)
8)执行轮次
冒烟测试(主流程覆盖)
开发同时提交多个接口测试时,测试人员需要在第一时间对所提交的接口进行冒烟测试。冒烟测试的特点是时间短,见效快。不要求详细的准备数据,不要求细致的验证。但是要保证在尽量短的时间内跑完所有接口的主要功能。这样做的好处是可以保证一级bug尽早发现,尽早解决,尽早测试。为第二轮单元测试做好了充分的准备。避免了在第二轮测试中因为某个bug无法继续测试的情况。
单元测试(全量覆盖)
冒烟测试后,就进入了单元测试阶段。单元测试的工作是认真细致的测试单个接口,并回归冒烟测试时发现的bug。 单元测试做的工作会比较多。如准备数据,bug回归,补充测试用例等等。所以时间相对会较长。
集成测试(回归与全量)
在所有本次日常接口的测试脚本跑通后,就进入了集成测试阶段。集成测试主要分为测试-回归两个阶段。测试阶段中,测试人员会跑完该项目的所有接口。特别要着重测试那些可能会被本次日常的接口所影响的接口。在此过程中可能会出现一些bug。需要开发人员及时修复。在项目所有的接口测试完成后。需要回归所有在集成测试过程中出现的bug。之后需要重新跑完所有的接口。确保之前修复的bug没有对其他接口有影响。这样反复,直到所有接口都跑通。
案例覆盖原则是什么?
1)符合格式要求但非有效性数据的发送
2)空串、特殊字符串、随机字符串发送
3)使用其它接口测试的合法报文测试
4)数据库中存量数据发送
5)业务功能划分,分为正常场景和异常场景,异常场景主要包括:打乱正常接口调用顺序、跳过验证进行交易
6)参数组合,分支覆盖(字段值因果关系组合),如多级关联性,省、市,如账户类型与账户额度之间限制关系
7)边界值
8)异常情况
9)性能测试
10) 安全测试
敏感信息传输检查、敏感信息日志打印检查、sql注入等
如何循序渐进开展
开展接口测试原因
接口测试与app及web等前端测试关系
价值与收益
1)快速冒烟测试与回归测试,检测整个业务逻辑链路的连通性,有效支撑敏捷模式
2)接口响应时间等指标统计,从单用户单接口角度了解接口性能
3)快速批量造数据(准备业务前置条件数据、准备性能测试业务铺底数据)
4)弥补单纯靠传统客户端功能测试发现所有缺陷模式的不足(各种异常报文构建、异常场景模拟、敏感信息在传输和日志打印过程中合规检查)
5)通过搭建外部系统mock服务,减少或摆脱当前系统对外部关联系统依赖(关联系统越多,系统出现流程性阻碍问题概率越大)
6)通过搭建内部系统mock服务,解决前端和后端的开发速度不匹配带来的联调测试滞后问题
7)接口测试能弥补单纯功能测试不足,比如数据合规性和敏感性检测、安全性检测、接口业务逻辑组合漏洞等(比如银行卡四要素是否加密、合法性检测是否可以绕过、非正常业务接口组合等)
8)线上巡检(周期性使用隔离账号对线上环境进行连通性测试、接口响应时间统计等)
9)接口测试在传统的功能测试基础上将工作往前移,既可以被业务人员在功能开展前使用(可以提前发现服务端问题),也可以被开发人员在代码提交前使用(可以规范和约束开发人员提交的代码质量,避免低质量的版本发布导致的无效测试成本)
10)接口自动化测试得为接口负载压力测试铺垫很多基础工作,降低性能测试准备时间,缩短性能测试执行周期
11)接口相比UI变更频率低,自动化覆盖率高,自动化执行稳定性高,更易达到无人值守目标,可以节省更多的人力投入,从而达到节省测试投入的目的
12)敏捷模式逐渐铺开,UI自动化收效甚低,几乎走到了尽头,测试领导需要新的测试技术方案满足测试任务,并且提升其职业亮点和价值