微信号:infoqchina

介绍:有内容的技术社区媒体

书评:《使用Chef框架进行测试驱动基础设施开发(第2版)》

2014-04-22 21:49 InfoQ

在《使用Chef框架进行测试驱动基础设施开发(第2版)》一书的第1章,StephenNelson-Smith谈论了测试驱动基础设施开发的一些宗旨。他特别列举了两条最基本的观点:

1.基础设施能够、也应该被视为代码

2.基础设施开发者也应该坚持其他方面的软件开发者所遵循的相同专业性原理。

随后,他对这两点进行了深入讲解。

在2006年左右,像AmazonEC2这样的实用计算平台,以及像Ruby on Rails这样的第二代web框架的出现,使得即使是最小的团队也能够创建出互联网规模的应用程序。很快,Puppet及几年后出现的Chef框架则实现了帮助人们管理大规模web基础设施的功能。Stephen在书中是这样说的:

通过共同设计应用程序所运行的基础设施代码,我们就将运营的责任交给了开发者。这样就使系统管理员的重担得以减轻,他们可以更专注于设计和软件的生命周期,从更高的抽象角度进行思考。

在对基础设施即代码的历史进行了一番挖掘之后,Stephen列举了基础设施即代码的一些原则,举例如下:

1.将基础设施分解为独立的、可重用的,并且可以在网络中进行访问的服务。

2.按照某种方式整合这些服务,使他们能够实现基础设施所需的功能。

随后他强调了采取基础设施即代码开发方式的主要风险:例如重复代码、对基础设施代码缺乏清晰的了解、不敢改动代码,或者是过于依赖理解基础设施代码的个别关键人士。

为了缓解这些风险,Stephen认为编写基础设施代码需要和编写应用程序同等的谨慎和专业度,在编写任何代码时,都需要遵从一些必要的实践,例如对基础设施代码的模块化设计、代码共同责任人、代码复审、代码标准、重构和测试。

在介绍了这些主旨之后,Stephen用了几个完整的章节介绍了Ruby和Chef,以及通常与Chef一起使用的一些基本工具,例如VirtualBox和Vagrant。


在第5章,Stephen介绍了测试驱动和行为驱动的开发方式。


到这里,读者们应该已经对测试驱动开发基础设施代码所需的必要概念和工具有了一个基本的理解。

在第6章,Stephen介绍了一个他设计的针对测试驱动基础设施的概念性框架,叫做MASCOT。他是这样说的:

测试驱动基础设施应该有如下特征:

  • 主流的

  • 自动化的

  • 无副作用的

  • 持续集成的

  • 由外及内的

  • 测试优先的

在第6章的余下部分对这些要点分别进行了细节讨论。

第7章为测试驱动基础设施开发推荐了一套工具集。在这一章的开头,他再次强调了测试驱动基础设施的两条宗旨:

1.基础设施能够、也应该被视为代码

2.基础设施开发者也应该坚持其他方面的软件开发者所遵循的相同专业性原理。

他随后介绍了不同类型的测试方法:包括单元测试、集成测试以及验收测试,并且介绍了测试的整个工作流,以说明在每种测试方法应该应用在什么阶段。

在介绍完测试类型和测试工作流之后中,Stephen介绍了他所推荐的工具集:

  • 使用Berkshelf管理cookbook的依赖

  • 使用Vagrant管理运行测试的虚拟机

  • 使用Test Kitchen在多个节点和平台上运行测试

  • 使用Cucumber和Leibniz进行验收测试

  • 结合使用Serverspec、Bats和Test Kitchen

  • 使用Minitest Handler进行集成测试

  • 使用Chefspec进行单元测试

  • 使用静态分析和代码清理工具,例如Foodcritic、Knife Cookbook Test、Tailor和Strainer

本书对以上每一条都提供了详细的上手操作指南、代码示例,并且对每种工具的优缺点都进行了一番描述。这一部分可以说是全书最实用的部分,读者可以跟随书中的讲解很快上手这些工具。在本书的最后一部分,Stephen对如何在整个测试工作流中使用每一种工具进行了一番总结。

更多精彩内容,请点击阅读原文。

***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 15个常用的‘sed’小命令(一) PS高手教程!手把手教你临摹一枚超写实的录音机图标 iOS微信安装包瘦身 给女朋友的 iOS 开发 7 AutoLayout 反思 | 你的基础设施是什么版本?