一、为什么要做接口测试?
一)、接口测试的作用
1、接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互。
2、测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
二)、接口测试的意义
1、按照分层测试模型,处于中间层的接口测试,在稳定性,效率,成本,技术,实施难度上综合来讲,是收益最大的。
2、相较于传统的UI层次的测试,接口测试把测试在时间上、架构上提前了,并且能够覆盖到一些UI测试无法触及的功能点,提高了测试的覆盖率,对质量控制提升了信心。
3、接口测试也更容易实现自动化持续集成,支持后端快速发版需求,利于CT(持续测试)的开展。
三)、为什么做接口测试?
1.越底层发现bug,它的修复成本是越低的。
2.很多系统前后端架构是分离
2.1 前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
2.2 检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
2.3 只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
2.4 前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息。
3、接口持续集成是为什么能低成本高收益的根源
接口测试相对容易实现自动化持续集成,且相对 UI 自动化也比较稳定,可以减少人工 回归测试 人力成本与时间,缩短测试周期,支持后端快速发版需求。
二、接口测试工作流程
一)、测试流程
1、分析接口文档和需求文档(接口说明、请求方式、请求URL、请求参数、返回数据、返回实例)
2、接口用例设计
3、编写接口测试用例
4、接口测试执行
5、输出接口测试报告
二)、如何快速评估自己的测试用例覆盖率:
1、参数验证是否完整(包括各种边界和业务规则)
2、业务需求点覆盖是否完整(单接口业务功,依赖接口业务功能)
3、接口异常场景覆盖是否完整(数据的异常)
三)、接口测试用途
1、回归测试
2、非功能性测试
四)、API测试用例设计
|------------------------------|----------------------------------|
| 测试点 | 测试内容举例 |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参等于空字符串/null |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参类型(字符串、数值、布尔、数组、对象) |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参长度(字符串最小/最大长度) |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参值域(数值最小/最大值) |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参是否在枚举值范围内 |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参存在默认值 |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参等于0/负数 |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参组合(参数之间是否存在关联) |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参符合一定规则(比如账号只能由字母、下划线组成) |
| 入参校验---传递不同的入参,检查返回值是否正确【必选】 | 入参包含特殊字符 |
| 业务逻辑校验---根据业务场景去设计【必选】 | 查询不存在的数据,应该返回空结果 |
| 业务逻辑校验---根据业务场景去设计【必选】 | 数据状态不符合预期,不允许修改或删除 |
| 返回值校验【必选】 | 返回状态码校验 |
| 返回值校验【必选】 | 新增类接口建议校验新生成的数据标识不为空 |
| 返回值校验【必选】 | 更新或删除类接口建议校验返回消息中 success 为 true |
| 返回值校验【必选】 | 列表查询类接口建议校验返回的查询记录数是否正确,排序规则是否正确 |
| 返回值校验【必选】 | 数据详情类接口建议校验核心字段数据准确性 |
| 幂等---检查幂等逻辑正确性【可选】 | 是否需要支持幂等(读接口一般不需要) |
| 幂等---检查幂等逻辑正确性【可选】 | 前端重复提交 |
| 幂等---检查幂等逻辑正确性【可选】 | 接口超时重试 |
| 幂等---检查幂等逻辑正确性【可选】 | 消息重复消费 |
| 稳定性---检查可用性策略和性能指标合理性【可选】 | 可用性(限流、熔断、降级) |
| 稳定性---检查可用性策略和性能指标合理性【可选】 | 性能(qps、rt、fail、机器资源、中间件资源、存储资源) |
| 兼容性---检查变更接口兼容性【可选】 | 入参兼容性(入参字段只能新增,不允许修改删除) |
| 兼容性---检查变更接口兼容性【可选】 | 返回值兼容性(返回值字段只能按顺序新增) |
| 兼容性---检查变更接口兼容性【可选】 | 功能兼容性(兼容老功能) |
| 兼容性---检查变更接口兼容性【可选】 | 数据兼容性(兼容老数据) |
| 透明性【可选】 | 接口对调用方透明 |
| 可维护性【可选】 | 检查日志和变更记录 |
| 可维护性【可选】 | 异常日志 |
| 可维护性【可选】 | 接口变更记录 |
| 监控告警【可选】 | 检查监控告警配置 |
| 监控告警【可选】 | 性能监控(qps、rt) |
| 监控告警【可选】 | 业务监控(错误码、业务指标) |