構建高質量軟體:持續集成與持續交付系統實踐

《構建高質量軟體:持續集成與持續交付系統實踐》是2021年機械工業出版社出版的圖書。

基本介紹

  • 中文名:構建高質量軟體:持續集成與持續交付系統實踐
  • 出版時間:2021年9月1日
  • 出版社:機械工業出版社
  • ISBN:9787111690207
內容簡介,圖書目錄,

內容簡介

隨著DevOps的火熱,快速發布與交付軟體甚至隨時發布與交付已經成為度量軟體執行力的重要指標。但是,快速發布與交付的前提是軟體足夠健壯,開發人員開發的每一行代碼均可測試,可快速進行錯誤重現、定位並解決問題,且能以較低的成本進行回歸測試。
這是一本從開發人員視角來介紹如何交付高質量軟體產品的書,書中採用理論與實踐相結合的方式講述了持續集成、持續交付、持續部署三大開發實踐的生命周期,以及它們彼此的關係,裡面包含豐富的實戰案例、各類工具的使用技巧。
全書共10章,分為四大部分。
第一部分(第1~4 章)主要圍繞如何提高軟體的開發質量和效率展開,詳細講述了單元測試的常用工具和最佳實踐,並展開闡述了持續集成、持續交付、持續部署等概念。
第二部分(第5~6 章)詳細講解了兩個常用的mock工具——Mockito和Powermock,通過實例詳盡地講解了它們的語法規則和使用場景,目的是讓開發者在不修改軟體原始碼和程式結構的前提下儘可能確保軟體具備可測試性。
第三部分(第7~8 章)詳細講述了兩個行為驅動開發工具(功能測試)Concordion 和Cucumber,這兩個工具可以幫助我們很好地完成功能測試、驗收測試、回歸測試等工作。
第四部分(第9~10 章)綜合前面三部分的知識點,並引入代碼風格檢查、靜態代碼分析、第三方依賴安全性檢查、企業內部私服的原理和搭建、Ansible 自動化軟體部署工具、Jenkins Pipeline 等知識,幫助讀者構建完整的CI/CD 流程。

圖書目錄

