Terraform自动化测试:端到端测试及其他方法解析
在完成单元测试和集成测试后,接下来可以考虑添加端到端测试。以Ruby Web服务器为例,端到端测试可能包括部署Web服务器及其依赖的数据存储,并使用Selenium等工具从Web浏览器进行测试。对于Terraform基础设施,端到端测试也类似,需要将所有组件部署到模拟生产环境中,并从最终用户的角度进行测试。
端到端测试的挑战
虽然可以采用与集成测试相同的策略编写端到端测试,即创建几十个测试阶段来运行 terraform apply 、进行验证,然后运行 terraform destroy ,但在实践中很少这样做,主要原因与测试金字塔有关。
测试金字塔理论指出,通常应追求大量的单元测试(金字塔底部)、较少的集成测试(金字塔中部)和更少的端到端测试(金字塔顶部)。因为随着测试层级上升,编写测试的成本和复杂度、测试的脆弱性以及测试运行时间都会增加。
在测试金字塔的顶部,从头开始部署复杂架构的测试变得不可行,主要有以下两个原因:
1. 速度过慢 :从头部署整个架构再拆除可能需要数小时。这样的测试套件反馈循环太慢,价值有限。开发者可能只能在夜间运行此类测试,第二天早上得到失败报告,调查、修复后还需等待一天才能知道是否有效,每天大约只能尝试修复一次错误。在这种情况下,开发者可能会互相指责、说服管理层忽略测试失败进行部署,最终完全无视测试失败。
2. 脆弱性高 :基础设施部署过程中存在很多不稳定因素,部署的基础设施越多,遇到间歇性问题的概率就越高。例如,单个资源(如
超级会员免费看
订阅专栏 解锁全文
1021

被折叠的 条评论
为什么被折叠?



