持续集成目前已经越来越成为软件研发过程不可或缺的工作。很多人也许都或多或少能说出一些,但对其副作用却很少有人关注。中培伟业《软件自动化测试与持续集成实践》培训专家张老师在这里就持续集成的意义及负面作用进行了详细介绍。
对于持续集成,张老师以为有以下几个方面的意义:
(1)减少风险
通过每天集成变化的代码并发布,我们将减少项目的风险。这样做将可以推动尽早发现缺陷;尽早估量软件的质量;尽早排除假设。
尽早发现缺陷并修复缺陷,软件开发中每天持续集成,并进行测试和评审,这些过程有许多的机会发现缺陷。
尽早估量软件质量,通过在持续集成中实施持续测试和评审的活动,软件产品的健康属性,例如复杂性,将被全程跟踪。
尽早排除假设通过在一个纯净的环境中,用同样的脚本和过程构建和测试软件,开发人员可以减少假设:是否使用了不正确的第三方的库,是否使用了不同的环境参数等。
(2)减少重复的过程
通过减少重复性的动作来节省时间,成本,提高效率。在软件的开发过程中,有许多重复性的活动,这些活动包括代码编译,数据库集成,测试,评审,部署,信息反馈等。通过自动化的持续集成,你将获得如下能力:
任何时候都可以执行一致的流程;
每个开发过程的步骤都是依次执行的;在构建脚本,将依次执行编译,自动测试等动作。
在版本控制库中,当代码提交发生时,构建过程自动执行。
通过减少在重复性工作上的劳动力,让开发工程师做更多有价值的工作。
(3)产生可部署的软件
持续集成可以让项目组在任一点上及时提交可以安装的软件包。这是持续集成最可看见的一个益处。我们可以无休止地讨论改善软件质量和减少风险,但是对用户或者客户来说,可以安装的软件包是最切实可行的
(4)使得项目更加透明
(5)建立项目信心
此外,张老师也认为持续集成也存在以下几个方面的负作用:
a. 用于维护持续集成的费用比较高
这通常是一个被误导的错误的理解,如论你是否使用持续集成,你依然需要集成,构建,测试,部署等工作。管理一个强壮的持续集成的系统比管理手动的过程更加高效率。
b. 太多的变更
一些开发组织需要改变已有的开发习惯和过程。
c. 太多失败的构建
当开发人员不做个人构建之后,就将变更的代码提交到版本控制库,从而导致太多的构建失败。
d. 额外的软件和硬件成本
持续构建需要独立的集成构建主机和持续集成软件等,这些需要额外的成本。