基础设施变更测试的最佳实践与策略
1. 测试面临的挑战与契机
系统设计可能是添加测试的最大障碍。不过,很多团队会在重建或重新搭建基础设施时引入自动化测试。例如,从传统服务器管理模式迁移到基础设施即代码模式,或是迁移到云平台时,都是引入自动化测试的好时机。如果项目是逐步交付的,测试也可以逐步添加。
2. 测试金字塔模型
2.1 测试金字塔结构
测试金字塔将测试范围广的测试放在顶部,范围窄的放在底部。
- 底层单元测试 :验证非常小的组件,如应用代码的类、Chef 食谱、Puppet 清单等。这些测试运行速度快,数量多,能提供快速、具体的反馈。
- 顶层测试 :测试系统的大部分,验证组件、系统和服务的集成是否正确。对于应用程序,通常与 UI 交互;对于基础设施,可能测试端到端的服务请求。这些测试运行时间长,比底层单元测试更复杂。
- 中间层测试 :验证某些组件、服务和请求的集成。例如,通过构建完整的 VM 来验证服务器配置过程。
2.2 测试金字塔结构示意
graph TD
A[顶层测试 - 大范围集成测试] --> B[中间层测试 - 部分组件集成测试]
B --> C[底层单元测试 - 小组件测试]
2.3 平衡测试套件的重要性
常见的反模式是冰淇淋锥或倒置金字塔,即顶层测试过多。这种测试套件难以维护、运行缓慢,且定