持续集成概念

一. 软件开发生命周期(Software Development Life Cycle)主要包括如下几个阶段。

分析请求:分析用户请求,才能知道要开发什么样的软件。express

设计 :针对用户请求,进行设计软件架构等。架构

执行:任务分派开始开发。ide

测试 : 测试软件的功能、代码等。工具

演变或者维护:发布和后期维护,如补丁更新等。布局


二. 软件开发中的瀑布开发模型,以下图:


从上图能够看到,开发阶段是按顺序来的。单元测试


瀑布模型的劣势:

  • 开发生命周期可能持续一年或者更长时间。
  • 存在着世大的不肯定性
  • 不适合那些新特性更新频繁的项目。好比,电子商务项目
  • 持续集成的执行都是在开发阶段完成后,每每后面会存在不少问题,尤为针对于大项目而言。
  • 没有向后的可追溯性。
  • 在不一样阶段称量进展是很是困难的,由于开发步骤至关因而线性的。后面确定没法预估。


瀑布模型的优点:(试用于如下类型的项目)

  • 项目的初期布局有很好的文档和很是的固定(不多变更)
  • 有足够的金钱去维持管理团队,测试团队,开发团队,构建和释放团队,等。
  • 该技术是固定的,没有变更的。
  • 没有什么模糊的需求,也是最重要的。需求在需求分析阶段有以外,在其它任何阶段都没有。


三. 敏捷的救援

敏捷意味着快速、简单。 敏捷是开发的一种方法,它是经过组织内各团队合做来完成的。敏捷背后的原则是增量、快速、灵活的软件开发。提高了计划的灵活性。测试


1. 敏捷模型的12个原则

(1)经过早期有用的软件进行持续交付来达到客户满意度。ui

(2)适应不断变化的开发需求,甚至在软件开发后期。spa

(3)软件交付频繁(可能几周或者一个月内)设计

(4)在企业、人员、开者者之间密切的合做

(5)项目干系人应该是被信任的

(6)面对面的沟通方式是最好的交流方式

(7)正在开发软件是程序测量的标准

(8)可持续的发展,可以保持一个一致的步伐

(9)持续关注卓越的技术和良好的设计

(10)简单

(11)组织内部的团队成员

(12)适应不断变化的环境


2. 敏捷开发工做方式

在敏捷开发进程中,软件被分红多个功能或者模块,这些功能是在迭代中进行持续交付的。每次迭代持续三个礼拜,包括在不一样区域同时工做的团队,好比计划,需求分析,设计,代码,单元测试和可接受性测试。

    这样的一个结果就是,没有任何人是空闲的。这和瀑布模型是彻底不一样的,瀑布模型是开发人员在很是忙的时候,测试人员和其它人员都比较空闲。 下图描述了敏捷开发模型。

从上图能够看出,模型像个圈同样,不停的进行迭代。至关于之前工做是串行的,如今是并行的同样。


3. 敏捷开发的优点

  • 功能能够被快速的开发和演示。
  • 资源请求更少。
  • 促进团队合做和交叉训练。
  • 适用于那些需求常常改变的项目。
  • 简约的文档
  • 更少或者没有计划。
  • 并行开发:功能开发能够并行来作。


四. CI的元素

1. 版本控制系统


2. 分支策略:GitFlow是另外一种使用多个分支管理代码的方式。 以下图所示:


GitFlow彻底的架构图以下 :

483cc922-1c02-4608-9f0d-b9cbc2f89c6a


3. CI 工具

此处使用的是jenkins。 还有其它如Build Forge, Bamboo 和 TeamCity.


4. 自动触发的构建


5. 代码覆盖率测试

代码覆盖的测试方式:

Type of coverage Description
Function The number of function called out of the total number of functions defined
Statement The number of statements in the program that are truly called out of the totoal number
Branches The number of branches of the control structures executed
Condition The number of Boolean sub-expressions that are being tested for a ture and false value
Line The number of lines of source code that are being tested out of the total number of lines present inside the code


代码覆盖率测试工具:

Language Tools
Java Atlassian Clover, Cobertura, JaCoCo
C#/.NET OpenCover, dotCover
C++ OpenCppCoverage,gcov
Python Coverage.py
Ruby SimpleCov


6. 静态代码质量分析


7. 自动化测试


8. 二进制库工具


9. 自动打包

相关文章
相关标签/搜索