喵喵说自动化持续集成

首先说明,喵喵很笨,所以这篇文章借鉴了很多牛X人物的观点,如有雷同,请大家原谅~~

从12月初入职开始,差不多3个多星期,一直在做这件事情,即使用CruiseControl,ant和ClearCase来进行自动化集成。也算是看了很多文档,解决了不少问题,学到了一些知识。现在,基本上是做完了,接下来要做别的事情,所以就先总结一下,从概念上来说说自动化持续集成吧。

所谓集成,通俗地讲就是把项目的各个相关部分的东西组合起来,形成一个可用的软件。而从每天每个开发者的日常开发,到各个软件模块的组合拼接,软件集成无所不在,一个完整可用的软件,就是通过不断地集成每个开发人员的代码而形成的。

软件开发绝非一帆风顺,当新的功能加入到原有软件中的时候,往往不小心破坏了原有的功能,引入了一些bug,当老的bug被修复的时候,又往往会导致其他bug的产生,更糟糕的是,这些bug往往在当时并不能及时被发现。当小组成员们完成了自己所负责的模块,等到最后来一起集成的时候,往往会出现这样那样的集成问题。

同时现在的软件开发过程中,大都会有开发和测试两个组分开进行,开发组定时的把build给测试组,测试组进行测试。因此,开发和测试可能在不同的环境中,或者布署之类的问题,开发组可以使用的build到了测试组就完全没有办法使用。

所有的这一切,都是每个开发人员的切肤之痛。

没有做自动化集成之前,喵喵多少有些不以为然,不就是一些ant脚本之类用来build和deploy么,真的有这个必要这么做么?但是中间的一次postmortem,开发组和测试组的争论,一个个实际的问题,激烈讨论的解决方案……让喵喵感触颇深,原来,就是这么简单的一个东西,也会有这么多问题,实际的开发,真的和学校中的有些不一样,team越大,问题越多,迫使职责细化,然后就更加需要一个简单方便的东西来统一。可以说,在这一次postmortem中,我才有些理解了自动化持续集成的重要性。

在开发中,我们渴望的理想状况,不是修复bug和集成过程中产生的问题,而是每当开发出新的代码并将他们加入原系统中的时候,能够被及时告知我们是否破坏了原有系统的功能,稳步可靠、持续增量的软件过程,才是每个开发者心目中的理想过程。

而在测试中,我们希望能正常进行测试,尽可能多的发现一些真正的问题,而不是因为配置,版本之类的问题的产生,无法进行测试,或者其他。

说到这里,其实就可以看到自动化持续集成的好处:每当有新的修改加入的时候,修改的作者能够被及时地告知他的修改是否在引入新的功能的同时保证原有功能的完整;给出新的build和相应的测试所需相关内容,这个过程是自动完成的,不会因为人为的失误影响测试的进行。

开源社区已经为我们提供了非常优秀的持续集成工具,CruiseControl、CruiseControl .Net已成为广泛使用而且非常成熟的持续集成工具,而持续集成所需要的自动化构建工具和版本管理工具如Ant、ClearCase也已经是非常成熟,搭配Junit等测试框架,用于确保整个系统功能完整性。这些,完全可以给我们提供一个很好的自动化持续集成环境。

可以说,自动化持续集成是现代软件工程中的一件利器,任何一个软件项目,不论是上百人的大项目还是个人项目,自动化持续集成都能让你的软件开发过程更加稳定高效,提升软件的质量,减少不必要的人工操作。随着软件开发过程的不断进步,会不断有更多更好的工具出现,使得我们可以更稳定、更快速地开发出高质量的满足人们需求的软件,让我们的生活变得更加美好。

 参考文章: 使用开源工具进行持续集成——黄亮

你可能感兴趣的:(ant,软件测试,项目管理,JUnit,配置管理)