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