書名: 構建高質量軟件:持續集成與持續交付系統實踐作者名: 心藍本章字數: 1285字更新時間: 2021-10-09 14:32:55
前言
為什么寫這本書
技術在變,市場在變,需求在變,用戶的訴求在變,一切都在快速變化著。因此,在某個固定時間進行軟件發布的傳統作業方式已經遠遠無法適應當下急速變化的世界。
越來越多的公司和團隊在追求以最快的速度交付軟件,像谷歌這樣的互聯網頂級公司甚至在幾分鐘之內就可以提交一個“具備交付能力的”軟件版本,而國內的阿里則能夠在一小時以內發布一整套全量功能的淘寶、天貓商城為用戶服務。
“快”的前提是高質量的交付,而高質量的交付則離不開一套穩健的持續(continuous)環境。所謂的持續,并不是一直運行(always running),而是具備持續運行(always ready to run)的能力。因此,基于“持續”概念衍生出了持續集成(CI)、持續交付和持續部署(CD)等工程實踐,在每一個細分領域中又誕生了琳瑯滿目的工具和工具組合,如圖0-1所示。

圖0-1 工具和工具組合
如何在如此之多的工具中挑選出合適的工具集來構建自己的“持續”環境呢?這正是本書所要解決的問題。只有真正理解了什么是持續集成、持續交付和持續部署,才能理解單元測試、功能測試,以及集成環境中每一個環節的作用和重要性。
本書將從理論、最佳實踐的角度出發,為讀者介紹CI/CD環節中不同工具的使用和整合,使讀者能夠快速搭建起適合自己團隊的持續構建環境。
讀者對象
本書適合以下讀者:
- 從事軟件測試的人員
- Java程序開發者
- 從事Java系統架構的架構師
- 開設Java課程的專業院校和培訓機構
如何閱讀本書
本書包含四大部分,共10章。第一部分(第1~4章)主要圍繞如何提高軟件的開發質量和效率展開,詳細講述了單元測試的常用工具和最佳實踐,并給出了持續集成、持續交付、持續部署等概念;第二部分(第5~6章)詳細講解了兩個常用的mock工具——Mockito和Powermock,通過實例詳盡地講解了它們的語法規則和使用場景,目的是讓開發者在盡可能不修改軟件源代碼和程序結構的前提下確保軟件具備可測試性;第三部分(第7~8章)為讀者詳細講述了兩個行為驅動開發工具(功能測試)Concordion和Cucumber的使用,這兩個工具可以幫助我們很好地完成功能測試、驗收測試、回歸測試等工作;第四部分(第9~10章)綜合前面三部分的知識點,并引入代碼風格檢查、靜態代碼分析、第三方依賴安全性檢查、企業內部私服的原理和搭建、Ansible自動化軟件部署工具、Jenkins Pipeline等知識,構建了一個完整的CI/CD流程。
書中出現的代碼及工具均已上傳至GitHub,讀者可以下載參閱。
- 隨書代碼-I:https://github.com/wangwenjun/cicd
- 隨書代碼-II:https://github.com/wangwenjun/cicd-powermock
- Jenkins插件:https://github.com/wangwenjun/jenkins_plugins
- 綜合實例:https://github.com/wangwenjun/simple_application
- 綜合實例功能測試:https://github.com/wangwenjun/simple_application_acceptance
- Ansible相關腳本:https://github.com/wangwenjun/ansible_tutorial
勘誤和支持
由于作者的水平有限,編寫的時間也很倉促,書中難免會出現一些錯誤或者表述不準確的地方,懇請讀者批評指正。如果讀者在閱讀的過程中發現了問題,歡迎將寶貴意見發送到我的個人郵箱(532500648@qq.com),我真摯地期待著你的建議和反饋。
致謝
感謝機械工業出版社華章公司的楊繡國(Lisa)編輯,從選題立項到圖書命名,從大綱確定到內容剪裁,她都給了我很多意見和指導。
感謝我的家人,感激他們的陪伴和對我的支持。
感謝我的上一家公司——匯豐科技在我過去的七年中提供了如此優秀的平臺和環境,也讓我結識了一群可愛又可敬的同事。
最后感謝我的讀者,希望你們能夠快樂工作,認真生活。
謹以此書,獻給我最親愛的家人,以及眾多堅持在一線的開發者朋友。