《軟體測試(第3版)》是2012年2月人民郵電出版社出版的圖書,作者是[美]Paul C·Jorgensen。
基本介紹
- 書名:軟體測試(第3版)
- 作者:[美]Paul C·Jorgensen
- ISBN:9787115247995
- 頁數:330頁
- 定價:59元
- 出版社:人民郵電出版社
- 出版時間:2012年2月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
本書是經典的軟體測試教材。書中對基礎知識、方法提供了系統的綜合闡述,既涉及基於模型的開發又介紹測試驅動的開發,做到了理論與實踐的完美結合,反映了軟體標準和開發的**新進展和變化。
本書適合作為高等院校計算機學院及軟體學院相關專業軟體測試課程的教材,也是軟體測試領域技術人員的理想參考書。
圖書目錄
第 一部分 數學基礎
第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