1.接口测试的概念
1.1什么是接口测试
- 接口测试就是通过测试不同输入条件下,接口返回的结果是否与预期结果一致,即测试后端的代码是否符合逻辑
- 接口测试是没有页面操作的,只能通过调用接口来进行测试,只需要给接口传递相应的输入条件,再检查接口输出的结果是否符合预期即可。接口测试比功能测试还要更简单一些(因为功能测试还包含了程序的UI层,包含了按钮,UI交互等功能)。
前后端
-
前端:通常为Web前端和app前端,前端的作用是为了展示数据内容,做简单的数据校验,比如我们看到的淘宝商城,那些商品信息,图片展示等等
-
后端:进行复杂计算的业务逻辑,功能实现,例如我们购买商品后的价格计算,优惠活动的使用,最终的支付,都是通过后端实现的。
而前后端就是通过接口来进行交互的。
接口调用图示
1.2目的
比如,在传统的功能测试中,如果前端工程师还没有将前端工作做完,测试是无法展开测试工作的,另一方面,既然前端有校验功能,那后端就有可能会遗漏该功能的数据校验
- 为了提高程序的安全性和效率
- 尽早的测试介入,越早介入测试,发现的问题解决起来的成本是最低的。很多时候开发没有将完整产品提交给测试时,测试时无法工作的,就会有大部分时间处于等待状态,而接口测试可以在没有前端界面下进行测试
- 后端的功能校验在前端很难进行测试,因为前端已经有初步校验控制,所以接口测试可以发现很多在前端无法发现的问题
- 快速定位bug,提升测试效率,降低人工回归测试的人力成本与时间成本,缩短测试周期
1.3接口测试的实现流程
模拟用户向服务器发送数据,然后查看响应结果
- 定位服务器资源URL实现:https://www.baidu.com http://127.0.0.1:8080
- 模拟用户提交数据
- 查看响应结果是否符合预期的要求
1.4 接口测试的流程
- 获取需求文档和接口文档
- 通过对需求文档分析出接口的业务逻辑要求以及业务边界
- 通过对接口文档分析出接口的技术指标(接口地址、请求方式、入参、出参)
- 接口测试用例设计(着重于接口测试数据准备)
- 使用接口测试工具进行接口测试
- 接口缺陷管理与跟踪
- 接口自动化持续集成
1.5 接口测试的分类
- web 接口测试:BS架构
- 服务器接口测试:自己写的程序测试,一个系统内部的币不同模块进行测试
- 第三方接口测试:测试别的人实现的接口,不同系统甚至不同公司之间的接口调用
- 模块接口测试:CS架构
1.6常见接口类型
- HTTP 接口:通过HTTP协议来进行数据传输的接口
- WebService 接口:通过soap协议进行数据传输的接口
- 硬件接口:USB 、充电接口(此处不做讨论)
2.接口测试与其他测试的比较
2.1接口测试与界面测试的比较
接口测试是功能测试
- 接口测试的介入时间更早,越早介入价值越高
- 接口测试的稳定性更高,变动少。接口测试通过,前端即时出现问题,解决起来也会非常快
- 接口测试发现缺陷后,解决的成本更低。越底层的缺陷,影响的面就越广,一个底层缺陷可能引起N个表面的缺陷,那时候解决起来就会非常麻烦,而且还不一定能找到源头缺陷
- 接口 测试定位问题更加准确和快速。当我们接口测试通过后,在功能测试中出现问题,我们就可以更快速和准确的定位问题,因为已经排除掉接口层的干扰了。
2.2接口测试与自动化测试的比较
- 自动化测试如:web自动化测试,app自动化测试都是模拟人的行为进行测试,底层都是通过接口和服务器进行交互
- 接口测试可以在底层模拟人的行为进行测试
2.3接口测试与性能测试的比较
- 自动化测试的模拟行为,测试效率低
- 接口测试可以直接和服务器进行快速交互,对性能和压力进行测试
3.接口测试的应用场景
-
测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接安排开发在本地环境执行测试,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。(开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。)
-
回归测试:在开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的工作中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。
4.接口的测试用例设计
5.接口测试质量评估标准
- 业务功能覆盖是否完整
- 业务规则覆盖是否完整
- 参数验证是否达到要求(边界、业务规则)
- 接口异常场景覆盖是否完整
- 接口覆盖率是否达到要求
- 代码覆盖率是否达到要求
- 性能指标是否满足要求
- 安全指标是否满足要求