持續集成概念

一. 軟件開發生命週期(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. 自動打包

相關文章
相關標籤/搜索