持續集成目前已經越來越成為軟件研發過程不可或缺的工作。很多人也許都或多或少能說出一些,但對其副作用卻很少有人關注。中培偉業《軟件自動化測試與持續集成實踐》培訓專家張老師在這里就持續集成的意義及負面作用進行了詳細介紹。
對于持續集成,張老師以為有以下幾個方面的意義:
(1)減少風險
通過每天集成變化的代碼并發布,我們將減少項目的風險。這樣做將可以推動盡早發現缺陷;盡早估量軟件的質量;盡早排除假設。
盡早發現缺陷并修復缺陷,軟件開發中每天持續集成,并進行測試和評審,這些過程有許多的機會發現缺陷。
盡早估量軟件質量,通過在持續集成中實施持續測試和評審的活動,軟件產品的健康屬性,例如復雜性,將被全程跟蹤。
盡早排除假設通過在一個純凈的環境中,用同樣的腳本和過程構建和測試軟件,開發人員可以減少假設:是否使用了不正確的第三方的庫,是否使用了不同的環境參數等。
(2)減少重復的過程
通過減少重復性的動作來節省時間,成本,提高效率。在軟件的開發過程中,有許多重復性的活動,這些活動包括代碼編譯,數據庫集成,測試,評審,部署,信息反饋等。通過自動化的持續集成,你將獲得如下能力:
任何時候都可以執行一致的流程;
每個開發過程的步驟都是依次執行的;在構建腳本,將依次執行編譯,自動測試等動作。
在版本控制庫中,當代碼提交發生時,構建過程自動執行。
通過減少在重復性工作上的勞動力,讓開發工程師做更多有價值的工作。
(3)產生可部署的軟件
持續集成可以讓項目組在任一點上及時提交可以安裝的軟件包。這是持續集成最可看見的一個益處。我們可以無休止地討論改善軟件質量和減少風險,但是對用戶或者客戶來說,可以安裝的軟件包是最切實可行的
(4)使得項目更加透明
(5)建立項目信心
此外,張老師也認為持續集成也存在以下幾個方面的負作用:
a. 用于維護持續集成的費用比較高
這通常是一個被誤導的錯誤的理解,如論你是否使用持續集成,你依然需要集成,構建,測試,部署等工作。管理一個強壯的持續集成的系統比管理手動的過程更加高效率。
b. 太多的變更
一些開發組織需要改變已有的開發習慣和過程。
c. 太多失敗的構建
當開發人員不做個人構建之后,就將變更的代碼提交到版本控制庫,從而導致太多的構建失敗。
d. 額外的軟件和硬件成本
持續構建需要獨立的集成構建主機和持續集成軟件等,這些需要額外的成本。