测试分层
软件开发的生命周期一般为:用户需求-设计-软件需求(需求评审)-软件设计(设计评审)-编码-测试-上线-运维或废弃下线。基于软件开发的流程,开发人员进行单元测试,测试人员负责服务端测试+客户端测试。
服务端测试
服务端测试主要进行接口测试。接口测试检查数据的交换、传递和控制管理过程。它绕过了客户端,直接对服务端进行测试。
客户端测试
UI 测试,兼容性测试等
服务端测试分类
客户端/服务器架构下的服务端测试
单一功能的系统,数据交互的模式:客户端-服务器-数据库,服务端测试主要是基于服务器提供的接口进行业务逻辑,数据交互等的验证
微服务的架构下的服务端测试
基于敏捷的开发模式,把一个大而复杂的业务场景拆分成很多的一系列小型独立的微服务,每个服务都可以独立的部署、运行和维护。每个服务都有自己的数据库、业务逻辑和接口。规范化的微服务可以保证服务的可测性,服务端测试价值可以被放大。基于这类测试对象,测试的内容包括:
- 从外部接口去进行接口协议的测试,接口的入参和出参,功能的逻辑验证等;
- 内部交互进行故障演练;
- 服务实例角度,如实例的扩容,升级测试,回滚测试;
- 启动配置项的测试;
- 高并发高性能,验证服务的高可用,稳定性等;
当然还有一些类型的服务不能进行服务端测试,比如:
- 没有对外接口;
- 环境问题,接口不能被接入第三方服务;
- 功能设置,比如定时的业务处理或者只和数据库打交道进行数据的增删改等;
服务端测试的价值
1.践行测试左移,能够更早介入测试,更早的发现问题
2.测试维度的颗粒度更细,能发现更多的问题,场景覆盖相对于功能测试更齐全
3.测试效率更高,能够通过编程能力挖掘业务造数据痛点并解决,实现自动化测试减少执行耗时
4.服务端测试远比功能测试更理解底层服务的实现,如果遇到问题,能够更快速更精准的发现问题