1 解析
部署流水線的目的:讓軟件交付過程中的每個人,都能通過可視化的角度查看每個代碼構(gòu)建版本從提交到發(fā)布的整個過程。大家應(yīng)該能夠看到哪次修改破壞了應(yīng)用程序,哪次修改可以作為候選發(fā)布版本進(jìn)入到手工測試環(huán)節(jié)或發(fā)布環(huán)節(jié)。它應(yīng)該能夠支持人們執(zhí)行到手工測試環(huán)境的一鍵式部署,并使大家能了解當(dāng)前每個環(huán)境中運(yùn)行的應(yīng)用程序究竟是哪個版本,還能夠支持一鍵式發(fā)布選定的某個版本,并清楚地標(biāo)識出這一候選發(fā)布版本已成功通過整個流水線,并在類生產(chǎn)環(huán)境中經(jīng)歷了一連串的自動化測試和手工測試。
2 構(gòu)建與部署腳本化
使用構(gòu)建和部署流程作為組建構(gòu)建和部署腳本集的一個指導(dǎo)。用迭代的方式來識別最令你痛苦的步驟,并將其自動化,沿著部署流水線,逐步完善自動化構(gòu)建和部署能力。要時刻牢記最終目標(biāo),即在開發(fā)、測試和生產(chǎn)環(huán)境中共享同一種部署機(jī)制,但不要過早地糾結(jié)于工具的創(chuàng)建。在制定和創(chuàng)建這些機(jī)制時,一定要運(yùn)維人員和開發(fā)人員一起做。
3 提交測試
提交測試應(yīng)該聚焦于一點(diǎn),即盡快地捕獲那些因修改向系統(tǒng)中引入的最常見錯誤,并通知開發(fā)人員,以便他們能快速修復(fù)它們。提交階段提供反饋的價值在于,對它的投入可以讓系統(tǒng)高效且更快地工作。
4 自動化測試(驗(yàn)收測試)
雖然維護(hù)自動化測試代碼比較高,但它為復(fù)雜的應(yīng)用程序在整個生命周期中的回歸問題提供了一個良好的防范性。它使我們能對系統(tǒng)安全地進(jìn)行大規(guī)模重構(gòu)。
5 非功能性需求
很多非功能需求的橫切本質(zhì)(crosscutting nature)意味著,很難管理它們給項(xiàng)目中帶來的風(fēng)險。常常導(dǎo)致這樣的局面:要不就是一開始一點(diǎn)都不做;要不就是過度預(yù)防。利用驗(yàn)收測試作為更廣泛的基于場景的非功能需求測試的起點(diǎn),做好非功能測試。
6 應(yīng)用程序的部署和發(fā)布
發(fā)布演習(xí)是降低程序發(fā)布風(fēng)險的最佳方法。越頻繁地將應(yīng)用程序發(fā)布到新的測試環(huán)境上,這個過程就越可靠,從而在生產(chǎn)環(huán)境上發(fā)布時遇到問題的可能性就越小。平時多練,上發(fā)布生產(chǎn)就是一件輕而易舉的事情。