Janet Gregory和Lisa Crispin此前所著的《敏捷軟件測試》開創了敏捷測試學科,而《深入敏捷測試整個敏捷團隊的學習之旅》則收錄了她們從那時起至今的所學所獲,旨在解決新出現的重大問題,與讀者分享不斷演進的敏捷實踐,解答敏捷測試人員曾追問的關鍵問題。
本書的見解極其深刻,列舉大量來自真實團隊的新實例,詳細描述如何根據自身環境調整敏捷測試策略,如何從經驗中學習并持續改善測試流程,如何將敏捷測試擴展到多個團隊以及克服自動化測試的弊端。你將發現敏捷測試已涵蓋以下新領域:企業、分布式團隊、移動/嵌入式系統、受管制環境、數據倉庫/BI系統和DevOps實踐。
讀者將從本書中收獲:
如何在團隊內澄清測試活動
與業務專家協作以確定高價值特性并交付正確功能
如何設計極可靠、易于維護的自動化測試
敏捷團隊成員們如何提高和擴展測試技能
計劃如何做到剛剛好,在小增量與大特性集和整個系統之間保持平衡
如何通過測試來識別和降低當前敏捷流程的相關風險,并預防缺陷
如何應對產品或組織環境中的挑戰
如何使用角色人物和旅程執行探索式測試
采用帶動全隊參與的探索式測試方法,基于會話或線索來管理測試規程
如何快速培養敏捷測試新手又不會給他們制造太大壓力
本書對敏捷測試進行了深入剖析,從企業文化、工具、方法、原則到角色和過程,提供了大量來自工作現場的優秀實例和故事,清晰展現了成功敏捷測試人員需要具備的所有技能。不論你是測試人員、開發人員、業務人員還是項目經理,相信本書都將成為你重要的工作手冊來指導你更好地在敏捷團隊中發揮作用。而如果你是一名尋求理解自身角色的敏捷測試人員,我認為本書是*適合你的教材
這本書是我們第一本書《敏捷軟件測試:測試人員與敏捷團隊的實踐指南》的延續。我們避免重復在第一本書中已經涵蓋的內容,但也提供了足夠的背景信息,即使你沒有讀過《敏捷軟件測試》也能夠理解這本書。當我們覺得值得讀者多了解一些基本概念的相關信息時,我們會提到第一本書中的內容。這本書為誰而寫?我們假定閱讀這本書的你,并非敏捷測試世界的初學者,而是已經有一些敏捷和測試的經驗,正在尋求那些敏捷測試已超出領域的幫助。如果你感覺你自己需要在讀這本書之前,先了解敏捷開發和敏捷下做測試的一些基礎知識,《敏捷武士》(2010年,作者Rasmussen)是個很優秀的入門之選。這本書適用于任何對敏捷團隊的測試活動感興趣的人。基于我們的經驗,這不只包括測試人員和測試經理,也包括程序員、產品負責人、業務分析師、DevOps實踐者、直線經理,差不多就是所有人。接收測試除了分享過去這些年的所學,我們想讓這本書也像我們第一本書那樣對讀者有用。我們想知道,讀者們在讀過第一本書之后還需要知道些什么,于是就要求敏捷測試郵件組的實踐者們把他們對第二本書的接收測試發給我們。我們把這些回復提取成本書的一組接收測試,并在寫書時努力滿足這些預期。你會發現,我們采取了BDD(行為驅動開發)的風格,我們會在第11章進行探討:假定<前提條件>,如果<觸發、行為>,那么<預期結果>● 假定我是一名敏捷測試人員或測試經理,如果我要招募沒有敏捷經驗的新測試人員,那么我就要學會如何讓他們盡快上手,并避免沒給救生衣就把他們扔進深水區。● 假定我是敏捷團隊一員,如果我讀完了這本書,那么我就能知道怎么把探索式測試融入自動化測試,并能了解整體的測試覆蓋情況,而不必求助重型工具。● 假定我是一名經驗豐富的敏捷測試經理,如果我讀完了這本書,那么我就理解如何將敏捷測試技術運用于多個團隊,從而幫助我成功的敏捷組織繼續成長。● 假定我是一名經驗豐富的測試經理,如果我讀完了這本書,那么我就能學到協調多個迭代和團隊的測試自動化活動的辦法和改進的思路。● 假定我是一名經驗豐富的敏捷經理,如果我讀完了這本書,那么我就能理解其他團隊如何調整敏捷測試實踐以適應他們自己的環境,并能知道如何將它們運用于我的團隊。● 假定我是對測試感興趣的一名敏捷團隊成員,如果我讀完了這本書,那么我能舉例來說測試應該是怎樣的、不應該是怎樣的,以及怎樣有效地設計測試。● 假定我是一名經驗豐富的敏捷測試人員,如果我發現想要深入了解書中的某些有趣話題,那么我能輕易找到參考用的網絡資源或其他書籍。● 假定我是正在閱讀此書的一名經驗豐富的敏捷教練或經理,如果我看到一個可能對我團隊有幫助的概念,那么我能有足夠的信息可以制定出策略讓團隊進行實驗嘗試。● 假定我是關注著測試和客戶知情權的一名敏捷團隊成員,如果我讀完了這本書,那么我將學到跟客戶團隊成員溝通測試活動的好辦法。● 假定我是一名經驗豐富的測試經理,如果我讀完了這本書,那么我就能在有測試人員應聘我們團隊職位時知道他們組織測試人員的工作環境(注意:這個接收測試并不屬于這次發布版本的內容,但我們認為書中的某些例子和故事有助于達成此測試)。如何閱讀這本書盡管我們自認為是按照最順暢的方式組織了這本書,但你無須非得從第1章開始往后讀。跟《敏捷軟件測試》一樣,你可以選擇任何對你最有用的章節開始讀。我們嘗試做到每個話題只詳細介紹一次,但因為這些概念、實踐和原則大多數都是相互關聯的,你會發現有些內容在多個章節里都有提及。第Ⅰ部分:簡介閱讀這部分可以理解敏捷團隊中測試始于何處,又是如何演進成為產品的敏捷開發和持續交付的基石。成功敏捷開發的一部分,就是組織學會取得敏捷測試長期成功的關鍵因素的能力。● 第1章敏捷測試有了什么樣的發展● 第2章組織文化的重要性第Ⅱ部分:為更好地測試而學習不管是測試的技術還是工藝,都在不斷地演進,而不同職能之間的界限也在變得越來越模糊。即便是經驗豐富的實踐者也必須不斷地增長自己的技能。這一部分包含了測試人員和業務分析師、編碼員等其他職能面對更難測試挑戰所需要知道的內容。我們解釋了泛才化專家的優勢,并列出了一些能夠幫助測試人員和團隊提升的無形的思考技能和特定的技術性測試技能。如下章節涵蓋了學習的對象和方法的不同方面:● 第3章角色和能力● 第4章測試的思維技能● 第5章技術意識● 第6章如何學習第Ⅲ部分:計劃 不要忘了全局計劃僅夠是一種尋找平衡的行為。當我們需要基于小增量開展工作時,我們必須留意更大的特性集以及整個系統。這部分涵蓋了測試規劃的不同方面,從發布級別向下一直到任務級別。它還探討了不同模型,例如敏捷測試象限,以及人們建議的一些改版。● 第7章計劃的精度層級● 第8章使用模型幫助制定計劃第Ⅳ部分:商業價值的測試如果你們也跟諸多敏捷團隊一樣,及時地交付可靠代碼,只為能發現它是否真是客戶想要的,那么這部分的內容就能幫到你。我們涵蓋了工具和實踐,尤其是來自敏捷業務分析專業領域的那一部分,幫助你盡早地驗證想法和假設、確保所有人都知道要交付什么。我們還涉及了其他重疊的職能以及擴展的思維。這是一個很大的領域,所以分為好幾個章節:● 第9章你在做正確的產品嗎?● 第10章拓展型測試人員的思維:這是我的工作嗎?● 第11章獲取實例第Ⅴ部分:研究型測試程序員已經提交了一些代碼可供測試。你從哪里開始?如果你或你們團隊缺少探索式測試的經驗,那么可以在這里找到幫助。我們列出了一些探索式技術,例如使用用戶角色人物和探測來輔助產生測試章程的思路,以及使用基于會話的測試管理和基于線程的測試管理來管理這些章程。除了這些探索式測試的不同做法,我們還考慮了驗證已交付代碼是否滿足一大波業務和用戶需求的其他一些方式。這部分涵蓋了采用多種不同類型測試降低風險和產生有效信息的方式,以協助團隊應對這些挑戰。研究型測試的章節包括:● 第12章探索式測試● 第13章其他類型的測試第Ⅵ部分:測試自動化我們看到越來越多的團隊在設法想要做成測試自動化。然而,對于多數團隊來說,自動化測試產生的那些偶發性失敗調查起來是非常耗時的。花費在每個失敗上的時間(成本)可能遠超過測試本身的價值。自動化測試的陷阱非常多。這部分我們舉例說明了讓測試的技術債可視化的方法。我們探討了可有效利用測試金字塔的不同方式,協助你思考如何規劃自動化。我們介紹了幾個從不同的視角看待自動化的備選金字塔模型。你將學到圍繞最佳可靠性和維護簡易性設計自動化測試的方法。這部分也列舉將測試自動化擴展到一家大型企業全公司范圍的實例。第Ⅵ部分的章節包括:● 第14章測試中的技術債● 第15章自動化金字塔● 第16章測試自動化設計模式和方法● 第17章選擇測試自動化方案第Ⅶ部分:你的環境是什么?你們的敏捷測試方式必然取決于你們的環境上下文。你在為大型企業級系統工作嗎?或許你是新接手移動應用或嵌入式軟件的測試。或許你們團隊被要求要找到好辦法去測試支持業務做出決策的數據。你是否也曾糾結過敏捷如何適用于測試受監管軟件?最終,我們還探討了測試和DevOps運動的協同。這部分的章節涵蓋的領域很廣泛,所以我們也講述了一些來自于工作在這些領域的人們的故事。有些章節可能不一定適用于你今天的工作環境,但明天呢,誰知道呢?● 第18章企業級敏捷測試● 第19章分布式團隊的敏捷測試● 第20章移動和嵌入式系統的敏捷測試● 第21章監管環境中的敏捷測試● 第22章數據倉庫和商業智能系統的敏捷測試● 第23章測試和DevOps第Ⅷ部分:實踐中的敏捷測試作為本書的收尾,我們探討了團隊如何可視化質量和測試,并對那些能增強你們信心做出發布決定的敏捷測試實踐進行了總結。建立團隊的共同愿景是成功的關鍵,我們還分享了有助于將測試活動帶入整個團隊的一個模型。如果你感覺有點不知所措,不確定該從哪里開始看,那就先閱讀這些章節吧:● 第24章可視化你的測試● 第25章綜述此書有兩篇附錄:附錄APage對象實戰實例;附錄B誘導初學者。其他元素考慮到團隊使用的敏捷實踐和方法的范圍非常廣,我們試著盡可能使用通用術語。為確保我們跟你有共同語言,我們還提供了所用術語的術語表。你會發現書中某些書頁邊緣有一些小圖標,那是我們想要吸引你注意某個特定的實踐。在第1章和第25章,你能找到所有六種圖標。在下一段落的邊上,你就能看到表示學習的圖標。我們期待著你想要學習更多有關這些實踐、技術和工具的知識。請翻閱參考書目章節的參考書籍、網站、文章和博客。我們按對應的部分進行了編排,以便你在閱讀時能輕松地找到更多信息。書中直接提到的資源,都已按字母順序羅列在參考清單里,以便查閱。《敏捷軟件測試》的思維導圖概覽可從本書配書網站(www.agiletester.com)獲取,方便你在沒有讀過那本書的情況下,能大概知道它講了什么。實驗!好幾年前,Linda Rising鼓勵我們小步實驗、評估結果、持續迭代地解決問題,并達成目標。如果你發現書中有些內容講得不錯,可能對你或你們團隊有幫助,那就給它機會嘗試一兩個迭代。通過回顧來檢查它是否有幫助,必要的話,進行調整。即使它不起作用,你也會有所了解,然后可以再嘗試點不同的東西。我們祝愿你能夠從書頁之中發現很多可以嘗試的實驗。
Janet Gregory是敏捷質量流程咨詢和培訓公司DragonFire的創始人。Janet熱衷于幫助團隊構建高質量的系統。作為一名教練和測試人員,Janet近十五年來將敏捷實踐引入各種規模的公司,幫助用戶和測試人員理解他們的敏捷角色。Janet經常在敏捷和測試軟件會議上發表演講,是敏捷測試社區的一名主要貢獻者。 Lisa Crispin是一位經驗豐富的敏捷測試從業者和教練,她定期舉辦敏捷測試研討會,經常為敏捷軟件出版物撰稿。Lisa十分享受加盟優秀敏捷團隊與他人攜手構建高質量軟件的過程。從1982年至今,Lisa曾在多個行業的軟件團隊擔任多個角色。從2000年首次加入敏捷團隊開始,Lisa一直孜孜不倦地向其他團隊和從業者學習,不斷充實和提高自己的技術能力。
第Ⅰ部分 簡 介
第1章 敏捷測試有了什么樣的發展
3
第2章 組織文化的重要性 7
2.1 時間投入 8
2.2 學習型文化的重要性 11
2.3 培養學習型文化 11
2.4 透明度和反饋周期 13
2.5 教育組織 13
2.6 測試人員管理 15
2.7 總結 15
第Ⅱ部分 為更好地測試而學習
第3章 角色和能力 19
3.1 能力與角色 20
3.2
T型技能集 22
3.3 泛才化專家 26
3.4 招募正確的人才 28
3.5 測試人員的入職 29
3.6 總結 29
第4章 測試的思維技能 31
4.1 引導 32
4.2 問題解決 32
4.3 給予和接受反饋 33
4.4 學習業務領域知識 34
4.5 輔導和傾聽的技能 35
4.6 差異化思維 36
4.7 組織 37
4.8 協作 38
4.9 總結 39
第5章 技術意識 41
5.1 用示例指導開發 41
5.2 自動化和編碼技能 42
5.3 常規技術能力 43
5.4 開發環境 44
5.5 測試環境 44
5.6 持續集成和源碼控制系統
45
5.7 測試質量屬性 47
5.8 測試設計技術 48
5.9 總結 49
第6章 如何學習 51
6.1 學習方式 51
6.2 學習資源 53
6.2.1
大會、課程、聚會和協作 53
6.2.2
出版物、播客和在線社區 55
6.3 學習的時間 56
6.4 幫助其他人學習 58
6.5 總結 60
第Ⅲ部分 計劃不要忘了全局
第7章 計劃的精度層級 63
7.1 不同的觀點 63
7.1.1
產品版本層 64
7.1.2
特性層 66
7.1.3
故事層 69
7.1.4
任務級 69
7.2 回歸測試計劃 70
7.3 可視化你正在測試什么 70
7.4 總結 72
第8章 使用模型幫助制定計劃 73
8.1 敏捷測試象限 73
8.1.1
針對Q1測試的計劃 76
8.1.2
針對Q2測試的計劃 76
8.1.3
針對Q3測試的計劃 76
8.1.4
針對Q4測試的計劃 77
8.2 針對此象限的質疑 77
8.3 使用其他模型對計劃的影響
81
8.4 針對測試自動化的計劃 82
8.5 總結 83
第Ⅳ部分 商業價值的測試
第9章 你在做正確的產品嗎? 87
9.1 從為什么開始 87
9.2 客戶契約工具 88
9.2.1
影響地圖 88
9.2.2
故事地圖 90
9.2.3
7個產品維度 92
9.3 用于盡早探索的更多工具或
技術 95
9.4 在正確的事項上投資 95
9.5 總結 96
第10章 拓展測試人員的思維:這是我
的工作嗎? 97
10.1
這是誰的工作? 97
10.1.1
業務分析技能 97
10.1.2
用戶體驗設計能力 99
10.1.3
文檔技能 100
10.2
積極主動 100
10.3
總結 101
第11章 獲取實例 103
11.1
使用實例的威力 103
11.2
用實例指導開發 105
11.2.1
ATDD 106
11.2.2
BDD 108
11.2.3
SBE 108
11.3
在哪里獲取實例 109
11.4
使用實例的好處 111
11.5
使用實例的陷阱 112
11.5.1
陷入細節 112
11.5.2
缺乏投入 112
11.5.3
過多的回歸測試 113
11.5.4
還不夠清楚 113
11.6
使用實例去指導編碼的原理 113
11.7
總結 114
第Ⅴ部分 研究型測試
第12章 探索式測試 117
12.1
制定測試規程 119
12.2
形成測試規程思路 121
12.2.1
以人物角色進行探索 121
12.2.2
邊漫游邊探索 123
12.2.3
其他思路 124
12.3
測試規程管理 124
12.3.1
基于會話的測試管理 125
12.3.2
基于線索的測試管理 126
12.4
分組探索 129
12.5
記錄探索式測試會話的結果 131
12.6
敏捷測試的哪些地方適用
探索式測試 133
12.7
總結 134
第13章 其他類型的測試 135
13.1
如此多的測試需求 135
13.2
并發測試 137
13.3
國際化和本地化 138
13.4
回歸測試的挑戰 141
13.5
用戶驗收測試 142
13.6
A/B測試 142
13.7
用戶探索式測試 144
13.8
總結 145
第Ⅵ部分 測試自動化
第14章 測試中的技術債 149
14.1
使其可見 150
14.2
整個團隊共同解決最嚴重的
問題 153
14.3
總結 155
第15章 自動化金字塔 157
15.1
金字塔原型 157
15.2
替代形式的金字塔模型 158
15.3
放棄自動化測試的危險 161
15.4
使用金字塔去展示不同的
維度 163
15.5
總結 165
第16章 測試自動化設計模式和
方法 167
16.1
全員參與 167
16.2
正確的開始 168
16.3
設計原則和模式 169
16.3.1
通過API進行測試
(服務層) 169
16.3.2
通過用戶界面進行測試 171
16.4
測試維護 174
16.5
總結 176
第17章 選擇測試自動化方案 177
17.1
針對轉型團隊的解決方案 177
17.2
和整個團隊一起應對新的
自動化挑戰 180
17.3
團隊就自動化解決方案達成
共識 182
17.4
多少自動化才夠充分? 183
17.5
針對工具選擇的協作解決
方案 184
17.6
將自動化范圍擴大到大型
組織 185
17.7
其他自動化注意事項 187
17.8
總結 187
第Ⅶ部分 你的環境是什么?
第18章 企業級敏捷測試 193
18.1
我們所說的企業是指
什么? 193
18.2
擴展敏捷測試 194
18.3
協調多個團隊 198
18.4
一致的工具 202
18.4.1
通過持續集成進行協調 202
18.4.2
版本控制方法 203
18.4.3
測試覆蓋 204
18.5
依賴的管理 204
18.5.1
與第三方合作伙伴一起
工作 204
18.5.2
讓客戶參與到大型
組織中 206
18.6
沖出交付團隊之外的好處 207
18.7
總結 207
第19章 分布式團隊的敏捷測試
209
19.1
為什么不在同一地點? 211
19.2
共性的挑戰 211
19.2.1
文化問題 211
19.2.2
語言 212
19.2.3
時區 213
19.2.4
依賴 213
19.2.5
計劃 213
19.3
應對策略 215
19.3.1
整合團隊 215
19.3.2
溝通和協作 216
19.3.3
通過測試進行協作 217
19.4
近岸外包測試 218
19.5
分布式團隊工具思想 222
19.5.1
溝通工具 222
19.5.2
協作工具 222
19.6
總結 224
第20章 移動應用和嵌入式系統的
敏捷測試 225
20.1
相似,但不同 226
20.2
測試是關鍵 227
20.3
敏捷方法 228
20.4
總結 232
第21章 監管環境中的敏捷測試
233
21.1
缺乏文檔的神話 233
21.2
敏捷與合規性 233
21.3
總結 237
第22章 數據倉庫和商業智能系統的
敏捷測試 239
22.1
商業智能或數據倉庫的測試
有什么獨特性? 239
22.2
使用敏捷原則 241
22.3
數據關鍵資產 242
22.4
大數據 245
22.5
總結 247
第23章 測試和DevOps 249
23.1
DevOps簡介 249
23.2
DevOps和質量 250
23.3
測試人員如何增加DevOps的
價值 255
23.4
總結 258
第Ⅷ部分 實踐中的敏捷測試
第24章 可視化你的測試 263
24.1
溝通測試的重要性 263
24.2
針對持續改進的可視化 267
24.3
測試及測試結果的可視化 270
24.4
總結 271
第25章 綜述 273
25.1
增強信心的實踐 273
25.1.1
運用實例 274
25.1.2
探索式測試 275
25.1.3
特性測試 275
25.1.4
持續學習 276
25.1.5
環境制約 277
25.1.6
實事求是 278
25.2
營造共同的愿景 279
25.3
總結 281
附錄A Page對象實踐實例 283
附錄B 誘導初學者 289
術語表 291
參考資料 295
參考文獻 303