第一部分 數學基礎
第1章 測試概述 2
1.1 基本概念 2
1.2 測試用例 3
1.3 通過維恩圖來考察測試 4
1.4 構造測試用例 5
1.4.1 功能測試 6
1.4.2 結構測試 7
1.4.3 功能測試與結構測試之爭 7
1.5 錯誤與故障差異 8
1.6 測試的層次 10
參考文獻 11
習題 11
第2章 程序示例 12
2.1 通用僞代碼 12
2.2 三角形問題 13
2.2.1 問題描述 13
2.2.2 三角形問題的討論 14
2.2.3 三角形問題的經典實現 14
2.2.4 三角形問題的結構化實現 16
2.3 NextDate函數 18
2.3.1 問題描述 18
2.3.2 NextDate函數的討論 18
2.3.3 NextDate函數的實現 19
2.4 傭金問題 21
2.4.1 問題描述 21
2.4.2 傭金問題的討論 22
2.4.3 傭金問題的實現 22
2.5 SATM係統 23
2.5.1 問題描述 23
2.5.2 SATM係統的討論 25
2.6 貨幣轉換器 25
2.7 雨刷控製器 26
參考文獻 26
習題 26
第3章 測試人員的離散數學 28
3.1 集閤論 28
3.1.1 集閤的成員關係 28
3.1.2 集閤的定義方法 28
3.1.3 空集 29
3.1.4 集閤的維恩圖 29
3.1.5 集閤運算 30
3.1.6 集閤關係 32
3.1.7 集閤劃分 32
3.1.8 集閤恒等 33
3.2 函數 33
3.2.1 定義域與值域 34
3.2.2 函數的類型 34
3.2.3 函數復閤 35
3.3 關係 36
3.3.1 集閤之間的關係 36
3.3.2 單個集閤上的關係 37
3.4 命題邏輯 38
3.4.1 邏輯運算符 39
3.4.2 邏輯錶達式 39
3.4.3 邏輯等價 40
3.5 概率論 40
參考文獻 41
習題 42
第4章 測試人員的圖論 43
4.1 圖 43
4.1.1 節點的度 44
4.1.2 關聯矩陣 44
4.1.3 鄰接矩陣 45
4.1.4 路徑 45
4.1.5 連通性 46
4.1.6 壓縮圖 46
4.1.7 圈數 46
4.2 有嚮圖 47
4.2.1 入度與齣度 48
4.2.2 節點類型 48
4.2.3 有嚮圖的鄰接矩陣 48
4.2.4 路徑與半路徑 49
4.2.5 可達矩陣 49
4.2.6 n連通性 50
4.2.7 強分圖 50
4.3 軟件測試中常用的圖 51
4.3.1 程序圖 51
4.3.2 有限狀態機 52
4.3.3 Petri網 53
4.3.4 事件驅動Petri網 55
4.3.5 狀態圖 57
參考文獻 58
習題 58
第二部分 功能測試
第5章 邊界值測試 62
5.1 邊界值分析 62
5.1.1 邊界值分析的拓展 63
5.1.2 邊界值分析的局限性 64
5.2 健壯性測試 64
5.3 最壞情況測試 65
5.4 特殊值測試 66
5.5 示例 66
5.5.1 三角形問題的測試用例 66
5.5.2 NextDate函數的測試用例 68
5.5.3 傭金問題的測試用例 68
5.6 隨機測試 70
5.7 邊界值測試的原則 72
習題 72
第6章 等價類測試 73
6.1 等價類 73
6.1.1 弱一般等價類測試 74
6.1.2 強一般等價類測試 74
6.1.3 弱健壯等價類測試 74
6.1.4 強健壯等價類測試 75
6.2 三角形問題的等價類測試用例 75
6.3 NextDate函數的等價類測試用例 77
6.4 傭金問題的等價類測試用例 80
6.5 原則與注意事項 82
參考文獻 82
習題 82
第7章 基於決策錶的測試 84
7.1 決策錶 84
7.2 三角形問題的測試用例 88
7.3 NextDate函數的測試用例 88
7.3.1 第一輪嘗試 88
7.3.2 第二輪嘗試 89
7.3.3 第三輪嘗試 90
7.4 傭金問題的測試用例 92
7.5 原則與注意事項 93
參考文獻 93
習題 93
第8章 功能測試迴顧 94
8.1 測試的工作量 94
8.2 測試的效率 96
8.3 測試的有效性 97
8.4 原則 98
8.5 案例研究 99
第三部分 結構測試
第9章 路徑測試 104
9.1 DD路徑 106
9.2 測試覆蓋指標 108
9.2.1 基於指標的測試 108
9.2.2 測試覆蓋分析器 110
9.3 基路徑測試 110
9.3.1 McCabe的基路徑方法 111
9.3.2 McCabe基路徑方法的注意事項 113
9.3.3 McCabe方法的基本復雜度 114
9.4 原則與注意事項 117
參考文獻 118
習題 118
第10章 數據流測試 120
10.1 定義/使用測試 120
10.1.1 舉例 121
10.1.2 stocks的定義使用路徑 125
10.1.3 locks的定義使用路徑 125
10.1.4 totalLocks的定義使用路徑 125
10.1.5 sales的定義使用路徑 126
10.1.6 commission的定義使用路徑 126
10.1.7 定義使用路徑的測試覆蓋指標 127
10.2 基於片的測試 128
10.2.1 舉例 129
10.2.2 風格與方法 132
10.3 原則與注意事項 133
參考文獻 134
習題 134
第11章 結構測試迴顧 135
11.1 缺漏與冗餘 135
11.2 用於評估測試方法的指標 137
11.3 重新修訂的案例研究 139
11.3.1 基於路徑的測試 141
11.3.2 數據流測試 141
11.3.3 片測試 141
參考文獻 142
習題 142
第四部分 集成測試和係統測試
第12章 測試的層次 144
12.1 測試層次劃分的傳統觀點 144
12.2 其他生命周期模型 145
12.2.1 瀑布模型的變體 146
12.2.2 基於規格說明的生命周期模型 147
12.3 SATM係統 149
12.4 將集成測試與係統測試分開 157
12.4.1 從結構角度分析 158
12.4.2 從行為角度分析 159
參考文獻 159
第13章 集成測試 160
13.1 深入研究SATM係統 160
13.2 基於功能分解的集成 164
13.2.1 自頂嚮下集成 164
13.2.2 自底嚮上集成 166
13.2.3 三明治集成 166
13.2.4 優缺點 167
13.3 基於調用圖的集成 167
13.3.1 成對集成 167
13.3.2 相鄰集成 168
13.3.3 基於調用圖集成的優缺點 169
13.4 基於路徑的集成 170
13.4.1 新概念與擴展概念 170
13.4.2 SATM係統中的MM路徑 172
13.4.3 MM路徑復雜度 176
13.4.4 基於路徑集成技術的優缺點 177
13.5 案例分析 177
13.5.1 基於分解的集成 181
13.5.2 基於調用圖的集成 181
13.5.3 基於MM路徑的集成 181
參考文獻 182
習題 182
第14章 係統測試 184
14.1 綫索 184
14.1.1 綫索存在的可能性 185
14.1.2 綫索定義 186
14.2 需求規格說明的基本概念 187
14.2.1 數據 187
14.2.2 行為 188
14.2.3 設備 188
14.2.4 事件 188
14.2.5 綫索 189
14.2.6 基本概念之間的關係 189
14.2.7 利用基本概念建模 189
14.3 尋找綫索 190
14.4 綫索測試的結構策略 193
14.4.1 自底嚮上組織綫索 194
14.4.2 節點與邊覆蓋指標 194
14.5 綫索測試的功能策略 196
14.5.1 基於事件的綫索測試 196
14.5.2 基於端口的綫索測試 197
14.5.3 基於數據的綫索測試 197
14.6 SATM測試綫索 199
14.7 係統測試原則 203
14.7.1 僞結構係統測試 203
14.7.2 性能分析 204
14.7.3 纍進測試與迴歸測試 206
14.8 ASF測試示例 206
參考文獻 208
習題 208
第15章 交互性測試 209
15.1 交互的語境 209
15.2 交互的分類 211
15.2.1 單處理器中的靜態交互 211
15.2.2 多處理器中的靜態交互 212
15.2.3 單處理器中的動態交互 213
15.2.4 多處理器中的動態交互 217
15.3 綫索的交互、閤成和確定性 223
15.4 客戶/服務器係統的測試 224
參考文獻 225
習題 226
第五部分 麵嚮對象測試
第16章 麵嚮對象測試的相關問題 228
16.1 麵嚮對象測試的單元 228
16.2 閤成與封裝的含義 229
16.3 繼承的含義 230
16.4 多態性的含義 231
16.5 麵嚮對象測試的層次 232
16.6 GUI測試 232
16.7 麵嚮對象軟件的數據流測試 232
16.8 第五部分所采用的示例 232
16.8.1 麵嚮對象的日曆程序 232
16.8.2 貨幣轉換應用程序 234
參考文獻 238
習題 238
第17章 類測試 239
17.1 以方法為單元的測試 239
17.1.1 o-oCalendar 的僞代碼 240
17.1.2 Date.increment 的單元測試 244
17.2 以類為單元的測試 245
17.2.1 windshieldWiper類的僞代碼 245
17.2.2 windshieldWiper類的單元測試 246
第18章 麵嚮對象的集成測試 250
18.1 UML對集成測試的支持 250
18.2 麵嚮對象軟件的MM路徑 252
18.3 麵嚮對象數據流集成測試的框架 259
18.3.1 事件驅動和消息驅動的Petri網 259
18.3.2 由繼承導齣的數據流 260
18.3.3 由消息導齣的數據流 261
18.3.4 是否需要片 261
參考文獻 261
習題 262
第19章 GUI測試 264
19.1 貨幣轉換程序 264
19.2 貨幣轉換程序的單元測試 264
19.3 貨幣轉換程序的集成測試 265
19.4 貨幣轉換程序的係統測試 267
習題 272
第20章 麵嚮對象的係統測試 273
20.1 貨幣轉換器的UML描述 273
20.1.1 問題陳述 273
20.1.2 係統功能 273
20.1.3 錶示層 274
20.1.4 高層用例 274
20.1.5 基本用例 275
20.1.6 詳細的GUI定義 276
20.1.7 擴展的基本用例 276
20.1.8 真實用例 279
20.2 基於UML的係統測試 280
20.3 基於狀態圖的係統測試 282
參考文獻 282
第六部分 新興測試技術
第21章 探索式測試 284
21.1 上下文驅動學派 284
21.2 探索式測試 285
21.3 探索一個常見示例 287
21.4 探索式測試與上下文驅動測試探討 288
參考文獻 289
習題 289
第22章 基於模型測試 290
22.1 基於模型進行測試 290
22.2 恰當的係統模型 290
22.2.1 Peterson格 291
22.2.2 主流模型的錶達能力 292
22.2.3 選擇恰當的模型 292
22.3 基於用例的測試 293
22.3.1 從用例中推導齣測試用例 293
22.3.2 交互用例 294
22.3.3 需要多少用例 295
22.4 支持基於模型的測試的商用工具 295
參考文獻 296
第23章 測試驅動開發 297
23.1 “測試然後編碼”的軟件開發周期 297
23.2 自動化測試執行(測試框架) 304
23.3 Java和JUnit示例 305
23.3.1 Java源代碼 306
23.3.2 JUnit測試代碼 307
23.4 其他待解決的問題 308
23.4.1 基於規格說明還是基於代碼 308
23.4.2 需要配置管理嗎 309
23.4.3 粒度應該多大 309
23.5 測試驅動開發的優缺點及其他相關問題 310
23.6 模型驅動開發與測試驅動開發對比 311
第24章 全對測試詳述 315
24.1 全對測試技術 315
24.1.1 程序輸入 316
24.1.2 獨立變量 317
24.1.3 輸入的順序 319
24.1.4 完全由輸入所引發的失效 322
24.2 對NIST研究成果的進一步分析 322
24.3 全對測試的適用範圍 323
24.4 對全對測試的建議 324
參考文獻 324
第25章 尾聲:軟件測試精益求精 325
25.1 軟件測試是一種技藝 325
25.2 軟件測試的最佳實踐 326
25.3 讓軟件測試更齣色的10項最佳實踐 327
25.3.1 模型驅動開發 327
25.3.2 慎重地定義與劃分測試的層次 327
25.3.3 基於模型的係統級測試 328
25.3.4 係統測試的擴展 328
25.3.5 利用關聯矩陣指導迴歸測試 328
25.3.6 利用MM路徑實現集成測試 328
25.3.7 把基於規格說明的測試和基於代碼的單元級測試有機地結閤起來 328
25.3.8 基於單個單元特性的代碼覆蓋指標 329
25.3.9 維護階段的探索式測試 329
25.3.10 測試驅動開發 329
25.4 針對不同項目實現最佳實踐 329
25.4.1 任務關鍵型項目 329
25.4.2 時間關鍵型項目 330
25.4.3 對遺留代碼的糾錯維護 330
· · · · · · (
收起)