《敏捷測試以持續測試促進持續交付》是2021年人民郵電出版社出版的圖書。
基本介紹
- 中文名:敏捷測試以持續測試促進持續交付
- 作者:朱少民,李潔
- 出版時間:2021年
- 出版社:人民郵電出版社
- ISBN:9787115560988
- 類別:程式設計
- 開本:16 開
- 裝幀:平裝
內容簡介,圖書目錄,作者簡介,
內容簡介
網際網路產品的快速疊代,讓敏捷開發在各個領域都得到了廣泛套用。同時,也加快了敏捷測試在各家企業落地生根的進程。
《敏捷測試:以持續測試促進持續交付》由測試領域老兵聯合10餘位測試專家對敏捷測試的實踐經驗匯總、整理而成。本書分為10章和4個附錄。從敏捷開發和敏捷測試基礎、人的因素、敏捷測試基礎設施、分析與計畫、設計與執行、測試右移、收尾與改進、展望等角度入手,幾乎涵蓋實現高效敏捷測試所需的各個方面的知識,以及測試思維、測試流程、測試基礎設施和一系列的優秀實踐,對提高測試效率進而提升產品交付質量具有重大的指導意義。
《敏捷測試:以持續測試促進持續交付》理論知識與實際案例深度結合,輔以思維導圖、延伸閱讀等模組,深入淺出,尤其適合有一定測試實踐經驗的軟體質量保障和測試人員,想要較為深入了解敏捷測試的專業人士閱讀參考。
圖書目錄
第 1 章 鋪墊:敏捷開發價值觀、原則與實踐/ 1
導讀/ 1
1.1 敏捷開發模式的由來/ 2
1.1.1 新產品開發方式Scrum / 3
1.1.2 輕量級軟體開發方法/ 5
1.1.3 敏捷宣言的誕生/ 6
1.2 敏捷價值觀/ 7
1.3 敏捷開發原則/ 8
1.4 常見的敏捷開發框架/ 9
1.4.1 極限編程/ 9
1.4.2 行為驅動開發/ 13
1.4.3 特性驅動開發/ 15
1.4.4 Scrum 開發框架/ 17
1.5 敏捷與看板、精益的關係/ 20
1.5.1 看板/ 21
1.5.2 精益軟體開發實踐/ 23
1.6 敏捷與DevOps 的關係/ 26
本章小結/ 29
延伸閱讀/ 29
第 2 章 基礎:敏捷測試之道/ 31
導讀/ 31
2.1 什麼是敏捷測試/ 32
2.1.1 從一個真實的案例說起/ 32
2.1.2 敏捷測試的含義/ 35
2.1.3 敏捷測試的其他定義/ 36
2.2 傳統測試與敏捷測試/ 38
2.2.1 鳳凰項目:一個IT 運維的傳奇故事/ 38
2.2.2 3 步工作法/ 39
2.2.3 鳳凰項目改造前後對比/ 40
2.2.4 傳統測試和敏捷測試的區別/ 41
2.3 敏捷測試的思維方式/ 41
2.3.1 固定性思維與敏捷思維/ 42
2.3.2 成長性思維/ 42
2.3.3 以實例來辨析不同思維的測試工程師/ 43
2.3.4 團隊對質量負責的思維/ 44
2.3.5 上下文驅動的思維與用戶思維/ 45
2.4 敏捷測試流程解析/ 45
2.4.1 Scrum 模式下的測試流程/ 45
2.4.2 敏捷測試的通用流程/ 47
2.4.3 敏捷測試流程閉環與持續測試/ 48
2.4.4 從敏捷項目管理角度來看測試流程/ 49
2.5 新的敏捷測試四象限/ 50
2.5.1 敏捷測試四象限之歷史/ 50
2.5.2 新的敏捷測試四象限簡介/ 52
本章小結/ 53
延伸閱讀/ 54
第3 章 人是決定性因素/ 55
導讀/ 55
3.1 敏捷團隊究竟要不要專職的測試人員/ 56
3.1.1 問題的提出及各方的理由/ 56
3.1.2 根據上下文來確定是否需要/ 58
3.1.3 存在即合理/ 59
3.2 配備專職敏捷測試人員時的操作/ 60
3.2.1 Etsy 公司的優秀實踐/ 60
3.2.2 敏捷測試人員的責任和具體任務/ 61
3.2.3 測試人員和開發人員的分工/ 63
3.2.4 測試敏捷化對團隊意味著什麼/ 64
3.3 沒有專職的測試人員時的操作/ 64
3.3.1 是否藉助灰度發布和一鍵回滾/ 65
3.3.2 消除系統測試不足帶來的影響/ 66
3.3.3 加強敏捷驗收測試和ATDD 的實踐/ 67
3.3.4 應對其他挑戰/ 67
3.4 藉助測試負責人角色完成團隊轉型/ 68
3.4.1 冰凍三尺並非一日之寒/ 69
3.4.2 多數團隊不是Google / 70
3.4.3 測試負責人角色的責任和具體實踐/ 71
3.4.4 測試主負責人角色/ 72
3.5 如何創建有強烈質量意識的學習型團隊/ 73
3.5.1 達成質量共識/ 73
3.5.2 營造良好的質量文化氛圍/ 73
3.5.3 創建學習型團隊/ 74
3.5.4 業務學習與缺陷根因分析/ 76
3.6 如何更好地為測試而學/ 76
3.6.1 系統性思維訓練/ 77
3.6.2 創造性思維訓練/ 79
3.6.3 如何提升測試自動化能力/ 80
3.6.4 如何學習測試建模/ 80
3.6.5 借力提升自己/ 81
3.7 如何與產品、開發等角色協作/ 82
3.7.1 團隊協作的五大障礙/ 82
3.7.2 團隊協作高於一切/ 84
3.7.3 達成對質量及其管理的共識/ 85
3.7.4 溝通的技巧/ 86
本章小結/ 87
延伸閱讀/ 87
第4 章 構建強大的敏捷測試基礎設施/ 89
導讀/ 89
4.1 持續集成與持續交付意味著什麼/ 90
4.1.1 敏捷的目標/ 91
4.1.2 持續集成中的測試活動/ 91
4.1.3 持續交付中的測試活動/ 93
4.1.4 持續集成 持續測試是關鍵/ 94
4.1.5 持續部署/ 95
4.1.6 持續運維/ 95
4.2 測試如何融入持續集成/ 持續交付環境/ 95
4.2.1 支撐持續集成的測試環境/ 96
4.2.2 支撐持續交付的測試環境/ 96
4.2.3 CI/CD 流水線中的測試過程/ 97
4.3 基於DevOps 的測試基礎設施構成/ 99
4.3.1 DevOps 的測試/ 100
4.3.2 DevOps 測試基礎設施/ 101
4.3.3 基礎設施即代碼/ 103
4.3.4 對基礎設施進行驗證——Testinfra / 104
4.4 虛擬機技術與容器技術的套用/ 105
4.4.1 虛擬化技術——虛擬機技術和容器技術/ 106
4.4.2 Sidecar 模式——容器的設計模式/ 107
4.4.3 虛擬化技術之NUMA 和DPDK / 108
4.4.4 服務虛擬化的利器——Hoverfly / 109
4.4.5 Molecule——虛擬化技術的自動化測試工具/ 111
4.4.6 Kubernetes 與測試環境/ 112
4.5 如何完成自動部署/ 113
4.5.1 配置即代碼——CI 配置管理工具:Ansible、Chef / 114
4.5.2 微服務的容器化部署/ 116
4.5.3 微服務在CI 環境中的自動化部署/ 117
4.5.4 Docker 容器的集群管理之Kubernetes / 119
4.5.5 基礎架構即代碼的工具——Terraform、CloudFormation / 122
4.5.6 管道即代碼的工具——Concourse、Drone / 123
4.5.7 新一代的部署體驗——Serverless 軟體系統架構/ 125
4.5.8 產品發布之導流模式/ 125
4.6 如何完成全自動的BVT / 126
4.6.1 BVT 要驗證哪些點/ 126
4.6.2 不穩定的情況——Flaky / 128
4.7 自動的靜態測試和測試報告生成/ 130
4.7.1 代碼分析(靜態測試)/ 130
4.7.2 優秀的靜態測試工具/ 131
4.7.3 靜態測試報告的自動生成/ 131
4.7.4 自動化測試報告的自動生成/ 135
4.8 測試分層策略與金字塔模型/ 139
4.9 搭建敏捷自動化測試框架及其案例分析/ 140
4.9.1 自動化測試框架的構成/ 140
4.9.2 自動化測試框架的分類/ 142
4.9.3 單元測試框架JUnit 5 / 143
4.9.4 API 層的TA 測試框架Karate / 144
4.9.5 驗收測試框架Ginkgo / 146
本章小結/ 148
延伸閱讀/ 149
第5 章 測試左移更體現敏捷測試的價值/ 150
導讀/ 150
5.1 沒有ATDD,就沒有用戶故事的可測試性/ 151
5.1.1 可測試性的概念/ 151
5.1.2 需求、設計和代碼等不同層次的可測試性/ 152
5.1.3 用戶故事的可測試性和ATDD / 153
5.1.4 ATDD 與TDD( UTDD)的關係/ 154
5.1.5 如何具體實施ATDD / 156
5.2 產品價值分析:商業畫布、影響地圖與用戶故事地圖/ 156
5.2.1 產品價值是基礎/ 157
5.2.2 商業畫布/ 158
5.2.3 影響地圖/ 160
5.2.4 用戶故事地圖/ 161
5.3 從Epic 到用戶故事完成需求評審/ 162
5.3.1 通用的評審標準/ 163
5.3.2 Epic 的評審/ 164
5.3.3 用戶故事的評審/ 166
5.4 不可忽視的設計評審/ 169
5.4.1 設計評審的價值和重要性/ 170
5.4.2 如何完成架構評審/ 170
5.4.3 有層次的(組件)評審/ 172
5.4.4 接口定義的評審/ 173
5.4.5 設計的可測試性/ 173
5.5 BDD 及其自動化實踐/ 174
5.5.1 什麼是BDD / 174
5.5.2 BDD 和測試的關係/ 175
5.5.3 現有的BDD 自動化測試框架/ 177
5.5.4 BDD 實例/ 179
5.5.5 BDD 實踐中的常見問題/ 183
5.6 再進一步,讓實例化需求落地/ 183
5.6.1 什麼是實例化需求/ 183
5.6.2 實例化需求的過程/ 185
5.6.3 RBE 的自動化實現/ 190
5.7 單元測試是否必須TDD / 191
5.7.1 為何TDD 是必需的/ 191
5.7.2 如何做好TDD / 192
5.7.3 UTDD 測試原則/ 193
5.7.4 UTDD 的具體實踐/ 194
本章小結/ 195
延伸閱讀/ 196
第6 章 敏捷測試的分析與計畫/ 197
導讀/ 197
6.1 基於上下文驅動思維的測試分析/ 198
6.1.1 上下文驅動測試流派/ 198
6.1.2 質量標準/ 201
6.1.3 項目背景/ 202
6.1.4 產品元素/ 204
6.2 如何培養自己的業務與用戶體驗分析技能/ 205
6.2.1 用戶思維/ 205
6.2.2 場景是測試需求的靈魂/ 206
6.2.3 業務分析/ 207
6.2.4 用戶體驗要素/ 208
6.3 敏捷測試的主要風險在哪裡/ 209
6.3.1 需求不清晰/ 210
6.3.2 需求頻繁變更/ 211
6.3.3 時間太緊張/ 211
6.3.4 自動化測試的有效性/ 212
6.3.5 測試風險項目檢查表/ 212
6.3.6 風險控制/ 213
6.4 啟發式測試策略與測試策略的制定/ 215
6.4.1 什麼是測試策略/ 215
6.4.2 啟發式測試策略模型/ 216
6.4.3 快速、高效地制定測試策略/ 218
6.5 代碼依賴性分析與精準測試/ 220
6.5.1 精準測試/ 221
6.5.2 如何建立測試用例和代碼的映射關係/ 222
6.5.3 代碼依賴性分析/ 223
6.5.4 代碼的變更分析/ 225
6.5.5 測試用例集如何最佳化/ 225
6.5.6 優秀實踐/ 226
6.6 敏捷測試要不要計畫/ 227
6.6.1 測試計畫的價值/ 227
6.6.2 一頁紙的測試計畫/ 228
6.6.3 如何編寫一頁紙的測試計畫/ 229
6.7 探索式測試與基於腳本的測試/ 232
6.7.1 什麼是探索式測試/ 232
6.7.2 探索式測試的套用場景/ 233
6.7.3 基於腳本的測試/ 234
6.7.4 探索式測試與基於腳本的測試的比較/ 235
6.7.5 敏捷擁抱探索式測試/ 236
6.8 SBTM 的由來及使用/ 237
6.8.1 SBTM 的由來/ 237
6.8.2 真正理解會話/ 237
6.8.3 測試計畫分解成多個子目標/ 239
6.8.4 測試子目標進一步分解為會話/ 240
6.9 一個套用SBTM 的真實案例/ 241
6.9.1 案例背景/ 241
6.9.2 挑戰在哪裡/ 242
6.9.3 測試子目標分解的結果/ 242
6.9.4 幾個典型的會話/ 243
6.9.5 會話表/ 246
6.9.6 口頭匯報/ 247
6.10 敏捷測試分析與計畫的案例/ 248
6.10.1 信息收集/ 249
6.10.2 測試目標/ 249
6.10.3 通過測試分析得到測試範圍/ 250
6.10.4 根據測試分析進行風險分析和控制/ 251
6.10.5 基於風險的測試策略/ 252
6.10.6 測試計畫/ 253
本章小結/ 254
延伸閱讀/ 255
第7 章 敏捷測試的設計與執行/ 256
導讀/ 256
7.1 正確理解DoD 與敏捷中的驗收測試/ 257
7.1.1 什麼是DoD / 257
7.1.2 如何創建DoD / 258
7.1.3 DoD 和敏捷驗收測試的關係/ 260
7.1.4 如何驗證DoD / 261
7.2 如何將用戶故事轉化為測試用例/ 261
7.2.1 轉換為場景/ 262
7.2.2 場景離測試用例還差一步/ 263
7.2.3 用戶故事轉化為測試用例的模型/ 263
7.3 基於場景/ 事件流的測試用例設計/ 265
7.3.1 事件流圖/ 265
7.3.2 在敏捷測試中的套用/ 266
7.3.3 狀態圖與有限狀態機/ 268
7.4 探索式測試過程與生態/ 270
7.4.1 調查、分析、排序和實驗/ 270
7.4.2 以分析為中心/ 270
7.4.3 自我管理環、學習環/ 271
7.4.4 協作環與測試環/ 272
7.5 探索式測試中的角色扮演與場景挖掘/ 272
7.5.1 批判性思維與探索式測試設計執行/ 272
7.5.2 角色扮演/ 273
7.5.3 場景挖掘/ 274
7.6 探索式測試的具體技巧/ 276
7.6.1 業務路徑測試/ 277
7.6.2 遍歷測試/ 279
7.6.3 極限情況的測試/ 279
7.6.4 異常情況的測試/ 280
7.7 測試自動化設計模式:一步到位/ 280
7.7.1 基於模型的自動化測試/ 281
7.7.2 狀態圖生成測試用例/ 281
7.7.3 測試數據的自動生成/ 284
7.8 UI 腳本開發與維護的常用技巧/ 287
7.8.1 腳本語言和測試框架的選擇/ 287
7.8.2 UI 元素定位/ 288
7.8.3 測試代碼的模組化和參數化/ 291
7.8.4 Selenium 集成自動化測試框架/ 293
7.8.5 Page Object 設計模式/ 295
7.8.6 隱式等待/ 296
7.9 質效合一:自動化測試和手工測試的完美融合/ 296
7.9.1 一個關於測試策略的案例/ 296
7.9.2 新功能手工測試,回歸測試自動化/ 297
7.9.3 探索未知的,自動化已知的/ 299
7.9.4 自動化回歸測試怎么做/ 300
7.10 優先實現面向接口的測試/ 300
7.10.1 接口(API)測試越來越重要/ 301
7.10.2 接口測試示例/ 301
7.10.3 如何獲取接口信息/ 304
7.10.4 契約測試和微服務的接口測試/ 306
7.10.5 API 持續測試平台:API Fortress / 308
本章小結/ 308
延伸閱讀/ 309
第8 章 測試右移:從敏捷到DevOps / 310
導讀/ 310
8.1 線上性能測試/ 311
8.1.1 全鏈路壓測/ 311
8.1.2 線上性能監控/ 313
8.1.3 流量回放技術/ 314
8.2 A/B 測試/ 316
8.2.1 什麼是A/B 測試/ 316
8.2.2 A/B 測試的設計/ 317
8.2.3 A/B 測試平台與測試執行/ 319
8.2.4 關於用戶體驗的度量/ 320
8.3 監控告警系統/ 321
8.3.1 日誌分析及Elastic Stack 的使用/ 323
8.3.2 調用鏈分析及SkyWalking 的使用/ 324
8.3.3 指標監控及Prometheus 的使用/ 327
8.3.4 監控系統解決方案/ 329
8.4 安全性監控/ 330
8.5 混沌工程/ 331
8.5.1 混沌工程的由來/ 332
8.5.2 基於故障注入的測試/ 333
8.5.3 混沌工程平台與工具/ 334
8.5.4 混沌工程的具體實施/ 336
8.5.5 為系統彈性做好設計/ 337
8.6 智慧型運維與測試/ 340
8.6.1 從自動化運維到智慧型運維/ 340
8.6.2 智慧型運維的典型場景/ 341
本章小結/ 342
延伸閱讀/ 343
第9 章 敏捷測試的收尾與改進/ 344
導讀/ 344
9.1 如何分析測試結果和評估測試工作的質量/ 345
9.1.1 如何評估敏捷測試過程/ 345
9.1.2 敏捷測試過程的度量體系/ 346
9.1.3 測試工作質量的分析/ 348
9.1.4 代碼覆蓋率/ 348
9.1.5 功能覆蓋率/ 349
9.1.6 業務覆蓋率/ 349
9.1.7 基於缺陷分析測試質量/ 350
9.2 如何獲得良好的可追溯性、可視化/ 350
9.2.1 測試管理系統/ 351
9.2.2 需求與測試用例的映射關係,以及測試用例與缺陷的映射關係/ 352
9.2.3 示例:Jira Zephyr 實現可追溯性/ 353
9.2.4 測試與質量度量的可視化/ 355
9.2.5 質量雷達圖/ 357
9.3 敏捷測試優秀實踐/ 357
9.3.1 微軟的優秀實踐/ 358
9.3.2 谷歌的優秀實踐/ 359
9.3.3 亞馬遜的優秀實踐/ 360
9.3.4 ThoughtWorks 的優秀實踐/ 361
9.3.5 騰訊的優秀實踐/ 364
9.3.6 阿里巴巴的優秀實踐/ 365
9.4 敏捷過程的反思與持續改進/ 366
9.4.1 敏捷過程的反思/ 367
9.4.2 敏捷測試過程的改進分析/ 368
9.4.3 數據驅動改進/ 369
9.4.4 PDCA 循環/ 369
9.4.5 根因分析/ 371
本章小結/ 372
延伸閱讀/ 372
第 10 章 敏捷測試的展望/ 374
導讀/ 374
10.1 大數據的測試/ 375
10.1.1 大數據的特性與挑戰/ 376
10.1.2 大數據的測試方法/ 378
10.1.3 大數據的測試實踐/ 380
10.1.4 大數據的測試工具/ 381
10.2 人工智慧系統的測試/ 382
10.2.1 人工智慧系統的不確定性和不可解釋性/ 383
10.2.2 人工智慧系統的白盒測試/ 384
10.2.3 人工智慧系統的算法驗證/ 386
10.2.4 示例:針對智慧型語音的設計與執行/ 388
10.3 人工智慧助力敏捷測試/ 392
10.3.1 基於圖像識別技術的UI測試/ 392
10.3.2 基於人工智慧的、全自動化的API 測試/ 397
10.3.3 人工智慧助力代碼深度分析/ 399
10.3.4 人工智慧驅動測試/ 401
10.3.5 人工智慧測試工具/ 403
10.4 敏捷測試工具的未來/ 406
10.4.1 敏捷測試工具的發展趨勢/ 406
10.4.2 MBT 的前景如何/ 408
10.4.3 無代碼化的測試自動化/ 409
10.5 徹底實現持續測試/ 413
10.5.1 重新理解持續測試/ 414
10.5.2 持續測試的實現框架/ 415
10.5.3 持續測試成熟度模型/ 424
10.5.4 徹底的持續測試/ 425
本章小結/ 426
延伸閱讀/ 427
附錄A 基於Kubernetes 和Docker搭建Jenkins 可伸縮持續集成系統/ 428
導讀/ 428
A.1 工作流程圖/ 429
A.2 系統配置/ 429
A.3 安裝Kubernetes 集群/ 430
A.3.1 安裝前的準備/ 430
A.3.2 安裝配置/ 430
A.4 Harbor 的安裝部署/ 434
A.4.1 下載Harbor 離線安裝包/ 434
A.4.2 安裝Docker / 435
A.4.3 安裝Docker Compose / 435
A.4.4 Harbor 的安裝與配置/ 435
A.4.5 客戶端訪問Harbor 倉庫/ 436
A.5 採用Jenkins Pipeline 實現自動構建並部署至k8s / 438
A.5.1 部署Jenkins / 438
A.5.2 新建Spring Boot Java工程/440
A.5.3 配置Jenkins Pipeline任務/ 444
A.5.4 測試Pipeline 任務/ 446
A.5.5 遇到的問題及解決方法/ 449
附錄B 敏捷實踐發展史/ 451
附錄C 後敏捷時代暨DevOps發展史/ 461
附錄D 中國敏捷測試大事記/ 463
參考文獻/ 465
作者簡介
朱少民 國內知名測試專家、同濟大學特聘教授、軟體綠色聯盟標準評測組組長、《軟體學報》審稿人、QECon大會發起人。 近30年來,一直從事軟體測試、質量管理等工作,先後獲得安徽省、原機械工業部、青島市等多項科技進步獎,出版《全程軟體測試》《軟體測試方法和技術》《軟體質量保證和管理》《軟體項目管理》等10餘部著作。 近5年來,致力於幫助國內近百家企業提升其軟體研發能力水平,並經常在國內外學術會議或技術大會上發表演講,擁有個人公眾號“軟體質量報導”,曾任思科(中國)軟體有限公司QA(質量保證)高級總監,及IEEE ICST論壇主席、IEEE QRS和DSA、NASAC程式委員等。 李潔 中科創達軟體股份有限公司測試總監,曾任IBM研發經理,索尼瑞典分公司高級測試經理,諾基亞及Polycom QA總監。擁有20餘年軟體測試技術經驗及管理經驗。在測試專業雜誌發表過多篇文章。