写点什么

Terratest:一个用于自动化基础设施测试的开源 Go 库

2018 年 5 月 16 日

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Gruntwork开源了他们的Go 框架 Terratest 。该框架可以用于编写测试基础设施的自动化测试。该库内置了对 Terraform Packer 的支持。

Terratest 是由 Gruntwork 公司内部开发的,其目的是为了维护他们的基础设施即代码(IAC)库,这是一个基于Terraform、Python、Go 和bash 的工具库,用于管理AWS 上的基础设施。 IAC 供 Gruntwork 付费用户使用

使用 Terratest 编写测试涉及 Go 内置的包测试机制。测试会创建真实的基础设施组件,如服务器,并在上面部署应用程序,然后使用 Terratest 工具验证预期行为。在测试结束时,Terratest 会取消应用部署,使用 Go 语言的 defer 机制清理资源,类似JUnit 的teardown 方法。

Terratest 可以测试已有的基础设施部署而不是每次从头开始创建吗?该工具的维基百科不建议这样做,因为它可能对环境做不必要的修改。不过,有些团队的基础设施拓扑结构复杂,他们不希望为了执行测试而创建一个全新的设置,对他们而言,这条建议很难接受。一个名为命名空间的特性可以使用唯一标识符隔离资源。注意,这里的命名空间并不是我们通常所理解的通过标签来隔离组件,而是保证资源有唯一标识符,测试时只使用那些由测试框架生成了标识符的资源。

Gruntwork 的联合创始人 Yevgeniy Brikman 解释了使用 Go 编写 Terratest 的原因:

Go 正成为 DevOps 世界的通用语言,因此,那似乎是个合理的选择。对于 DevOps 领域里的这样一个库,在其他语言中,我们只会考虑 Python,但是,在 Gruntwork,我们在其他地方广泛地使用了 Go,所以,继续用它就很容易理解了。

在回应 Terratest 与 InSpec ServerSpec 等其他工具相比怎么样时,Brikman表示

大多数规范工具都侧重于检查单个服务器或资源的属性。例如,httpd 是否已经安装并运行?Terratest 在很大程度上是用于端到端的验收风格的测试,在真实的环境中(如 AWS)部署真实的基础设施,并测试该基础设施是否真得符合预期。

Terratest提供了工具,可以执行类似检查URL 的响应是否符合预期或者获取Git 中当前分支的名称这样的任务。面向 Consul Vault Nomad 的 Terraform 模块都有 Terratest 测试示例。Terratest 的其他特性包括针对 CI 系统的变通方案,这类系统需要短期运行的测试,对于需要长期运行的基础设施测试可能无效。Terratest 还提供了像测试预期错误这样的典型测试抽象。为了加速开发过程中的测试,Terratest 可以把测试分解成“阶段”,而阶段可以使用环境变量跳过

查看英文原文 Terratest - an Open Source Go Library for Automated Infrastructure Testing

2018 年 5 月 16 日 19:001638
用户头像

发布了 1008 篇内容, 共 313.6 次阅读, 收获喜欢 282 次。

关注

评论

发布
暂无评论
发现更多内容

零基础到就业,腾讯在Github上获赞百万的Java全栈笔记也太强了吧!

Java王路飞

Java 程序员 架构 面试 分布式

有点东西,《阿里内部Redis学习笔记》这本笔记还融入了大量高并发系统的设计、开发及运维调优经验

Java架构师迁哥

带你厘清事务一致性(中篇)

小舰

4月日更

Jenkins教程:使用Jenkins进行持续集成

信码由缰

DevOps jenkins

面试官常考的 21 条 Linux 命令

xcbeyond

Linux 面试 4月日更

浅论变量的作用域与变量的生存周期

Integer

c

OS酱:“哎呀内存太小了,人家又缺页了!”

风骨散人

操作系统 内存管理 页面置换

Spring Boot Admin 2.1.0 全攻略

学Java关注我

Java 程序员 架构 互联网 技术宅

基于农业风险约束的农产品期货套期保值研究

容光

js数组和函数

赫鲁小夫

4月日更

黄金圈法则 - 识别真伪需求的神器

石云升

思维模型 28天写作 职场经验 4月日更

不是吧,都2021年了你还不知道有面试全真宝典这个东西吧!

Java架构师迁哥

企业签频繁掉签,何处是出路?

风翱

ios 【4 月日更】 企业签 超级签

牛掰,阿里金三银四Java涨薪秘籍全网开源,却连夜遭Github、知乎等平台连夜下架!

Java王路飞

Java 程序员 架构 面试 分布式

GitHub爆火的 Java 面试手册,全面对标蚂蚁金服、头条、拼多多、美团

神奇小汤圆

Java 程序员 架构 面试 计算机

瞬间爆炸,凭借阿里P9的Java 核心技能精讲,直接让我在三月斩获了21个offer

Java架构师迁哥

微服务网关:Spring Cloud Config-配置中心

程序员架构进阶

Spring Cloud 源码解析 配置中心 28天写作 四月日更

不懂源码可以去面试?阿里P7:Spring源码解析整套笔记分享

Java架构师迁哥

大神,膜拜!SpringMVC高能笔记分享,从头到尾,都是精华

Java架构师迁哥

Linux内核的进程负载均衡机制

赖猫

Linux Linux内核 linux学习

Java运算符

ベ布小禅

四月日更

自定义 Grafana Home 页面

耳东

Grafana 4月日更

三位阿里P8大牛精心整理的笔记《并发编程核心讲义》37个知识点全析,4个经典实战案例剖析,归纳总结。

Java架构师迁哥

自考答题卡识别初级解决方案,基于 Python OpenCV

梦想橡皮擦

Python OpenCV 4月日更

React 学习总结

pydata

Vue 低代码 前端框架 React

微服务中台技术解析之网关(dubbo-rest)实践

小江

dubbo 架构设计 api 网关

年轻人不要老熬夜

小天同学

健康 个人感悟 4月日更 熬夜

树莓派UPS-X750电源

波叽波叽啵😮一口盐汽水喷死你

树莓派 nodejs X750 树莓派UPS I2C

Javascript词法结构你懂吗?

前端树洞

JavaScript ecmascript 前端 前端进阶 【4 月日更】

翻译:《实用的Python编程》08_02_Logging

codists

Python

Let's Go 100

escray

go 学习笔记 4月日更 Go 语言从入门到实践 Go100

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Terratest:一个用于自动化基础设施测试的开源Go库-InfoQ