质量之匙:持续集成工具与实践(2)

发表于:2015-07-16来源:uml.org.cn作者:不详点击数: 标签:软件测试
目前有一些工作流程和发布管理的工具,但价钱一般都不便宜。Cruise即将发布的1.0版本针对中小型公司,或一个大公司里面的中小型团队,可以把持续集成

  目前有一些工作流程和发布管理的工具,但价钱一般都不便宜。Cruise即将发布的1.0版本针对中小型公司,或一个大公司里面的中小型团队,可以把持续集成的好处立刻带给它们。

  记者:你们开发Cruise的时候,是用什么工具呢?

  Jez:最初我们用CruiseControl,但三个月前我们就用Cruise作为我们自己的持续集成工具。

  记者:但是你们用Cruise时,也需要其他工具的配合,比方说测试、版本控制等工具。

  Jez:我们的开发最初用SVN ,但是之后我们看到整个软件开发业,有开始转向分布式版本控制系统的趋势(Distributed Version Control System, e.g.Git, Mercurial,Bitkeeper),我们选择了Mercurial。Cruise的1.0版本支持SVN和Mercurial。我们也用Ant, JUnit和Selenium作为测试和构建的工具。Cruise也支持NUnit和NAnt。

  CruiseControl, CruiseControl.NET,和 CruiseControl.rb是针对各自语言领域设计的工具。Cruise作为一个企业版软件,对于.NET, Java和Ruby项目,都是“开箱即用” 。持续集成工具和 Version Control System一样,是没有理由硬把它们分开为SVN.NET、SVN.Ruby等等。

  记者:你可以介绍一下 “构建管道 ”(“pipeline”)的概念吗?

  Jez:一个 pipeline 基本上就是一个工作流程。一个build通常是从单元测试开始,之后有功能测试,之后还可能有性能测试,之后把它部署到UAT(用户验收测试 user acceptance testing)环境作人工测试,再把它部署到staging server,最后部署到产品环境里。 每一个build都从版本控制系统取到一个版本的代码,然后通过每一个上述的阶段(单元测试功能测试),这个过程就是一个Pipeline。

  比方说,这个build通过了单元测试,但功能测试失败。另外的一个build通过了所有测试,可以随时将它部署。 利用这个pipeline的概念,就可以一目了然的看到你开发的软件的最新动态。

  记者:这么说来,你在写实现代码之前,需要写很多的测试?

  Jez:不错,如果你想得到持续集成带给你所有的好处,是需要写很多的测试。这个也是持续集成被广泛接受得比较慢的原因。但是这是值得的;测试可以把你的软件的质量提高,减低bug的数量,应付变化也可以比较快。这些都是对你的公司有利的。

  不过,就算你没有很多测试,Cruise也能带给你很多的得益,因为它能帮助你把软件部署的过程自动化,从而减低部署上会遇到的风险。

  记者:我觉得要从CruiseControl上获得最大的好处,就要test-first(先写测试)。我觉得它对于部署方面,不是最重要的一环。所以你需要说服人们多写测试?

  Jez:对,我也同意测试是很重要的,也要对人们多加强调这一点。

  记者:Thoughtworks有一些帮助客户利用test-first的成功个案,可以跟我们分享吗?

  Jez:Thoughtworks发表了好几个个案研究。另外,Thoughtworks最近出版了一部名为“Thoughtworks Anthology”的书,内容讲述我们帮助客户时用过很多不同的技术和技巧。我们Cruise也会用视频和播客的形式,来讲述Cruise的用法和好处。

  如你所说,认知是很重要的。我们要向人们显示Cruise和持续集成带来的好处,要不然他们当然不会花这个力气。

  记者: Cruise怎样支持一个项目里的(在版本控制系统上的)多个分支?

  Jez:一般来说,一个软件系统有三方面: a)部署-把软件放在不同的环境上。b)依赖-e.g.两个模块都依赖于一个共同的框架。c) 分支。在Cruise Release 1.0,你可以用不同的pipeline来代表不同的分支,比如说把一个pipeline设定为产品分支,而把另外的pipeline设定为旧版本的分支。

  记者: Cruise将会在何时发布?

  Jez:第三季度初。

  记者:在“敏捷中国” 技术大会里, 会有Cruise的演示吗?

  Jez:有。我和我的中国同事将会一起演示Cruise。

  记者:听说Martin Fowler也会出席这次大会,你和他见过面吗?

  Jez:去年我和我们的中国同事们去了伦敦,和他,还有其他的同事,一起设计Cruise的架构。

  记者: Cruise的开发用了多少时间?

  Jez:我们去年12月开始开发。

  记者:只用了不过半年,也挺快的。

  Jez:这半年间也是非常辛劳的,但同时也非常刺激、非常快。敏捷开发的其中一个好处是可以很快的做出成果,和对客户的要求作出快捷的反应。我们当然在开发Cruise的时候也用得上敏捷带来的好处。

原文转自:http://www.uml.org.cn/Test/200805231.asp