`
nanjingjiangbiao_T
  • 浏览: 2739822 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

持续集成:什么应该自动化? .

 
阅读更多
一、什么是持续集成(Continuous Integration)?

这个名词已经在软件开发领域持续了N年,一个比较简单的定义如下:
持续集成(CI)
是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。更具体的解释可以参考Martin fowlerContinuous Integration

二、持续集成的价值与成本

有句时髦的话,叫做“存在即为合理”。既然持续集成已经存在了这么长的时间,而且没有消失的迹象,那就是有价值的东西。那么它的价值何在?
有人概括如下:(1) 减小风险;(2) 减少手动过程;(3) 生成构建结果;(4) 安全感。
而持续集成的成本在于对持续集成代码的维护成本和集成的时间成本。因为随着项目进行,软硬件环境会越来越复杂,成品代码也会不断膨胀。此时,需要团队而修改或增加原有的测试代码,以适应这些变化,同时,每次集成所需时间也会变长,这就是持续集成的成本。
某个blog中提道:“这种集成是如此的频繁,多少次的代码Commit就有多少次持续集成。前提是集成的成本很低,或者说是完全自动化的。”

三、持续集成应该自动化什么呢?

我们要以尽可能少的成本来获得尽可能多的价值。这就要考虑哪些自动化是必要的啦。
Jez Humble提到至少有六点要做到自动化,它们分别是(1)自动化的运行测试;(2) 自动产生可部署的二进制成品;(3) 自动将成品自动部署到近似生产环境;(4) 自动为CodeBase打上标签;(5) 自动运行回归测试;(6)自动生成度量报告。

四、持续集成服务器的选择

在进行持续集成实践前,应当正确的选择并配置持续集成服务器。比较成熟的持续集成服务器包括:CruiseControl, Anthill, Bamboo, TeamCity, Continuum 等。CruiseControl作为开源产品,以其对于各种SCM以及构建工具的广泛支持而被许多开发团队所接受。而开发自动化专家 Duvall 采用一致的评估标准和很多说明性示例,介绍了一些开源 CI 服务器,包括 Continuum、CruiseControl 和 Luntbuild。并指出“
要根据 自己的 具体技术和政策需求对工具进行分析。并用以下五个指标来评估CI工具,它们分别是:(1) 特性;(2) 可靠性;(3) 寿命;(4) 目标环境;(5) 易用性。结果如下表:
CI

而CruiseControl是我唯一真正用过的持续集成工具,
它现在灵活而又强大功能也让我瞠目,而且配置与管理也较两年前容易得多啦。为什么说它强大呢?因为你只要想得到的问题,它也都会有所考虑。朋友的Blog上有些CruiseControl的最佳实践足以证明这一点,只要你肯去实践。

五、只有持续集成服务器是远远不够的

正如Jez Humble所说,
CruiseControl和其它的CI工具本质上只不过是一个定时器,时间一到,做你让它做的事情。所以,必然要有其它工具与其结合,方显持续集成的本色。这些工具又是什么呢?想测试的话,你就要用一些测试工具,如JUnit,JWebUnit,Selenium等等;想检查代码标准的话,你就要用checkstyle等代码规范检查工具;想要了解测试覆盖率的话,你可能就要用到JCoverage啦。当然,想得到二进制文件,就要用到Ant,Make之类的工具啦。

六、最重要的事:实践与反思

也许这些东西大家都知道,而且有些人可能已经实践过啦。无论这些实践的结果是怎样的,一定不要忘记总结和反思。如果这些实践成功了,不要把它归功于这个工具,而是要总结一下为什么会成功,如果你愿意的话,还可以和大家分享一下。如果这些实践失败了,也不要把它归功于这个工具,而是要反思一下,是否正确地使用了这个工具,团队成员是否都喜欢这个工具,为什么?
分享到:
评论

相关推荐

    持续集成:什么应该自动化?

    一、什么是持续集成(ContinuousIntegration)?这个名词已经在软件开发领域持续了N年,一个比较简单的定义如下:持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才...

    ITS架构和标准:向集成自动化演变.zip

    在当今信息化快速发展的时代,ITS作为交通管理与服务的关键技术,正逐渐演变为一种集成自动化系统,以提升交通效率、安全和可持续性。本文将深入探讨ITS的架构和相关标准,以及其向集成自动化转变的过程和意义。 1....

    接口自动化-jenkins+maven+jmeter持续集成.pdf

    在当今的软件开发流程中,接口自动化测试和持续集成(CI)是保证产品质量和提升开发效率的重要实践。文档《接口自动化-jenkins+maven+jmeter持续集成.pdf》详细介绍了如何利用Jenkins、Maven和JMeter这三个强大的...

    RF+jenkins环境搭建与自动化测试持续集成

    ### RF与Jenkins环境搭建及自动化测试持续集成 #### 一、RF(Robot Framework)环境搭建 **Robot Framework**(简称RF)是一款用于自动化测试的框架,它支持关键字驱动测试和数据驱动测试,并且能够方便地扩展自己...

    持续集成软件质量改进和风险降低之道.pdf

    《持续集成:软件质量改进和风险降低之道》一书深入探讨了如何在IT行业中通过持续集成来提升软件质量并有效管理风险。持续集成是敏捷开发方法的重要组成部分,它强调频繁地将开发人员的工作成果合并到主分支,以尽早...

    持续集成:软件质量改进和风险降低之道

    2. 自动化构建与测试:自动化是持续集成成功的关键。每次代码集成后,自动化构建和测试都会被触发,确保新的代码变更没有破坏现有的功能。这有助于快速发现并修复问题,避免缺陷积累。 3. 及时反馈:持续集成系统...

    持续集成与自动化测试

    【持续集成与自动化测试】 持续集成(Continuous Integration, CI)是一种软件开发实践,它强调开发人员频繁地将他们的代码更改合并到主分支,通常每天至少一次。这一过程伴随着自动化构建和测试,以尽早发现和修复...

    自动化测试与持续集成解决方案.pptx

    自动化测试与持续集成解决方案在IT行业中扮演着至关重要的角色,特别是在大规模、高频率的软件开发环境中,如WalmartLabs。这个技术方案旨在通过引入自动化测试和持续集成实践,提高软件质量,加速产品迭代,同时...

    持续集成与jenkins简单介绍(实例:打包+接口测试).zip

    Jenkins是实现持续集成的一种开源工具,它提供了一个自动化平台,用于构建、测试和部署软件。 在"持续集成与Jenkins简单介绍(实例:打包+接口测试).zip"这个压缩包中,包含了对这两个主题的深入理解。"持续集成与...

    Appium:Appium持续集成与测试自动化流程.docx

    Appium:Appium持续集成与测试自动化流程

    分层自动化测试持续集成_-_倪生华.pdf

    ### 分层自动化测试与持续集成:倪生华的探索之路 #### 核心知识点解析: **一、自动化测试背景** 1. **需求紧迫性:** 随着软件产品的快速迭代,传统的人工测试方式已难以满足高效、全面的验证需求。面对日益...

    基于持续集成的Android自动化测试.pdf

    本文主要探讨了如何基于持续集成来实现Android应用的自动化测试。 首先,Android测试是一个重要的环节,特别是在快速迭代的开发环境中。Android测试通常包括单元测试、功能测试、性能测试等,确保应用程序的稳定性...

    编程选择题40道:持续集成:Jenkins与Travis CI的自动化测试与部署.Tex.docx

    编程选择题40道:持续集成:Jenkins与Travis CI的自动化测试与部署.Tex.docx

    jenkins(持续集成)

    Jenkins 是一款强大的开源持续集成(Continuous Integration, CI)工具,它被广泛应用于软件开发过程中,以自动化构建、测试和部署任务。通过Jenkins,开发者可以实时监控代码更改,自动触发构建过程,确保项目的...

    持续集成自动化测试(robotium_jenkins)

    ### 持续集成自动化测试(robotium_jenkins) #### Robotium介绍 Robotium是一款针对Android应用程序的强大自动化测试框架,其主要特色在于能够模拟真实用户的交互行为,从而帮助开发者及测试人员快速构建出稳定...

    规模化持续集成方法:流程定制与服务组件化.pdf

    在软件开发过程中,持续集成(CI)是一种软件工程实践,它要求开发人员频繁地将代码合并到共享的主干版本库中,每次合并后可以通过自动化构建(包括编译、发布、自动化单元测试乃至集成测试)来验证,从而尽早地发现...

    企业IT持续集成与持续交付实践.pdf

    企业IT持续集成与持续交付实践 持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)是企业IT实践中两个非常重要的概念,它们之间紧密相连,都是为了提高软件开发、测试和部署的效率和...

    Bitbucket:Bitbucket自动化构建与持续集成.docx

    Bitbucket:Bitbucket自动化构建与持续集成.docx

    持续集成自动化构建与测试

    ### 持续集成自动化构建与测试 #### 一、持续集成的概念与价值 持续集成(Continuous Integration,简称CI)是一种软件开发实践,要求开发人员经常性地将代码提交到共享仓库中,每次提交后都会自动运行构建和测试...

    bk-ci蓝鲸持续集成平台 v1.14.0.zip

    "bk-ci蓝鲸持续集成平台 v1.14.0.zip"是一款专为开发者设计的持续集成(CI)工具,其主要目标是自动化构建、测试和部署软件项目,以提高开发效率并确保软件质量。该平台是蓝鲸智云产品家族的一部分,蓝鲸智云是一个...

Global site tag (gtag.js) - Google Analytics