敏捷測試 : 以持續測試促進持續交付

朱少民 李潔

  • 出版商: 人民郵電
  • 出版日期: 2021-08-01
  • 定價: $779
  • 售價: 8.5$662
  • 語言: 簡體中文
  • 頁數: 467
  • 裝訂: 平裝
  • ISBN: 7115560986
  • ISBN-13: 9787115560988
  • 相關分類: 軟體測試CI/CD
  • 下單後立即進貨 (約4週~6週)

  • 敏捷測試 : 以持續測試促進持續交付-preview-1
  • 敏捷測試 : 以持續測試促進持續交付-preview-2
敏捷測試 : 以持續測試促進持續交付-preview-1

買這商品的人也買了...

商品描述

互聯網產品的快速迭代,讓敏捷開發在各個領域都得到了廣泛應用。同時,也加快了敏捷測試在各家企業落地生根的進程。

《敏捷測試:以持續測試促進持續交付》由測試領域老兵聯合10餘位測試專家對敏捷測試的實踐經驗匯總、整理而成。本書分為10章和4個附錄。從敏捷開發和敏捷測試基礎、人的因素、敏捷測試基礎設施、分析與計劃、設計與執行、測試右移、收尾與改進、展望等角度入手,幾乎涵蓋實現高效敏捷測試所需的各個方面的知識,以及測試思維、測試流程、測試基礎設施和一系列的優秀實踐,對提高測試效率進而提升產品交付質量具有重大的指導意義。

《敏捷測試:以持續測試促進持續交付》理論知識與實際案例深度結合,輔以思維導圖、延伸閱讀等模塊,深入淺出,尤其適合有一定測試實踐經驗的軟件質量保障和測試人員,想要較為深入瞭解敏捷測試的專業人士閱讀參考。

作者簡介

朱少民
國內知名測試專家、同濟大學特聘教授、軟件綠色聯盟標準評測組組長、《軟件學報》審稿人、QECon大會發起人。
近30年來,一直從事軟件測試、質量管理等工作,先後獲得安徽省、原機械工業部、青島市等多項科技進步獎,出版《全程軟件測試》《軟件測試方法和技術》《軟件質量保證和管理》《軟件項目管理》等10餘部著作。
近5年來,致力於幫助國內近百家企業提升其軟件研發能力水平,並經常在國內外學術會議或技術大會上發表演講,擁有個人公眾號“軟件質量報導”,曾任思科(中國)軟件有限公司QA(質量保證)高級總監,及IEEE ICST論壇主席、IEEE QRS和DSA、NASAC程序委員等。


李潔
中科創達軟件股份有限公司測試總監,曾任IBM研發經理,索尼瑞典分公司高級測試經理,諾基亞及Polycom QA總監。
擁有□0餘年軟件測試技術經驗及管理經驗。在測試專業雜誌發表過多篇文章。

目錄大綱

第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與敏捷中的驗收測試/ 2 57
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調查、分析、排序和實驗/ 2 70
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腳本語言和測試框架的選擇/ 2 87
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 222的優秀實踐/ 360
9.3.4 ThoughtWorks的優秀實踐/ 361
9.3.5騰訊的優秀實踐/ 364
9.3.6 222 2的優秀實踐/ 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

2 2 0章敏捷測試的展望/ 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