本書分為三篇:第一篇為軟件測試實踐,介紹軟件測試的一些方法、工具化與自動化、各類專項測試、測試數(shù)據(jù)的管理等;第二篇聚焦于交付,探討了不同的交付模型,并對測試工作進行了解構,給出了制訂測試策略以及踐行精益軟件測試的方法;在第三篇中,作者分享了測試工作中的溝通與團隊協(xié)調、角色定位方面的經(jīng)驗,探討了測試工作相關的哲學與倫理等,并以測試策略的應用實戰(zhàn)和AI工具的應用探索作為收尾。
本書系統(tǒng)呈現(xiàn)了現(xiàn)代軟件測試策略的技術與方法論,可幫助測試人員、開發(fā)人員、產(chǎn)品經(jīng)理等構建或完善自己的測試策略,從而掌握破解各類測試困境的能力。
第一篇 軟件測試實踐
第1章 測試與測試設計 002
1.1 開始測試 002
1.2 完全測試? 003
1.2.1 EVP需求 004
1.2.2 形成bug根因清單 006
1.2.3 一個測試案例 007
1.3 軟件測試方法 013
1.3.1 快速測試:空降測試員 014
1.3.2 測試設計:輸入值覆蓋 016
1.3.3 等價類劃分與邊界值 018
1.3.4 決策表 021
1.3.5 決策樹 022
1.3.6 全對偶和結對測試 025
1.3.7 高容量自動化測試 028
1.3.8 其他測試方法 030
1.4 數(shù)據(jù)和可預測性:“先知”問題 031
1.5 本章回顧 033
第2章 工具與自動化的基本問題 034
2.1 技術要求 034
2.2 沒有銀彈 035
2.3 雷區(qū)回歸問題:覆蓋模型 036
2.4 海戰(zhàn)棋問題:測試VS檢查 039
2.4.1 將戰(zhàn)艦看作bug 040
2.4.2 自動化VS人工 041
2.5 維護問題 042
2.5.1 構建自動化測試 042
2.5.2 全面自動化測試的風險 046
2.6 成本問題 047
2.7 誰來做自動化測試? 047
2.7.1 何時能看到結果? 048
2.7.2 不被理解的自動化測試 049
2.8 自動化測試思想 049
2.9 本章回顧 051
第3章 面向開發(fā)人員測試 052
3.1 技術要求 052
3.2 開發(fā)人員視角 053
3.2.1 測試和可靠性 054
3.2.2 六邊形架構 054
3.3 FizzBuzz 056
3.4 單元測試 058
3.5 TDD 064
3.5.1 TDD編程 064
3.5.2 TDD編程結果 066
3.6 單元測試與單元代碼設計 067
3.7 變異測試 070
3.8 測試Web API 073
3.9 測試功能性代碼和遺留代碼 076
3.10 羅馬數(shù)字Kata 077
3.11 本章回顧 077
第4章 面向用戶測試 079
4.1 技術要求 079
4.2 一項警示 080
4.3 人?還是工具? 081
4.4 GUI自動化測試模式 082
4.4.1 使用特定領域庫消除重復 084
4.4.2 使用對象定位器消除重復 086
4.4.3 條件、循環(huán)結構和變量 086
4.4.4 斷言和圖像識別之間的取舍 090
4.5 設計自己的系統(tǒng) 091
4.5.1 引入實例化需求 092
4.5.2 實例化需求 095
4.6 低代碼和無代碼自動化測試 097
4.7 批處理與模型驅動測試自動化 098
4.8 本章是一個錯誤 100
4.9 本章回顧 101
第5章 專項測試 102
5.1 技術要求 102
5.2 負載測試和性能測試 102
5.2.1 負載測試基本知識 103
5.2.2 負載測試工具運用 104
5.3 安全測試 106
5.3.1 安全測試概念 106
5.3.2 常見的安全漏洞 107
5.3.3 了解行業(yè)標準 108
5.3.4 安全測試工具 108
5.4 無障礙性測試 109
5.4.1 什么是無障礙性? 109
5.4.2 倡導無障礙設計 110
5.4.3 無障礙性和包容性設計 111
5.4.4 了解WCAG標準 111
5.4.5 無障礙性測試工具 111
5.5 國際化和本地化 112
5.5.1 為國際化和本地化做準備 113
5.5.2 國際化和本地化工具 113
5.6 持續(xù)集成 114
5.6.1 CI和pipeline 114
5.6.2 測試人員參與構建管理 114
5.6.3 CI工具 115
5.7 合規(guī)測試 115
5.8 本章回顧 116
第6章 測試相關技術 117
6.1 技術要求 117
6.2 識別bug 118
6.2.1 軟件測試中的“先知” 119
6.2.2 非注意盲視與“先知” 120
6.2.3 關于bug一詞 122
6.3 編寫bug報告 122
6.3.1 有效的bug報告 123
6.3.2 有效的復現(xiàn)步驟 125
6.4 測試計劃和測試用例 128
6.5 度量與測量 130
6.6 項目預測 133
6.7 推動變革 134
6.8 總結信息 134
6.9 本章回顧 137
第7章 測試數(shù)據(jù)管理 138
7.1 技術要求 138
7.2 測試數(shù)據(jù)問題 139
7.2.1 數(shù)據(jù)組合問題 140
7.2.2 測試數(shù)據(jù)和數(shù)據(jù)庫 141
7.3 標準數(shù)據(jù)種子 142
7.4 腳本化用戶和結構 145
7.5 探索合成用戶 146
7.6 利用生產(chǎn)數(shù)據(jù) 148
7.7 開發(fā)、測試和生產(chǎn)環(huán)境 149
7.8 測試數(shù)據(jù)法規(guī) 150
7.9 本章回顧 151
第二篇 測試與交付
第8章 交付模型與測試 154
8.1 技術要求 155
8.2 瀑布模型 155
8.2.1 瀑布模型的優(yōu)勢及其適用場景 158
8.2.2 V模型 158
8.2.3 迭代式、增量式和迷你瀑布模型 159
8.3 極限編程(XP) 161
8.4 Scrum和SAFe 163
8.4.1 Scrum的背景 164
8.4.2 SAFe及其背景 165
8.5 定制軟件開發(fā)方法 167
8.5.1 敏捷宣言 168
8.5.2 語境驅動測試 169
8.5.3 原則實踐的體現(xiàn) 170
8.5.4 將看板作為一種定制方法 170
8.6 持續(xù)交付和部署 171
8.7 DevOps、SRE和平臺工程 172
8.8 本章回顧 173
8.9 擴展閱讀 174
第9章 測試的構成元素 175
9.1 技術要求 176
9.2 配方:如何做困難的事情 176
9.2.1 配方的定義 177
9.2.2 配方是否應該全部自動化 179
9.2.3 配方是否與技術文檔重合 180
9.3 覆蓋程度:是否足夠好地進行了測試 181
9.3.1 代碼覆蓋率的精準衡量 183
9.3.2 結束覆蓋率的討論 185
9.4 缺陷:軟件的狀態(tài)如何 185
9.5 排期和風險:測試想法太多,時間不足 186
9.6 策略:關于風險和優(yōu)先級 187
9.7 儀表板:如何傳達所知道的 189
9.8 本章回顧 191
第10章 制訂測試策略 193
10.1 我們現(xiàn)在在做什么 193
10.1.1 填寫表格 197
10.1.2 電梯演講 198
10.2 風險普查 200
10.3 確定優(yōu)先事項、時間管理和范圍 204
10.4 今天的策略與明天的目標 206
10.5 本章回顧 206
第11章 精益軟件測試 208
11.1 精益軟件測試的定義 208
11.2 七大浪費 211
11.2.1 浪費1—運輸 211
11.2.2 浪費2—庫存 212
11.2.3 浪費3—動作 213
11.2.4 浪費4—等待 214
11.2.5 浪費5—過度加工 215
11.2.6 浪費6—過度生產(chǎn) 216
11.2.7 浪費7—缺陷 217
11.2.8 (新)浪費8—能力 219
11.2.9 消除測試中的浪費 219
11.3 流程 220
11.3.1 流程可視化 221
11.3.2 多任務處理 222
11.3.3 交付時間與周期時間 223
11.3.4 效率與擁堵 224
11.3.5 接觸時間 225
11.3.6 Batch size 225
11.3.7 隊列和效率 227
11.3.8 到達時間 227
11.3.9 創(chuàng)建拉式系統(tǒng):限制在制品數(shù)量 228
11.3.10 發(fā)布節(jié)奏 228
11.4 單件流和持續(xù)交付 229
11.5 本章回顧 231
第三篇 職場實踐
第12章 案例研究和經(jīng)驗報告 234
12.1 大規(guī)模的RCRCRC 235
12.1.1 一天的測試計劃 236
12.1.2 RCRCRC分析 236
12.2 測試儀表板 238
12.3 結對編程與三人編程 240
12.3.1 專業(yè)能力的悖論 241
12.3.2 遞交決策權 242
12.4 測試策略的演變 243
12.5 抵制欺凌行為 245
12.5.1 職場中的權力 246
12.5.2 一種處理方式 247
12.5.3 企業(yè)中的邊界 248
12.5.4 自戀型溝通 249
12.5.5 捍衛(wèi)邊界 251
12.5.6 如果你選擇留下來 252
12.6 本章回顧 253
第13章 測試活動和測試角色 254
13.1 技術要求 254
13.2 測試角色的文化沖突 254
13.2.1 我們是如何走到這一步的:壞消息 255
13.2.2 我們是如何走到這一步的:快速開發(fā) 257
13.3 建立風險管理團隊 258
13.4 基于信念的測試自動化 261
13.4.1 背后的數(shù)字 262
13.4.2 可能的結果 263
13.5 左移和右移 264
13.6 真正的持續(xù)測試 264
13.7 本章回顧 266
第14章 軟件測試中的哲學與倫理 267
14.1 哲學及其在測試中的重要性 267
14.1.1 迭代周期:視情況而定 268
14.1.2 守破離:循序漸進的學習模式 269
14.1.3 一個棘手的問題:你想要什么 270
14.2 測試中的倫理和倫理推理 272
14.2.1 道德框架 273
14.2.2 經(jīng)典倫理挑戰(zhàn) 275
14.3 測試中的倫理問題 276
14.3.1 跳過測試步驟 277
14.3.2 決策并非在會議中制定 278
14.4 科學思維和邏輯謬誤 279
14.5 如何逃離“職場地獄” 281
14.6 本章回顧 283
第15章 詞語和表述 284
15.1 語境驅動測試和其他學派 284
15.1.1 敏捷學派 285
15.1.2 DevOps或持續(xù)交付學派 285
15.1.3 分析學派 285
15.1.4 工廠學派 286
15.1.5 質量學派 286
15.1.6 語境驅動學派 286
15.2 準確的語言 288
15.3 詞語的表述 290
15.4 流程與技能 292
15.4.1 測試和檢查 294
15.4.2 質量保證 295
15.5 本章回顧 297
15.6 拓展閱讀 297
第16章 測試策略應用 298
16.1 移動應用測試策略案例 298
16.1.1 移動應用程序 300
16.1.2 設計測試程序 300
16.1.3 系統(tǒng)協(xié)調與部署 303
16.1.4 人的因素 304
16.2 AI在軟件測試中的應用 305
16.2.1 AI工具現(xiàn)狀 306
16.2.2 應用AI進行測試 306
16.2.3 測試中其他形式的AI 309
16.2.4 AI測試的核心觀點 310
16.3 關于測試的理念 310
16.4 本章回顧 312