第一篇 基礎理論篇
第 1 章 軟件測試概述 2
1.1 軟件測試的背景 2
1.2 軟件錯誤相關的典型案例 4
1.3 國內外發展現狀及趨勢 7
第 2 章 軟件測試基礎 12
2.1 軟件測試的基本概念 12
2.1.1 什么是軟件測試 12
2.1.2 驗證與確認 13
2.1.3 軟件缺陷 14
2.1.4 測試與質量保證 17
2.1.5 測試用例 18
2.1.6 測試策略 19
2.2 軟件測試的原則 20
2.3 軟件測試模型 22
2.3.1 V 模型 22
2.3.2 W 模型 22
2.3.3 H 模型 23
2.3.4 敏捷測試模型 24
2.4 軟件測試分類 24
2.4.1 按工程階段划分的測試 25
2.4.2 按是否執行代碼划分的測試 26
2.4.3 按測試實施主體划分的測試 27
2.4.4 按是否關聯代碼划分的測試 27
2.4.5 按軟件質量特性划分的測試 29
2.4.6 按符合性評價要求划分的測試 30
2.4.7 回歸測試 31
第 3 章 軟件測評相關標准 33
3.1 標准化概述 33
3.1.1 標准化的意義 33
3.1.2 標准的分類 34
3.2 軟件質量模型與評價標准 35
3.2.1 軟件質量標准的發展 35
3.2.2 軟件質量模型和測量 38
3.2.3 軟件質量評價 43
3.2.4 就緒可用產品(RUSP)的質量要求和評價細則 44
3.3 軟件測試標准 45
3.3.1 測試過程標准 46
3.3.2 測試文檔標准 46
3.3.3 測試技術標准 49
3.4 軟件測試工作量及成本估算相關標准 50
第 4 章 軟件測試過程和管理 56
4.1 測試過程模型 56
4.2 組織級測試過程 57
4.2.1 目的 58
4.2.2 輸入 59
4.2.3 活動和任務 59
4.2.4 結果 60
4.2.5 信息項 60
4.3 測試管理過程 60
4.3.1 測試策划過程 61
4.3.2 測試設計和實現過程 66
4.3.3 測試環境構建和維護過程 69
4.3.4 測試執行過程 71
4.3.5 測試事件報告過程 73
4.3.6 測試監測和控制過程 75
4.3.7 測試完成過程 78
4.4 靜態測試過程 80
4.4.1 目的 80
4.4.2 輸入 80
4.4.3 活動和任務 80
4.4.4 結果 81
4.4.5 信息項 81
第二篇 測試技術篇
第 5 章 基於規格說明的測試技術 83
5.1 測試用例設計方法 83
5.1.1 等價類划分法 84
5.1.2 分類樹法 86
5.1.3 邊界值法 88
5.1.4 語法測試 91
5.1.5 組合測試 92
5.1.6 判定表測試 97
5.1.7 因果圖法 99
5.1.8 狀態轉移測試 102
5.1.9 場景測試 105
5.1.10 隨機測試 107
5.2 測試設計方法選擇策略 109
5.3 測試用例的編寫 109
5.3.1 測試設計規格說明 110
5.3.2 測試用例規格說明 111
5.3.3 測試規程規格說明 112
5.3.4 測試用例編寫的細節 113
第 6 章 基於結構的測試技術 115
6.1 靜態測試技術 115
6.1.1 代碼檢查 115
6.1.2 編碼規則檢查 116
6.1.3 靜態分析 117
6.2 動態測試技術 120
6.2.1 基於控制流設計用例 120
6.2.2 基於數據流設計用例 129
6.3 基於結構的測試輔助技術 136
6.3.1 詞法和語法分析 136
6.3.2 程序插樁和驅動技術 137
6.4 基於結構測試的綜合策略 138
6.4.1 測試覆蓋准則 139
6.4.2 小測試用例數計算 140
第 7 章 自動化測試技術 144
7.1 自動化測試技術概述 144
7.1.1 自動化測試技術的發展和演進 144
7.1.2 自動化測試的概念 145
7.1.3 自動化測試的分類 146
7.1.4 自動化測試的優缺點和局限 147
7.1.5 自動化測試系統的通用架構 149
7.2 自動化測試的實踐策略 151
7.3 測試設計的自動化技術 153
7.3.1 基於模型的測試技術 153
7.3.2 基於搜索的測試技術 157
7.4 測試執行的自動化技術 158
7.4.1 測試工具的選擇 158
7.4.2 自動化測試語言的選擇 159
7.4.3 測試輸入的設計與實現 159
7.4.4 測試輸出結果的收集和分析 164
第 8 章 基於經驗的測試技術 166
8.1 錯誤猜測法 166
8.1.1 基本概念 166
8.1.2 軟件錯誤類型 166
8.1.3 估算錯誤數量的方法 167
8.2 探索性測試 168
8.2.1 基本概念 168
8.2.2 探索性測試風格 169
8.2.3 探索性測試的相關方法 170
8.2.4 探索性測試的優勢與局限 170
8.3 基於檢查表的測試 171
8.3.1 基本概念 171
8.3.2 基於代碼檢查表的測試 171
8.3.3 基於文檔檢查表的測試 172
第 9 章 基於質量特性的測試與評價 174
9.1 功能性測試 174
9.1.1 完備性 174
9.1.2 正確性 175
9.1.3 適合性 175
9.1.4 功能性測試案例 176
9.2 性能效率測試 183
9.2.1 時間特性 183
9.2.2 資源利用性 183
9.2.3 容量 184
9.2.4 性能效率測試類型 185
9.2.5 性能效率測試案例 186
9.3 易用性測試 188
9.3.1 可辨識性 188
9.3.2 易學性 189
9.3.3 易操作性 190
9.3.4 用戶差錯防御性 191
9.3.5 用戶界面舒適性 192
9.3.6 易訪問性 193
9.4 可靠性測試 194
9.4.1 成熟性 194
9.4.2 可用性 195
9.4.3 容錯性 195
9.4.4 易恢復性 196
9.5 信息安全性測試 197
9.5.1 保密性 197
9.5.2 完整性 198
9.5.3 抗抵賴性 198
9.5.4 可核查性 198
9.5.5 真實性 199
9.6 維護性測試 199
9.6.1 模塊化 199
9.6.2 可重用性 200
9.6.3 易分析性 200
9.6.4 易修改性 201
9.6.5 易測試性 202
9.7 兼容性測試 202
9.7.1 共存性 203
9.7.2 互操作性 203
9.8 可移植性測試 204
9.8.1 適應性 204
9.8.2 易安裝性 206
9.8.3 易替換性 207
9.9 依從性測試 207
9.10 符合性測試 208
9.10.1 先決條件 208
9.10.2 評價活動內容 209
9.10.3 評價過程 209
9.10.4 評價報告 209
9.10.5 后續的符合性評價 210
第三篇 測試技術應用篇
第 10 章 基於風險的測試 212
10.1 基於風險的測試概述 212
10.1.1 為何要基於風險 212
10.1.2 測試計划內容 216
10.1.3 測試計划制訂的步驟 217
10.1.4 基於風險的測試的應用領域 218
10.2 風險分析和緩解措施設計 218
10.2.1 風險識別 218
10.2.2 風險的影響和發生概率評估 221
10.2.3 風險的優先級 224
10.2.4 風險與緩解措施 226
10.2.5 一般性的緩解措施指南 227
10.3 測試級別與測試實施 232
10.3.1 測試設計和實施的一般性指南 232
10.3.2 單元測試設計與實施 234
10.3.3 集成測試設計與實施 235
10.3.4 系統測試設計與實施 237
10.3.5 驗收測試設計與實施 237
10.4 測試估算與平衡決策 238
10.4.1 測試估算的方法指南 238
10.4.2 測試策略的綜合和平衡 240
第 11 章 分層架構軟件測試 241
11.1 分層架構介紹 241
11.1.1 分層架構概述 241
11.1.2 表示層介紹 242
11.1.3 服務層介紹 243
11.1.4 業務邏輯層介紹 243
11.1.5 數據層介紹 244
11.2 質量特性 244
11.2.1 表示層質量特性 244
11.2.2 服務層質量特性 248
11.2.3 業務邏輯層質量特性 249
11.2.4 數據層質量特性 251
11.3 測試策略 252
11.3.1 表示層測試策略 252
11.3.2 服務層測試策略 253
11.3.3 業務邏輯層測試策略 254
11.3.4 數據層測試策略 256
11.4 測試案例 259
11.4.1 案例概述 259
11.4.2 案例測試內容 260
11.4.3 表示層測試 261
11.4.4 服務層測試 264
11.4.5 業務邏輯層測試 285
11.4.6 數據層 TPC-C 基准測試 289
11.4.7 數據層 TPC-DS 基准測試 293
第 12 章 事件驅動架構軟件測試 301
12.1 架構概述 301
12.1.1 基本概念 301
12.1.2 應用實例 304
12.2 質量特性 306
12.2.1 功能性 309
12.2.2 可靠性 309
12.2.3 性能效率 311
12.2.4 易用性 313
12.2.5 信息安全性 314
12.2.6 兼容性 315
12.2.7 維護性 315
12.2.8 可移植性 316
12.3 測試策略 316
12.4 測試案例 318
12.4.1 案例介紹——安卓廣播接收器 318
12.4.2 測試策略與質量特性 319
第 13 章 微內核架構軟件測試 322
13.1 微內核架構概述 322
13.1.1 微內核架構說明 322
13.1.2 微內核架構特點 323
13.1.3 微內核架構優缺點 324
13.2 質量特性 324
13.2.1 功能性 324
13.2.2 信息安全性 325
13.2.3 可靠性 325
13.2.4 易用性 325
13.3 測試策略 325
13.4 測試案例一 325
13.4.1 案例介紹 325
13.4.2 測試過程 327
13.5 測試案例二 329
13.5.1 案例介紹 329
13.5.2 案例測試策略 331
13.5.3 案例測試設計和執行 336
13.5.4 案例總結 337
第 14 章 分布式架構軟件測試 338
14.1 架構概述 338
14.1.1 基本概念 338
14.1.2 架構組件 340
14.1.3 架構優勢和劣勢 342
14.1.4 應用實例 343
14.2 質量特性 344
14.2.1 功能性 344
14.2.2 數據一致性相關 346
14.2.3 事務處理相關 347
14.2.4 並發、互斥相關 347
14.2.5 遠過程調用和通信相關 348
14.2.6 運維相關 349
14.3 分布式架構軟件測試常見的質量目標 350
14.4 分布式架構軟件測試常見的測試策略 352
14.5 測試案例 353
14.5.1 購票系統 353
14.5.2 超市會員系統 360
第四篇 新技術應用篇
第 15 章 移動應用軟件測試 363
15.1 移動終端平台和應用軟件介紹 363
15.2 移動應用軟件的測試 367
15.3 移動應用軟件功能測試案例 373
第 16 章 物聯網軟件系統測試 375
16.1 物聯網簡介 375
16.2 物聯網的測試類型 377
16.3 物聯網滲透測試技術 378
第 17 章 大數據系統測試 381
17.1 大數據簡介 381
17.2 大數據測試技術 382
17.3 大數據功能測試案例 385
第 18 章 可信軟件驗證技術 390
18.1 可信軟件 390
18.2 可信軟件的驗證技術 391
18.2.1 形式化建模與方法 391
18.2.2 可信軟件驗證工具 394
第 19 章 人工智能時代下的軟件測試技術發展 400
19.1 人工智能時代的到來 400
19.1.1 人工智能在各行各業的應用 400
19.1.2 人工智能對軟件測試技術發展的影響 401
19.1.3 人工智能會否取代軟件測試人員 403
19.2 人工智能輔助測試技術 405
19.2.1 基於約束的技術 405
19.2.2 啟發式搜索算法 408
19.3 機器學習在軟件測試中的應用 409
19.3.1 軟件測試設計推薦 409
19.3.2 使用模式識別 410
19.3.3 軟件脆弱性測試 410
參考文獻 411