1 概述
持續集成從“配置管理”、“構建”、“測試”、“部署及發(fā)布”及“團隊習慣”5個(gè)緯度考察其成熟度,每個(gè)維度都有5個(gè)級別,分別是“入門(mén)”、“新手”、“中等”、“進(jìn)階”和“瘋狂”。目前在各個(gè)維度上,行業(yè)的平均水平集中在“入門(mén)”和“新手”兩個(gè)級別。
評估時(shí)各級別之間不能越級,就是說(shuō)即使“新手”中個(gè)別條目已經(jīng)做到了,但如果“入門(mén)”中有條目沒(méi)有做到,也只能評為“入門(mén)”級。
該模型的主要目的是為了更好地幫助團隊認識現狀,同時(shí)了解改進(jìn)的方向。該模型是對持續集成主要維度的簡(jiǎn)單衡量,背后可能有一些并不適合團隊的假設,且并未對每個(gè)條目做細致解釋?zhuān)瑸楂@得團隊持續集成工作的有針對性的全面評估,請聯(lián)系PMO部門(mén)。
由于技術(shù)和項目的差異性,不同團隊達到同一級別需要付出的努力可能差異很大,獲得的收益也有區別,因此不適宜利用此模型在團隊間進(jìn)行比較。
2 配置管理維度
入門(mén):
使用版本管理工具
使用私有分支
功能測試Case在本地管理
生產(chǎn)代碼被版本管理
每天提交代碼,并寫(xiě)Comment。
新手:
應用在最小工作單元完成后即可集成的分支策略
所有構建、測試及部署腳本都被版本管理
所有測試代碼和數據被集中管理
測試環(huán)境中的應用配置被版本管理
代碼簽入的Comment清楚達意,含有必要的Metadata,比如Bug號等。
RD使用完全標準的開(kāi)發(fā)環(huán)境,沒(méi)有僅供自己使用的腳本、數據或測試環(huán)境等。
中等:
測試代碼與生產(chǎn)代碼同源
生產(chǎn)環(huán)境中的應用配置被版本管理
持續集成平臺運行的腳本被版本管理,無(wú)需登錄平臺修改腳本。
每次構建均有版本追溯,無(wú)需重新從源碼構建歷史版本。
Qa使用標準的開(kāi)發(fā)測試環(huán)境
數據庫被版本管理
功能測試數據被版本管理
進(jìn)階:
沒(méi)有僅在團隊成員本地保存的任何項目資產(chǎn)。
RD和QA使用一致的開(kāi)發(fā)測試環(huán)境。
瘋狂:
開(kāi)發(fā)、測試、生產(chǎn)環(huán)境被版本管理,可以一鍵克隆。
所有測試數據被版本管理
通過(guò)下面問(wèn)題進(jìn)一步了解團隊的配置管理現狀:
使用何種分支管理策略?
團隊成員簽入代碼的頻率和內容,Comment的質(zhì)量如何?
一個(gè)RD在全新的機器上建立完整的工作環(huán)境要經(jīng)歷那些步驟?
一個(gè)QA在全新的機器上建立完整的工作環(huán)境要經(jīng)歷那些步驟?
RD和QA的工作環(huán)境有什么區別?
RD之間的工作環(huán)境有什么區別?
Qa之間的工作環(huán)境有什么區別?
測試數據是怎么管理的?
RD是否在沙盒中開(kāi)發(fā)?如果不是,有那些依賴(lài)?
本地和平臺構建腳本是如何管理的?
測試環(huán)境和生產(chǎn)環(huán)境的應用配置是如何管理的?
測試工具和測試Case是如何管理的?
測試運行的環(huán)境依賴(lài)有那些?是否每個(gè)人在自己的工作環(huán)境中都可以方便運行?
所有團隊成員是否使用相同的腳本做本地構建?
團隊成員有那些私有的代碼,腳本和預先部署的環(huán)境?
3 構建維度
入門(mén):
有幫助腳本分別執行各構建步驟
階段構建,例如Nightly Build或Weekly Build。
Shell腳本作為自動(dòng)化構建開(kāi)發(fā)腳本
新手:
代碼簽入后即運行包含自動(dòng)化測試的構建過(guò)程
構建結果被有效通知團隊
所有人都知道如何運行本地構建
基礎構建過(guò)程不再有突出的環(huán)境問(wèn)題
通過(guò)自動(dòng)化構建腳本完成自動(dòng)化構建任務(wù)。
專(zhuān)人維護構建環(huán)境。
中等
在本地和平臺中運行自動(dòng)化冒煙測試
在平臺中運行功能測試全集和性能測試。
充分利用多臺機器運行多個(gè)構建。
構建過(guò)程集成了詳細的報告。
能夠靈活配置各構建階段的具體任務(wù)。
通過(guò)腳本同步及升級各個(gè)構建機器中的環(huán)境依賴(lài)
進(jìn)階
構建步驟被充分優(yōu)化
構建過(guò)程可以對報告做分析,并記錄關(guān)鍵指標的趨勢,并進(jìn)行改進(jìn)。
充分利用多臺機器做單個(gè)構建任務(wù)。
在全新的開(kāi)發(fā)環(huán)境中簽出項目,通過(guò)一個(gè)腳本即可構建完整的開(kāi)發(fā)和測試環(huán)境并成功產(chǎn)出部署包。
瘋狂
運行時(shí)間超過(guò)限制即失敗。
通過(guò)下面問(wèn)題進(jìn)一步了解團隊的構建現狀:
如何管理編譯依賴(lài)?
如何管理模塊版本依賴(lài)?
編譯的時(shí)間是多長(cháng)?
每個(gè)人的構建環(huán)境和方法是否一致?
自動(dòng)化構建的具體步驟?
自動(dòng)化構建失敗的主要原因是什么?
是否使用了Build Grid?如何用的?
如何管理Grid中的各臺機器?如何同步和更新環(huán)境?
本地構建的內容?什么時(shí)候運行?要多長(cháng)時(shí)間?
使用那個(gè)CI平臺?如何配置的?
如何調整構建中包含的內容?
4 測試維度
在其它緯度中也有一些與測試相關(guān)的條目,可參考。
入門(mén):
有部分自動(dòng)化功能測試
在項目后期集中測試
僅有少量的單元測試,尚未發(fā)揮明顯作用。
新手:
最小工作單元包含手工測試。
積累一定量的單元測試,團隊已從中受益。
構建時(shí)運行自動(dòng)回歸測試。
原文轉自:http://kjueaiud.com