服务端测试策略

服务端测试策略

Administrator 16 2024-04-06

一、背景

  当前公司技术架构正处于向微服务化转型的关键阶段。相较于传统单体架构,微服务通过细粒度服务拆分实现了独立开发部署,有效提升业务扩展性。

  从测试角度来看,制定好服务端相关测试策略,能够更早介入测试,更早的发现问题。这里总结下我落地的服务端测试策略。

二、测试策略模型的选择

  • 面向微服务测试,需要测试分层,每一层的测试颗粒度有所不同。选取测试策略模型一定要基于现实情况的痛点出发,结果导向,通过调整测试策略来解决痛点。
  • 模型演进过程是金字塔 → 近似钻石(除非功能测试外,类似于钻石模型)→ 蜂巢。
    image.png

三、服务端的元素及测试策略

后端服务有以下几个测试元素以及对应的测试策略。

(1)对外接口

  • 场景模拟方式:接口
  • 测试策略:接口层可分为输入(Input)、业务处理(handle)、输出(Output)3个维度。
  1. 输入(Input):

1)必填项校验

2)数据类型校验

3)时间戳

4)输入参数是否满足调用方。

5)接口定义的调用方法是否方便。

6)身份秘钥及敏感信息校验。

  1. 业务处理(handle):

1)约束条件(数值限制、状态限制、关系限制、权限限制、时间限制)

2)数据类型校验(int、string、bool、列表字典)

3)时间戳(负数、足够大、足够小)

4)输入参数是否满足调用方。

5)接口定义的调用方法是否方便。

6)身份秘钥及敏感信息校验

  1. 输出(Output):

1)不安全的路径输出

2)敏感信息加密(身份证、密码、银行卡等不能直接明文返回)

3)文档对齐(正常的输出参数、是否有额外参数未体现、值正确性)

4)输出参数是否满足调用方

(2)三方与内部交互接口

  • 场景模拟方式:模拟三方服务的处理
  • 测试策略:被测服务与三方服务交互异常的情况。
  1. 被测服务请求依赖服务的协议正确性
  2. 依赖服务返回超时
  3. 返回处理异常情况(包括状态码、返回体)
  4. 依赖服务宕机(网络问题、运维问题)
  5. 依赖服务的数据处理情况(空数据、单数据、多条数据)

(3)数据存储

  • 场景模拟方式:接口、db
  • 测试策略:
  1. 正常的数据读写功能(增删查改)
  2. 数据一致性校验
  3. 缓存机制的校验
  4. 服务器资源利用率

(4)服务端稳定性、高可用

  • 场景模拟方式:接口性能测试
  • 测试策略:
  1. 稳定性测试策略:长时间的性能测试,观察cpu使用率、内存使用率是否有递增,事务失败率是否异常,tps是否有波动。
  2. 高可用测试策略:服务需要保证所有异常场景都被处理,所以测试用例的测试颗粒度需要尽可能的细,比方说所有入参校验、服务交互异常、压力测试观察服务状态、服务升级回滚机制等场景。

(5)服务端安全性场景

  • 场景模拟方式:接口、db
  • 测试策略:
  1. 请求协议在不加密的情况下是否能请求成功
  2. 返回协议是否有加密处理
  3. 加密的方式是否严谨,容不容易被他人解开
  4. 加密后的数据服务端侧是否能够正常解析
  5. 加密后的消息体是否具备时效性

(6)环境监控,日志采集

  • 服务监控手段:环境实例监控、日志采集
  • 测试策略:
  1. 环境监控:观察服务的性能指标、实例状态。
  2. 日志:采集埋点数据和服务运行日志,如线上出现问题以便于快速定位并解决

(7)服务端启动配置项

  • 场景模拟方式:启动配置项修改
  • 测试策略:
  1. 故障演练。应用存在多个实例,其中一个实例异常时,是否会影响其他实例的正常运行。
  2. 数据升级测试。由测试进行数据升级测试,新版本有对应的表结构,测试需要关注升级的数据是否向上兼容,根据上线步骤会不会影响的历史版本数据的处理。
  3. 服务回滚测试。需要模拟服务上线后,校验对应的回滚策略,通常只需要评估回滚策略是否平滑,会不会影响到之前的用户数据