目 錄
第1章 軟件測試基礎 1
1.1 軟件的復雜度已經超越了人的理解能力 1
1.2 軟件測試是獲取信息的技術調查 4
1.3 測試是迭代過程 6
1.4 測試人員的工作效率取決于他對軟件和項目的理解,而不是他掌握的測試技術 8
1.5 小結 9
第2章 缺陷報告 10
2.1 報告缺陷是為了讓缺陷得到修復 10
2.2 高質量的缺陷報告來自于高質量的測試 13
2.2.1 分配測試時間 13
2.2.2 通過技術調查發(fā)現更多的信息 14
2.2.3 處理難以重現的缺陷 17
2.3 編寫高質量的缺陷報告 22
2.3.1 為每一個缺陷單獨提交一份缺陷報告,小缺陷也是如此 22
2.3.2 仔細編寫缺陷報告的標題 23
2.3.3 像編寫詳細測試用例那樣編寫重現步驟 23
2.3.4 使用缺陷模板來提交缺陷 24
2.3.5 在編寫缺陷報告時,要考慮缺陷查詢 25
2.3.6 鏈接相關的缺陷 26
2.3.7 注意缺陷報告的可讀性 26
2.3.8 客觀中立地書寫缺陷報告 26
2.4 對不予修復的缺陷進行上訴 27
2.5 周密地測試缺陷修復 28
2.6 堅持閱讀缺陷報告 30
2.7 小結 32
第3章 測試文檔 33
3.1 測試文檔是持續(xù)演化的工具 33
3.1.1 測試文檔是提供測試信息的一組文檔 33
3.1.2 在測試中演化測試文檔 35
3.1.3 注重實效的測試文檔 36
3.2 形形色色的測試文檔 40
3.2.1 測試計劃 40
3.2.2 Google ACC 44
3.2.3 測試設計規(guī)約 48
3.2.4 功能列表 49
3.2.5 大綱與思維導圖 51
3.2.6 表格(矩陣) 53
3.2.7 測試指南 55
3.2.8 測試想法列表 56
3.2.9 質量特性列表 57
3.2.10 操作文檔 58
3.2.11 檢查列表 59
3.2.12 缺陷目錄 60
3.2.13 測程表 61
3.2.14 移交文檔 67
3.3 在測試中發(fā)展測試文檔 67
3.3.1 初始測試文檔 67
3.3.2 發(fā)展測試文檔 70
3.4 小結 71
第4章 測試建?!?3
4.1 從組合測試看建模的重要性 73
4.1.1 組合測試簡介 73
4.1.2 根據語境來完善組合測試的模型 76
4.1.3 測試建模的基本點 83
4.2 常用測試建模方法 84
4.2.1 啟發(fā)式測試策略模型 84
4.2.2 輸入與輸出模型 91
4.2.3 系統生態(tài)圖 96
4.2.4 實體關系模型 101
4.2.5 狀態(tài)機模型 105
4.2.6 多種多樣的模型 109
4.3 小結 113
第5章 測試技術 115
5.1 測試技術分類系統 115
5.2 啟發(fā)式方法 120
5.3 測試先知 122
5.3.1 測試先知的定義 122
5.3.2 FEW HICCUPPS 123
5.3.3 約束檢查 129
5.4 漫游測試 133
5.4.1 基本漫游方法 134
5.4.2 基于旅行者隱喻的漫游方法 135
5.4.3 移動測試漫游方法 139
5.4.4 實施漫游測試 142
5.5 快速測試 144
5.5.1 James Bach的方法 145
5.5.2 Cem Kaner的方法 147
5.5.3 James Whittaker的方法 149
5.6 情景測試 154
5.6.1 基本方法 155
5.6.2 設計用戶角色 158
5.6.3 情景測試與漫游測試 161
5.6.4 肥皂劇測試 162
5.6.5 虛擬業(yè)務 164
5.7 多樣地選擇測試技術 165
5.8 小結 166
第6章 測試開發(fā) 168
6.1 測試開發(fā)分類 168
6.2 注重實效的自動化測試 169
6.2.1 自動化測試的基本策略 169
6.2.2 將測試開發(fā)視作軟件開發(fā) 172
6.2.3 利用自動化測試金字塔來指導測試開發(fā) 175
6.2.4 面向調試的測試代碼 177
6.2.5 系統測試的測試開發(fā) 182
6.2.6 讓自動化測試服務于項目 190
6.3 計算機輔助測試 193
6.3.1 “交通工具”的隱喻 193
6.3.2 選擇合適的開發(fā)技術 195
6.4 大規(guī)模自動化測試 204
6.4.1 基本概念 204
6.4.2 測試設計 206
6.5 小結 211
第7章 研究產品 213
7.1 靜態(tài)分析 213
7.1.1 瀏覽源代碼來理解產品實現 213
7.1.2 分析源代碼來幫助測試設計 221
7.1.3 黑盒測試并不是基于無知的測試 227
7.2 動態(tài)分析 229
7.2.1 用工具分析產品的行為 229
7.2.2 在調試器中觀察軟件行為 237
7.3 業(yè)務研究 241
7.3.1 理解關系人 241
7.3.2 評審需求文檔 245
7.3.3 通過測試來研究 251
7.3.4 利用互聯網資源 255
7.3.5 領域研究 258
7.4 研究策略 260
7.5 小結 261
第8章 研究項目 262
8.1 項目團隊 262
8.1.1 了解團隊組織 262
8.1.2 語境獨立的啟發(fā)式問題 264
8.1.3 了解團隊成員 268
8.2 面向測試的項目分析 270
8.2.1 軟件缺陷 270
8.2.2 源代碼 274
8.2.3 構建 277
8.2.4 自動化測試 279
8.3 基于風險的測試 282
8.3.1 通過測試調查風險 282
8.3.2 失敗模式 284
8.3.3 項目級別的風險 285
8.4 小結 287
第9章 團隊工作 288
9.1 工作風格 288
9.1.1 測試人員通過服務團隊來體現自己的價值 288
9.1.2 測試人員應該正直 290
9.1.3 測試人員的影響力來自于出色的工作 292
9.1.4 信任程序員的努力,并用技術調查檢驗其工作 292
9.2 測試管理 293
9.2.1 個人測試計劃應該是項目測試計劃的延伸 293
9.2.2 制訂個人測試計劃時應該綜合考慮各種項目元素 294
9.2.3 測試需要動態(tài)管理 297
9.3 軟件估算 299
9.3.1 測試人員應該估算自己的任務 300
9.3.2 用計數和計算作為估算手段 302
9.3.3 歷史數據是估算的重要參考 303
9.3.4 同時估算最差情況和最好情況 305
9.4 度量 305
9.4.1 理解度量方法的基本元素 306
9.4.2 明確度量的目標 307
9.4.3 掌握屬性和算法的聯系 309
9.4.4 理解度量方法的優(yōu)點和缺點 311
9.4.5 密切關注度量的副作用 312
9.4.6 注重實效的計算 314
9.5 測試小組 315
9.5.1 價值觀 315
9.5.2 團隊建設 316
9.6 小結 318
第10章 個人管理 319
10.1 時間管理 319
10.1.1 利用任務清單記錄所有工作項 319
10.1.2 堅持周計劃和每日回顧 322
10.1.3 專注是高效工作的前提 322
10.1.4 恰到好處的文檔化和自動化 324
10.2 持續(xù)學習 328
10.2.1 在工作中學習 328
10.2.2 持續(xù)閱讀 329
10.3 且行且思 330
10.4 成為專家 333
10.5 小結 335
參考文獻 336