• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 持續集成理論和實踐的新進展(3)

    發表于:2014-03-04來源:豆瓣作者:@行知-追尋技術之美點擊數: 標簽:持續集成
    2) 廣義的持續集成及持續集成策略 當要把持續集成實踐應用到團隊的時候,有很多額外的技術或者非技術因素需要考慮。 組織結構 持續集成是一個重要的

      2) 廣義的持續集成及持續集成策略

      當要把持續集成實踐應用到團隊的時候,有很多額外的技術或者非技術因素需要考慮。

      組織結構

      持續集成是一個重要的溝通工具,而開發過程中兩個最需要緊密溝通的角色就是開發和測試。在我們常見的組織結構中開發和測試往往隸屬于不同的部門,甚 至這些部門隸屬于不同的高級經理。這往往會給持續集成的推廣帶來很大的阻力。這是因為持續集成從環境搭建到運行維護都需要兩種角色的通力合作。我們的經驗 是這類涉及到人力資源的事情除非某一級“共同的大老板”出面,否則是很難協調的。“借調”這樣的方式往往不能保證效果。

      流程

      放到團隊的角度看待流程應當更加關注于各個成員之間的配合。每個開發人員提交代碼之前應當確保是經過本地構建的;開發人員在提交之前應該確認主線上的代碼是通過了持續集成的;測試人員測試的版本應該是通過了某次持續集成的,并且有相應的具體版本信息。

      為了保障流程的順利執行,我們還經常采用持續集成看板、提交令牌等輔助手段。

      環境

      環境是指持續集成運行時所依賴的軟件和硬件的集合。我們經常遇到的一個問題是,軟件在一臺機器上能夠通過持續集成的驗證,而在另一臺機器上則不能通 過。這通常是因為我們對持續集成環境的定義不明確造成的。所以在搭建持續集成和在組織內推廣持續集成的時候,我們需要特別注意持續集成環境的標準化,明確 指出持續集成運行時依賴哪些第三方庫,機器配置如何,端口和網絡狀況如何等等。

      我們經常采用將持續集成環境加入配置管理的方式來解決環境標準化的問題。

      分層

      在大型團隊(超過100人)中,扁平的開發組織結構是運行起來是比較困難的。常見的做法是按照特性,將團隊劃分為10人左右的小團隊。一般來說,如 果團隊數量超過10個,還會再增加一層架構。這時候,配置管理的策略也應當做出調整。常見的做法是為每個團隊拉出一個分支,設置一個集成分支用于將各個特 性分支的內容整合在一起。需要注意的是,這里每個分支都應該具備所有代碼的訪問權限,也就是所有分支是同根的、等價的。

      測試分級

      在實施持續集成的時對于測試的類型應該有比較明確的定義。一般來說,我們經常把測試分為三級——單元測試、集成測試和系統測試。這是一個很大的話 題,這里只是說明此處的單元測試并不是指針對函數的測試。雖然單元測試主要是函數基本的測試,但是每個單元測試應該針對的是特性或者對應代碼在實現該特性 上所發揮的作用。

      單元測試的運行速度通常非???,應該在數秒到數分鐘。單元測試應該覆蓋絕大部分的特性需求。集成測試單個測試的運行速度通常會比單元測試慢一個數量 級,比如存在文件讀寫或者其他的IO和網絡操作。集成測試主要用于保證系統的各個組件之間的調用是工作的。系統測試的運行速度一般會比集成測試慢,通常需 要將整個系統運行起來,比如Web開發中的selenium測試。系統測試主要用于測試系統的正確路徑(Happy Path)可以工作。有的團隊會開發很多基于整個系統的回歸測試,也屬于系統測試。就場景的覆蓋而言,單元測試>集成測試>系統測試,從運行 時間來看則相反。

      3) 持續集成的成熟度評估

      在幫助客戶實施和推廣持續集成的過程中我們逐漸總結出一些原則,幫助客戶評估現狀,分析和設計未來的目標。該評估方法借鑒了ThoughtWorks敏捷成熟度模型中有關配置管理、測試、構建等內容,并做了適當的簡化。

      構建:

      級別

      描述

      3+:對外防御的

      團隊能夠根據自己的需要,協調其他團隊的持續集成,當依賴的其他團隊的代碼和組件或者第三方庫和基礎設施發生改變時自動進行構建。團隊對于外部依賴的可靠性有信心。

      3:對內防御的

      構建是自動的。由測試和檢查來保證團隊內部的開發質量。持續集成的修復具有最高的優先級。團隊對持續集成的結果有信心。

      2:頻繁的

      構建是自動的,而且構建的速度較快。構建的觸發條件是明確的,通常每次代碼提交都會觸發構建。團隊中的每個人都會觸發構建,并且了解構建的狀態。

      1:重復執行

      構建是自動的,但是執行的不夠頻繁。構建的觸發是隨機的或者頻率是非常低的(低于每天一次)。構建的速度通常非常慢,比如一次構建超過半個小時。

      0:可重復的

      主要依賴于手動的方式構建軟件,但是每次構建的方式都是相同的或者相似的。通常有相關的文檔的指導。經常團隊指定某個人負責構建軟件,雖然大部分人都能夠做這件事情。

      -1:手動的

      主要依賴于手動的方式集成軟件。每次集成的方式可能不一樣。經常團隊中只有個別人能夠將軟件集成起來。

      測試:

      級別

      描述

      3+:全面集成的

      全團隊對測試負責。測試驅動整個開發過程。測試與構建完全集成。

      3:測試驅動的

      業務分析人員和開發人員均參與測試。測試在構建過程中自動執行。開發人員實踐測試驅動開發。

      2:集成的

      開發人員參與測試。部分測試集成在構建過程中執行。大部分測試在軟件開發過程中執行。

      1:共享的

      開發人員參與測試。測試并未集成在構建過程中。部分測試在軟件開發過程中執行,大部分測試在軟件開發結束后執行。

      0:審查的

      測試由專門的測試人員負責。有部分測試是在軟件開發過程中執行。但大部分測試在軟件開發結束后執行。

      -1:獨立的

      測試由專門的測試人員負責。僅在軟件開發結束后執行。

    原文轉自:http://www.wangyuxiong.com/archives/51243

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>