本書系統(tǒng)地介紹了軟件測試的概念,從不同的視角來探討軟件測試的本質(zhì)及其內(nèi)涵,重點(diǎn)講解了軟件測試的各種方法和技術(shù),并將它們應(yīng)用于不同的測試階段,滿足不同的應(yīng)用系統(tǒng)測試的需求。本書用了較大篇幅詳細(xì)介紹了自動(dòng)化測試的原理、方法和工具,通過一些典型的測試工具展示了自動(dòng)化測試的過程,使讀者更容易掌握自動(dòng)化測試的技術(shù)和實(shí)踐方法。
第1章 軟件測試概述 1
1.1 一個(gè)真實(shí)的故事 2
1.2 為什么要進(jìn)行軟件測試 3
1.3 軟件缺陷的由來 4
1.4 軟件測試學(xué)科的發(fā)展歷程 5
1.5 軟件測試的定義 7
1.5.1 基本定義的正反兩面性 7
1.5.2 服從于用戶需求——V&V 8
1.6 軟件測試的層次和類型 10
1.6.1 軟件測試的層次 10
1.6.2 不同類型的軟件測試 11
1.7 軟件測試的過程 12
1.7.1 傳統(tǒng)的軟件測試過程 13
1.7.2 敏捷測試過程 14
小 結(jié) 16
思考題 17
第2章 需求和設(shè)計(jì)評審 18
2.1 軟件評審的方法與技術(shù) 19
2.1.1 什么是評審 19
2.1.2 評審的方法 20
2.1.3 評審會(huì)議 22
2.1.4 評審的技術(shù) 24
2.2 產(chǎn)品需求評審 25
2.2.1 需求評審的重要性 25
2.2.2 如何理解需求 27
2.2.3 傳統(tǒng)軟件需求的評審標(biāo)準(zhǔn) 29
2.2.4 敏捷開發(fā)中用戶故事評審標(biāo)準(zhǔn) 30
2.2.5 如何對需求進(jìn)行評審 31
2.3 設(shè)計(jì)審查 33
2.3.1 軟件設(shè)計(jì)評審標(biāo)準(zhǔn) 33
2.3.2 系統(tǒng)架構(gòu)設(shè)計(jì)的評審 35
2.3.3 組件設(shè)計(jì)的審查 36
2.3.4 界面設(shè)計(jì)的評審 37
小 結(jié) 37
思考題 38
實(shí)驗(yàn)1 用戶故事評審 38
第3章 測試分析與設(shè)計(jì) 40
3.1 如何進(jìn)行測試需求分析 40
3.2 測試設(shè)計(jì) 42
3.2.1 測試設(shè)計(jì)流程 42
3.2.2 框架的設(shè)計(jì) 43
3.2.3 功能測試設(shè)計(jì) 44
3.3 什么是測試用例 46
3.3.1 一個(gè)簡單的測試用例 46
3.3.2 測試用例的元素 47
3.4 為什么需要測試用例 49
3.5 測試用例的質(zhì)量 49
3.5.1 測試用例的質(zhì)量要求 50
3.5.2 測試用例書寫標(biāo)準(zhǔn) 51
3.5.3 測試用例的評審 52
3.6 測試用例的組織和使用 53
3.6.1 測試集 53
3.6.2 測試用例的維護(hù) 55
小 結(jié) 55
思考題 56
實(shí)驗(yàn)2 測試用例結(jié)構(gòu)的設(shè)計(jì) 56
第4章 軟件測試自動(dòng)化 58
4.1 測試自動(dòng)化的內(nèi)涵 58
4.1.1 簡單的實(shí)驗(yàn) 59
4.1.2 自動(dòng)化測試的例子 60
4.1.3 什么是自動(dòng)化測試 62
4.1.4 自動(dòng)化測試的特點(diǎn)和優(yōu)勢 63
4.2 自動(dòng)化測試的原理 64
4.2.1 代碼分析 65
4.2.2 GUI對象識別 66
4.2.3 DOM對象識別 68
4.2.4 自動(dòng)比較技術(shù) 69
4.2.5 腳本技術(shù) 70
4.3 測試工具的分類和選擇 73
4.3.1 測試工具的分類 73
4.3.2 測試工具的選擇 75
4.4 自動(dòng)化測試的引入 76
4.4.1 普遍存在的問題 77
4.4.2 對策 78
小 結(jié) 80
思考題 80
實(shí)驗(yàn)3 Windows應(yīng)用自動(dòng)化測試 80
第5章 單元測試和集成測試 82
5.1 什么是單元測試 83
5.2 單元測試的方法 83
5.2.1 黑盒方法和白盒方法 84
5.2.2 驅(qū)動(dòng)程序和樁程序 85
5.3 白盒測試方法的用例設(shè)計(jì) 86
5.3.1 分支覆蓋 86
5.3.2 條件覆蓋法 87
5.3.3 基本路徑測試法 88
5.4 代碼審查 90
5.4.1 代碼審查的范圍和方法 90
5.4.2 代碼規(guī)范性的審查 91
5.4.3 代碼缺陷檢查表 93
5.5 集成測試 96
5.5.1 集成測試的模式 96
5.5.2 自頂向下集成測試 96
5.5.3 自底向上集成測試 97
5.5.4 混合策略 97
5.5.5 持續(xù)集成測試 98
5.6 單元測試工具 101
5.6.1 JUnit介紹 102
5.6.2 用JUnit進(jìn)行單元測試 103
5.6.3 微軟VSTS的單元測試 107
5.6.4 開源工具 108
5.6.5 商業(yè)工具 111
小 結(jié) 113
思考題 114
實(shí)驗(yàn)4 單元測試實(shí)驗(yàn) 114
第6章 系統(tǒng)功能測試 117
6.1 功能測試 117
6.1.1 功能測試范圍分析 118
6.1.2 LOSED模型 119
6.2 功能測試用例的設(shè)計(jì) 120
6.2.1 等價(jià)類劃分法 120
6.2.2 邊界值分析法 124
6.2.3 循環(huán)結(jié)構(gòu)測試的綜合方法 126
6.2.4 因果圖法 127
6.2.5 決策表方法 130
6.2.6 功能圖法 133
6.2.7 正交試驗(yàn)設(shè)計(jì)方法 134
6.3 易用性測試 137
6.3.1 可用性的內(nèi)部測試 138
6.3.2 易用性的外部測試 140
6.4 功能測試執(zhí)行 141
6.4.1 功能測試套件的創(chuàng)建 142
6.4.2 回歸測試 143
6.5 功能測試工具 144
6.5.1 如何使用功能測試工具 144
6.5.2 開源工具 146
6.5.3 商業(yè)工具 147
小 結(jié) 150
思考題 150
實(shí)驗(yàn)5 系統(tǒng)功能測試 151
第7章 系統(tǒng)非功能性測試 153
7.1 非功能性的系統(tǒng)測試需求 153
7.2 概念:負(fù)載測試、壓力測試和性能
測試 157
7.2.1 背景及其分析 157
7.2.2 定義 158
7.3 負(fù)載測試技術(shù) 159
7.3.1 負(fù)載測試過程 159
7.3.2 輸入?yún)?shù) 160
7.3.3 輸出參數(shù) 163
7.3.4 場景設(shè)置 163
7.3.5 負(fù)載測試的執(zhí)行 165
7.3.6 負(fù)載測試的結(jié)果分析 166
7.4 性能測試 167
7.4.1 如何確定性能需求 167
7.4.2 性能測試類型 168
7.4.3 性能測試的步驟 169
7.4.4 一些常見的性能問題 171
7.4.5 容量測試 172
7.5 壓力測試 173
7.6 性能測試工具 174
7.6.1 特性及其使用 174
7.6.2 開源工具 176
7.6.3 商業(yè)工具 178
7.7 兼容性測試 181
7.7.1 兼容性測試的內(nèi)容 181
7.7.2 系統(tǒng)兼容性測試 182
7.7.3 數(shù)據(jù)兼容性測試 183
7.8 安全性測試 184
7.8.1 安全性測試的范圍 184
7.8.2 Web安全性的測試 185
7.8.3 安全性測試工具 187
7.9 容錯(cuò)性測試 188
7.9.1 負(fù)面測試 189
7.9.2 故障轉(zhuǎn)移測試 189
7.10 可靠性測試 191
小 結(jié) 192
思考題 193
實(shí)驗(yàn)6 系統(tǒng)性能測試 193
實(shí)驗(yàn)7 安全性測試 194
第8章 移動(dòng)應(yīng)用App的測試 196
8.1 移動(dòng)應(yīng)用測試的特點(diǎn) 196
8.2 移動(dòng)App功能測試 198
8.2.1 面向接口的自動(dòng)化測試 198
8.2.2 Android App UI自動(dòng)化測試 203
8.2.3 iOS App UI自動(dòng)化測試 213
8.2.4 跨平臺的App UI自動(dòng)化測試 217
8.3 專項(xiàng)測試 219
8.3.1 耗電量測試 219
8.3.2 流量測試 221
8.4 性能測試 223
8.4.1 Android內(nèi)存分析 224
8.4.2 iOS內(nèi)存分析 226
8.5 移動(dòng)App“閃退”的測試 228
8.6 安全性測試 228
8.7 用戶體驗(yàn)測試 229
小 結(jié) 231
思考題 231
實(shí)驗(yàn)8 系統(tǒng)功能測試 232
第9章 缺陷報(bào)告 233
9.1 一個(gè)簡單的缺陷報(bào)告 233
9.2 缺陷報(bào)告的描述 234
9.2.1 缺陷的嚴(yán)重性和優(yōu)先級 235
9.2.2 缺陷的類型和來源 236
9.2.3 缺陷附件 236
9.2.4 完整的缺陷信息列表 237
9.3 如何有效地報(bào)告缺陷 238
9.4 軟件缺陷的處理和跟蹤 239
9.4.1 軟件缺陷生命周期 239
9.4.2 缺陷的跟蹤處理 241
9.4.3 缺陷狀態(tài)報(bào)告 241
9.5 缺陷分析 242
9.5.1 實(shí)時(shí)趨勢分析 242
9.5.2 累計(jì)趨勢分析 244
9.5.3 缺陷分布分析 246
9.6 缺陷跟蹤系統(tǒng) 247
小 結(jié) 249
思考題 249
第10章 測試計(jì)劃和管理 250
10.1 測試的原則 250
10.2 測試計(jì)劃 253
10.2.1 概述 253
10.2.2 測試計(jì)劃過程 254
10.2.3 測試目標(biāo) 255
10.2.4 測試策略 256
10.2.5 制訂有效的測試計(jì)劃 259
10.3 測試范圍分析和工作量估計(jì) 259
10.3.1 測試范圍的分析 260
10.3.2 工作量的估計(jì) 261
10.4 測試資源要求和進(jìn)度管理 263
10.4.1 測試資源需求 263
10.4.2 測試進(jìn)度管理 265
10.5 測試風(fēng)險(xiǎn)的控制 266
10.5.1 主要存在的風(fēng)險(xiǎn) 267
10.5.2 控制風(fēng)險(xiǎn)的對策 268
10.5.3 測試策略的執(zhí)行 269
10.6 測試報(bào)告 271
10.6.1 評估測試覆蓋率 271
10.6.2 基于軟件缺陷的質(zhì)量評估 273
10.6.3 測試報(bào)告的書寫 274
10.7 測試管理工具 275
10.7.1 測試管理系統(tǒng)的構(gòu)成 275
10.7.2 主要工具介紹 277
小 結(jié) 278
思考題 279
附錄 280
附錄A 軟件測試術(shù)語中英文對照 280
附錄B 測試計(jì)劃簡化模板 285
附錄C 測試用例設(shè)計(jì)模板 287
附錄D 軟件缺陷模板 289
附錄E 軟件測試報(bào)告模板 291
附錄F 參考文獻(xiàn)和資源 294