Terratest:开源的基础设施测试Go框架
极客时间编辑部
讲述:丁婵大小:1.28M时长:02:47
近日,Gruntwork 开源了他们的 Go 框架 Terratest。该框架可以用于编写测试基础设施的自动化测试,同时内置了对 Terraform 和 Packer 的支持。
Terratest 诞生的初衷是为了维护 Gruntwork 的基础设施即代码库,简称 IAC,这是一个基于 Terraform、Python、Go 和 bash 的工具库,用于管理 AWS 上的基础设施。IAC 供 Gruntwork 付费用户使用。
据介绍,使用 Terratest 编写测试会涉及 Go 内置的包测试机制。测试会创建真实的基础设施组件,如服务器,并在上面部署应用程序,然后使用 Terratest 工具验证预期行为。在测试结束时,Terratest 会取消应用部署,使用 Go 语言的 defer 机制清理资源,类似 JUnit 的 teardown 方法。
不过,Gruntwork 不建议开发者使用 Terratest 测试已有的基础设施部署,因为它可能对环境做不必要的修改。不过,有些团队的基础设施拓扑结构复杂,他们不希望为了执行测试而创建一个全新的设置,对他们而言,这条建议很难接受。
此外,Terratest 还具有以下特性:
提供了工具,可以执行类似检查 URL 的响应是否符合预期或者获取 Git 中当前分支的名称这样的任务。
面向 Consul、Vault 和 Nomad 的 Terraform 模块都有 Terratest 测试示例。
拥有针对 CI 系统的变通方案,这类系统需要短期运行的测试,对于需要长期运行的基础设施测试可能无效。
提供了像测试预期错误这样的典型测试抽象。
Gruntwork 的联合创始人叶夫根尼·布里克曼(Yevgeniy Brikman)还解释了使用 Go 编写 Terratest 的原因,他表示,Go 正成为 DevOps 世界的通用语言,同时,Gruntwork 在其他地方广泛地使用了 Go,因此,Go 就成了一个合理的选择。
在回应与 InSpec、ServerSpec 等其他工具的差异时,布里克曼表示,大多数规范工具都侧重于检查单个服务器或资源的属性,例如 httpd 是否已经安装并运行等。而 Terratest 在很大程度上是用于端到端的验收风格的测试,在真实的环境中(如 AWS)部署真实的基础设施,并测试该基础设施是否真的符合预期。

公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论