【第一部分 提高軟體的開發質量及開發效率】
第1章 單元測試與TDD3
1.1 單元測試的定義3
1.2 單元測試的好處5
1.3 單元測試的FIRST原則6
1.4 JUnit最佳實踐10
1.5 測試驅動開發14
1.5.1 紅–綠–重構15
1.5.2 TDD工作流程16
1.5.3 TDD實踐17
1.6 本章總結26
第2章 Hamcrest:優雅強大的對象匹配器27
2.1 Hamcrest概述27
2.2 Hamcrest對象匹配器詳解34
2.2.1 org.hamcrest.core34
2.2.2 org.hamcrest.beans37
2.2.3 org.hamcrest.collection38
2.2.4 org.hamcrest.number41
2.2.5 org.hamcrest.text42
2.2.6 org.hamcrest.xml43
2.3 自定義對象匹配器44
2.4 REST-Assured的使用47
2.5 本章總結51
第3章 Git及Git工作流程52
3.1 快速上手Git53
3.2 檔案狀態生命周期及Git中的對象56
3.2.1 檔案狀態生命周期56
3.2.2 Git中的對象59
3.3 Git與本地倉庫64
3.3.1 add與commit命令64
3.3.2 log命令65
3.3.3 diff與blame命令65
3.3.4 Git的分支及操作66
3.3.5 stash命令69
3.3.6 reset命令70
3.3.7 標籤的操作73
3.3.8 “.gitignore”檔案的規則74
3.4 Git與遠程倉庫75
3.4.1 遠程倉庫的管理76
3.4.2 遠程倉庫的操作77
3.4.3 本地倉庫與遠程倉庫的其他協同操作78
3.5 Git的配置和別名操作81
3.5.1 Git的基本配置81
3.5.2 Git的別名82
3.6 Git工作流程82
3.7 本章總結85
第4章 持續集成與持續交付86
4.1 什麼是持續集成87
4.2 什麼是持續交付89
4.3 什麼是持續部署91
4.4 本章總結94
【第二部分 mock:構造測試對象的替身】
第5章 Mockito:熱門的mock工具97
5.1 mock技術97
5.2 快速上手Mockito98
5.2.1 引入Mockito98
5.2.2 測試用戶登錄99
5.3 創建mock“替身”對象實例104
5.3.1 四種mock方式104
5.3.2 深度mock108
5.4 Stubbing語法詳解111
5.4.1 when...thenReturn和doReturn...when語法111
5.4.2 doNothing...when語法112
5.4.3 when...thenThrow和doThrow...when語法115
5.4.4 when...thenAnswer和doAnswer...when語法117
5.4.5 多值返回的Stubbing語法117
5.4.6 級聯風格的Stubbing語法118
5.4.7 when...thenCallRealMethod和doCallRealMethod...when語法119
5.5 Spying詳解120
5.6 Argument對象匹配器詳解123
5.6.1 Argument對象匹配器在Stubbing語法中的使用123
5.6.2 自定義Argument對象匹配器125
5.6.3 集成Hamcrest中的對象匹配器126
5.7 Mockito Verify與ArgumentsCaptor127
5.7.1 Mockito Verify操作127
5.7.2 VerificationMode詳解130
5.7.3 ArgumentCaptor與@Captor132
5.8 InjectMocks134
5.9 Mockito對BDD風格的支持135
5.10 Mockito Inline136
5.11 本章總結138
第6章 Powermock詳解140
6.1 快速入門Powermock141
6.1.1 為什麼需要Powermock141
6.1.2 搭建Powermock環境141
6.1.3 Powermock入門143
6.2 Powermock如何通過mock操作局部變數145
6.3 Powermock如何通過mock操作靜態方法148
6.4 Powermock如何通過mock操作final修飾的類151
6.5 Powermock如何通過mock操作私有方法152
6.6 Powermock中的Spying154
6.7 Powermock與JaCoCo155
6.8 本章總結160
【第三部分 行為驅動開發】
第7章 Concordion:測試即文檔163
7.1 Concordion的開發流程164
7.2 搭建Concordion環境174
7.2.1 搭建Concordion基礎環境174
7.2.2 Concordion與Maven進行集成176
7.3 Concordion的指令詳解178
7.4 在Specification文檔中處理Java返回的結果183
7.4.1 簡單的數據類型183
7.4.2 複雜的數據類型188
7.5 table和list中的指令191
7.5.1 使用table標籤批量執行測試用例191
7.5.2 使用list標籤批量執行測試用例193
7.6 拾遺補漏194
7.7 本章總結196
第8章 Cucumber:熱門的行為驅動開發工具197
8.1 Cucumber簡介198
8.1.1 快速上手Cucumber199
8.1.2 Cucumber與IntelliJ IDEA集成204
8.1.3 Cucumber的執行流程207
8.2 Feature文檔的語法基礎:Gherkin208
8.2.1 什麼是Gherkin209
8.2.2 Gherkin語法基礎209
8.2.3 Gherkin中的注釋212
8.2.4 Gherkin對其他語系的支持213
8.3 Step Definitions詳解214
8.3.1 步驟的匹配215
8.3.2 通過正則表達式捕獲參數217
8.3.3 通過Cucumber表達式捕獲參數220
8.3.4 使用Java 8 Lambda表達式定義步驟方法223
8.3.5 Step Definitions的常見問題225
8.3.6 Cucumber中Step的執行過程227
8.4 Cucumber進階228
8.4.1 Background關鍵字228
8.4.2 Data Table229
8.4.3 Scenario Outline關鍵字233
8.4.4 Doc String 235
8.4.5 Tagging & Hooks236
8.5 CucumberOptions239
8.6 Cucumber整合Selenium進行Web自動化測試241
8.7 Cucumber功能測試報告246
8.8 本章總結248
【第四部分 遇見Jenkins】
第9章 Jenkins的基礎知識253
9.1 Jenkins的安裝及快速構建Job253
9.1.1 Jenkins的安裝253
9.1.2 Jenkins Job的快速構建258
9.2 配置Jenkins261
9.2.1 Jenkins的基本配置261
9.2.2 為Jenkins配置集群節點264
9.2.3 Jenkins外掛程式管理268
9.2.4 基於Role Strategy配置許可權270
9.2.5 構建Maven項目類型的Job272
9.3 Jenkins參數化及可視化構建274
9.3.1 參數化構建275
9.3.2 可視化構建280
9.4 Jenkins構建Pipeline Job282
9.4.1 Groovy Pipeline Script282
9.4.2 Jenkinsfile285
9.4.3 Blue Ocean286
9.5 本章總結288
第10章 基於Jenkins構建持續集成與持續交付290
10.1 Spring Boot開發RESTful套用291
10.1.1 搭建Spring Boot環境291
10.1.2 代碼檢查與分析295
10.1.3 基於測試驅動開發完成應用程式開發303
10.1.4 使用Cucumber開發自動化功能測試程式311
10.2 Nexus私服317
10.2.1 搭建Nexus私服318
10.2.2 私服倉庫配置319
10.3 RedHat Ansible326
10.3.1 Ansible的安裝326
10.3.2 Ad-hoc及Playbook簡介330
10.3.3 Ansible模板引擎jinjia2333
10.3.4 通過Playbook逐步完成軟體自動化部署335
10.4 創建Jenkins Pipeline343
10.4.1 創建CI/CD Jenkins Pipeline Job343
10.4.2 GitHub WebHook自動觸發Jenkins Job348
10.5 本章總結351

相關詞條

熱門詞條

聯絡我們