前言
现在公司里的项目都准备重构成微服务架构,微服务处理的单元粒度更细,每个服务可以独立开发,更有利于业务的扩展。从测试角度来看,制定好服务端相关测试策略,能够更早介入测试,更早的发现问题。这里总结下我落地的服务端测试策略。
测试策略模型的选择
- 面向微服务测试,需要测试分层,每一层的测试颗粒度有所不同。选取测试策略模型一定要基于现实情况的痛点出发,结果导向,通过调整测试策略来解决痛点。
- 模型演进过程是金字塔->近似钻石(除非功能测试外,类似于钻石模型)->蜂巢。
服务端的元素及测试策略
后端服务有以下几个测试元素以及对应的测试策略。
一、对外接口
- 场景模拟方式:接口
- 测试策略:接口层可分为输入(Input)、业务处理(handle)、输出(Output)3个维度。
-
输入(Input):
1)必填项校验。 2)数据类型校验。 3)时间戳 4)输入参数是否满足调用方。 5)接口定义的调用方法是否方便。 6)身份秘钥及敏感信息校验。
-
业务处理(handle):
1)约束条件(数值限制、状态限制、关系限制、权限限制、时间限制)。 2)数据类型校验(int、string、bool、列表字典)。 3)时间戳(负数、足够大、足够小) 4)输入参数是否满足调用方。 5)接口定义的调用方法是否方便。 6)身份秘钥及敏感信息校验。
-
输出(Output):
1)不安全的路径输出。 2)敏感信息加密。(身份证、密码、银行卡等不能直接明文返回) 3)文档对齐(正常的输出参数、是否有额外参数未体现、值正确性) 4)输出参数是否满足调用方。
二、三方与内部交互接口
-
场景模拟方式:模拟三方服务的处理
-
测试策略:被测服务与三方服务交互异常的情况。
1.被测服务请求依赖服务的协议正确性。 2.依赖服务返回超时。 3.返回处理异常情况(包括状态码、返回体) 4.依赖服务宕机(网络问题、运维问题) 5.依赖服务的数据处理情况(空数据、单数据、多条数据)
三、数据存储
-
场景模拟方式:接口、db
-
测试策略:
1.正常的数据读写功能(增删查改) 2.数据一致性校验。 3.缓存机制的校验。 4.服务器资源利用率
四、服务端稳定性、高可用
- 场景模拟方式:接口性能测试
- 测试策略:
- 稳定性测试策略:长时间的性能测试,观察cpu使用率、内存使用率是否有递增,事务失败率是否异常,tps是否有波动。
- 高可用测试策略:服务需要保证所有异常场景都被处理,所以测试用例的测试颗粒度需要尽可能的细,比方说所有入参校验、服务交互异常、压力测试观察服务状态、服务升级回滚机制等场景。
五、服务端安全性场景
-
场景模拟方式:接口、db
-
测试策略:
1.请求协议在不加密的情况下是否能请求成功 2.返回协议是否有加密处理 3.加密的方式是否严谨,容不容易被他人解开 4.加密后的数据服务端侧是否能够正常解析 5.加密后的消息体是否具备时效性
六、环境监控,日志采集
- 服务监控手段:环境实例监控、日志采集
- 测试策略:
- 环境监控:观察服务的性能指标、实例状态。
- 日志:采集埋点数据和服务运行日志,如线上出现问题以便于快速定位并解决。
七、服务端启动配置项
- 场景模拟方式:启动配置项修改
- 测试策略:
- 配置是静态更新:通过去配置中心修改配置重启服务,验证配置映射到业务逻辑的正确性。
- 配置是动态更新(热更新):通过去配置中心修改配置,直接验证配置映射到业务逻辑的正确性。
八、实例管理
- 测试策略:
- 故障演练。应用存在多个实例,其中一个实例异常时,是否会影响其他实例的正常运行。
- 数据升级测试。由测试进行数据升级测试,新版本有对应的表结构,测试需要关注升级的数据是否向上兼容,根据上线步骤会不会影响的历史版本数据的处理。
- 服务回滚测试。需要模拟服务上线后,校验对应的回滚策略,通常只需要评估回滚策略是否平滑,会不会影响到之前的用户数据
评论区