基础设施测试:单元测试、契约测试与集成测试
1. 单元测试
单元测试有助于验证逻辑是否生成了正确的名称、创建了正确数量的基础设施资源,以及计算出了正确的 IP 范围或其他属性。部分单元测试可能与格式化和代码检查有所重叠,它们都有助于理解如何命名和组织配置。
单元测试的用例包括:
- 验证资源逻辑。
- 突出潜在问题。
- 识别团队标准。
需要为生成基础设施配置所使用的任何逻辑编写额外的单元测试,尤其是涉及循环或条件(if - else)语句的逻辑。单元测试还能捕获错误或有问题的配置,例如错误的操作系统。
虽然单元测试是孤立地检查配置,不能精确反映更改对系统的影响,无法防止生产变更期间的重大故障,但它可以在生产前预防有问题的配置。例如,有人可能意外输入了 1000 台服务器的配置,而不是 10 台,验证配置中服务器最大数量的测试可以避免基础设施过载并控制成本。
单元测试还能帮助自动化检查复杂系统。当有多个团队管理大量基础设施资源时,手动检查每个配置变得不现实,单元测试可以将关键或标准配置传达给其他团队。
对于自动化脚本的单元测试,若编写直接访问基础设施 API 的自定义自动化工具,应使用单元测试检查各个步骤及其幂等性。可以在单元测试中模拟 API 响应。
单元测试运行速度快,几乎零成本(编写完成后),通常只需几秒,因为它不会向基础设施发布更新或创建活动基础设施资源。若编写单元测试来检查试运行的输出,由于生成试运行需要时间,会增加一些测试时间。
2. 契约测试
单元测试是孤立地验证配置或模块,而契约测试则用于检查模块之间的依赖关系。