《持續(xù)交付發(fā)布可靠軟件的系統(tǒng)方法》讀書筆記
軟件構(gòu)成部分:可執(zhí)行的代碼、配置信息、運行環(huán)境、數(shù)據(jù)
- 不同環(huán)境下只進行一次編譯
- 對環(huán)境的任何修改都應(yīng)該作為配置信息管理,配置信息的更改都需要經(jīng)過測試
- 如果運行環(huán)境需要修改,則修改后的環(huán)境也需要進行測試。環(huán)境包括:操作系統(tǒng)配置、應(yīng)用程序依賴的軟件集、網(wǎng)絡(luò)配置及任何基礎(chǔ)設(shè)置、外部系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)發(fā)生變化,同樣需要經(jīng)過測試
反饋流程:指完全以自動化的方式盡可能地測試每一次變更
- 創(chuàng)建可執(zhí)行代碼的流程
- 單元測試
- 質(zhì)量檢測:測試覆蓋率以及其他與技術(shù)相關(guān)的度量項
- 功能測試驗收
- 性能、有效性、安全性等非功能測試
- 探索性測試,給客戶/最終應(yīng)用演示
自動化測試反饋
【commit階段】
- 運行速度快
- 盡可能全面,75%代碼庫覆蓋率
- 環(huán)境中立,相對生產(chǎn)環(huán)境簡單廉價
- 如果出現(xiàn)問題,絕不發(fā)布
【commit之后測試】 - 運行速度慢一些,適合并行執(zhí)行
- 即使有些測試問題,也可以發(fā)布應(yīng)用程序
- 運行環(huán)境盡可能與生產(chǎn)相同
不同版本、不同環(huán)境的配置放在版本控制中
- 開發(fā)人員都擁有自己的專屬開發(fā)環(huán)境
- 無論部署在什么目標環(huán)境都應(yīng)采用同一種部署方法
- 開發(fā)環(huán)境是特例,可以有多變性部署方法
軟件的交付原則
- 為軟件的發(fā)布創(chuàng)建一個可重復且可靠的過程
- 將幾乎所有的事情自動化(構(gòu)建、部署、測試、發(fā)布)
- 把所有的東西都納入版本控制(需求文檔、測試腳本、自動化測試用例、網(wǎng)絡(luò)配置腳本、部署腳本、數(shù)據(jù)庫創(chuàng)建、升級、回滾和初始化腳本、庫文件、應(yīng)用程序依賴的軟件集、工具鏈及技術(shù)文檔等)
- 找到流程中最痛苦的事情,并提交頻繁地進行:如果集成最痛苦,那應(yīng)在開始階段就不斷進行集成、測試;如果發(fā)布痛苦,每次提交并通過自動化測試后就進行發(fā)布
- 用戶故事只有到了已發(fā)布才算完成,交付成果屬于每個成員,交付前每個成員都為其負責
- 持續(xù)改進,交付過程中,整個團隊召開回顧會議,提出改進方向及方法,每個改進點應(yīng)該同一個人負責跟蹤,確保改進被執(zhí)行,下一次回顧會議,匯報結(jié)果。