异常自动化方法

异常测试方法 ##测试目的

  • Curve是网易云存储产品组推出的新一代分布式存储平台,致力于打造一个支持块、对象、文件等存储形态的统一平台。本次测试对象主要为支持块设备功能。

  • 生产环境中,故障是一种常态,测试环境中需要尽可能的模拟生产环境中的故障,以此来评估系统的可用性、一致性等。

测试方法

  • 异常测试的环境部署要求尽可能与真实环境一致,当前测试环境定义为6台chunkserver节点,1台mds节点(尚无failover),2台client节点,测试场景尽可能模拟用户使用的方式,读写io由云主机内部下发,管理接口直接采用openstack的接口。

  • 异常项主要通过人为注入的方式触发,有些异常为真实的异常,例如机器宕机、拔网线等;有些异常通过软件模拟的方式,如磁盘io卡顿、服务异常等;有些异常则是在代码侧注入,该部分异常测试主要在集成测试中,不在这里讨论。

  • 异常测试主要校验真实用户场景中,在异常触发情况下的系统行为,按影响面可以分为:用户无感知、影响管理面基本功能、引起性能衰减、引起io抖动、系统不可服务但可恢复、数据异常(ioerror、不一致、丢失)、系统无法恢复。

  • 借鉴混沌工程的理论,测试用例设计的时候也会尽量符合下面原则,当然我们目前只是在测试环境批跑,条件允许的情况下,可以在beta云环境批跑,直到稳定后,可以去A级环境批跑。

  • 建立稳定状态的假设;

  • 多样化现实世界事件;

  • 在生产环境运行实验;

  • 持续自动化运行实验;

  • 最小化“爆炸半径”。 ##测试用例

  • 一个最基本的异常测试用例格式如下:

  • 初始化集群 → 用户io注入 → 并发调用管理接口 → 触发异常 → sleep a random time → 异常恢复(恢复校验) → 数据校验(ioerror、读写一致性、三副本一致性、抖动) → 管理接口校验 → 资源回收校验