軟件測試是一門涉及廣泛知識的學(xué)科, 軟件測試行業(yè)在國內(nèi)方興未艾, 測試工程師們亟須掌握各種測試技術(shù)和工具, 測試團(tuán)隊(duì)的管理也亟須完善和提高。本書在編寫過程中考慮到測試人員的需求, 尤其是測試新手對各種知識的需求, 提供了豐富的測試知識: 首先介紹了國內(nèi)外先進(jìn)的測試技術(shù)和測試?yán)砟? 如微軟的測試方法、RUP中的測試過程、敏捷測試的理念等; 其次詳細(xì)講述了幾個(gè)主要測試工具的使用, 如LoadRunner、AppScan等; 然后介紹了各種常用的開源測試工具, 為期待引入開源測試工具的團(tuán)隊(duì)提供參考; 最后, 結(jié)合項(xiàng)目實(shí)踐, 介紹了自動(dòng)化測試框架的開發(fā)。本書在每章的最后, 針對本章重要內(nèi)容給出習(xí)題, 方便大家進(jìn)行自測。
本書在介紹各種測試方法和技術(shù)時(shí),采用了淺顯易懂的例子,在介紹測試工具時(shí)也使用了大量的例子和代碼,方便讀者自己進(jìn)行實(shí)踐和演練,在介紹測試工具的開發(fā)時(shí)更是提供了豐富完整的開發(fā)示例代碼,讀者可直接使用,或者根據(jù)自己的實(shí)際情況進(jìn)行調(diào)整。
作者為編寫經(jīng)驗(yàn)豐富的工作室和教學(xué)經(jīng)驗(yàn)豐富的高校老師相結(jié)合,密切緊跟行業(yè)需求,內(nèi)容詳細(xì)實(shí)用。曾經(jīng)出版過一系列暢銷書籍。
第1篇 軟件測試的理論基礎(chǔ)
第1章 了解軟件測試行業(yè) 2
1.1 軟件測試的發(fā)展歷程 2
1.2 軟件測試的組織形式 4
1.2.1 軟件鼻祖微軟的經(jīng)驗(yàn)教訓(xùn) 4
1.2.2 軟件測試組織的雛形 4
1.2.3 組織形式的分類 5
1.2.4 綜合型的測試組織 6
1.3 軟件開發(fā)模式的分類 7
1.3.1 軟件開發(fā)模式的發(fā)展 7
1.3.2 線性模型 8
1.3.3 漸進(jìn)式模型 8
1.3.4 變換模型 9
1.3.5 RUP過程模型 9
1.3.6 敏捷運(yùn)動(dòng) 11
1.3.7 極限編程(XP) 12
1.4 不同軟件開發(fā)模式下的軟件測試 13
1.4.1 CMMI和ISO中的軟件測試 13
1.4.2 CMMI與軟件測試 13
1.4.3 ISO與軟件測試 14
1.4.4 敏捷開發(fā)中的軟件測試 15
1.5 小結(jié) 16
1.6 習(xí)題 16
第2章 軟件質(zhì)量與軟件測試 18
2.1 軟件質(zhì)量屬性 18
2.1.1 質(zhì)量的3個(gè)層次 18
2.1.2 軟件質(zhì)量模型 19
2.1.3 ISO 9000質(zhì)量管理體系與八項(xiàng)質(zhì)量管理原則 20
2.1.4 ISO 9000質(zhì)量管理體系的建立過程 20
2.1.5 CMMI質(zhì)量管理體系與過程改進(jìn) 21
2.1.6 結(jié)合PSP、TSP建立CMMI過程
改進(jìn)體系 21
2.1.7 應(yīng)用PDCA質(zhì)量控制法持續(xù)改進(jìn)軟件質(zhì)量 21
2.2 軟件質(zhì)量保證與軟件測試 22
2.2.1 SQA與軟件測試 22
2.2.2 SQA的工作內(nèi)容 22
2.2.3 QA與QC的區(qū)別 23
2.3 小結(jié) 23
2.4 習(xí)題 24
第3章 軟件測試的目的與原則 25
3.1 軟件測試的目的 25
3.1.1 測試是為了建立軟件的信心 25
3.1.2 軟件測試與軟件信心的關(guān)系 25
3.1.3 軟件測試的兩面性 26
3.1.4 軟件測試的驗(yàn)證與確認(rèn) 26
3.1.5 測試是一種服務(wù) 27
3.2 軟件測試應(yīng)該遵循的原則 27
3.2.1 Good enough原則 27
3.2.2 Pareto原則 28
3.2.3 盡可能早開展測試 28
3.2.4 在發(fā)現(xiàn)比較多錯(cuò)誤的地方需要投入更多的測試 29
3.2.5 同化效應(yīng) 29
3.3 小結(jié) 29
3.4 習(xí)題 30
第4章 軟件測試的方法論 31
4.1 軟件測試的5大流派 31
4.1.1 分析學(xué)派 31
4.1.2 標(biāo)準(zhǔn)學(xué)派 32
4.1.3 質(zhì)量學(xué)派 32
4.1.4 上下文驅(qū)動(dòng)學(xué)派 32
4.1.5 敏捷學(xué)派 33
4.1.6 不同流派的測試定義 33
4.2 軟件測試的方法應(yīng)用 34
4.2.1 微軟公司的第一類測試 34
4.2.2 微軟公司的第二類測試 35
4.2.3 微軟的缺陷管理 35
4.3 IBM公司的軟件測試方法 35
4.3.1 回歸測試 35
4.3.2 測試的度量 36
4.3.3 用例驅(qū)動(dòng) 36
4.3.4 RUP對軟件測試的分類 36
4.3.5 RUP對測試階段的劃分 38
4.4 自動(dòng)錯(cuò)誤預(yù)防(AEP)方法 38
4.4.1 AEP的基本概念 38
4.4.2 實(shí)現(xiàn)軟件自動(dòng)錯(cuò)誤預(yù)防的5大法則 39
4.5 小結(jié) 41
4.6 習(xí)題 42
第5章 軟件測試的過程管理 44
5.1 軟件測試的各個(gè)階段 44
5.2 測試需求 45
5.2.1 需求規(guī)格說明書的檢查要點(diǎn) 45
5.2.2 需求文檔的檢查步驟 45
5.2.3 通過編寫測試用例來檢查需求 48
5.3 測試的計(jì)劃 49
5.3.1 為什么要制定測試計(jì)劃 49
5.3.2 測試計(jì)劃是對測試過程的整體設(shè)計(jì) 49
5.3.3 確定測試范圍 50
5.3.4 制定測試策略 50
5.3.5 安排好測試資源 51
5.3.6 安排好進(jìn)度 51
5.3.7 計(jì)劃風(fēng)險(xiǎn) 52
5.4 測試的設(shè)計(jì)及測試用例 52
5.4.1 基于需求的測試用例設(shè)計(jì) 52
5.4.2 等價(jià)類劃分法 53
5.4.3 邊界值分析法 54
5.4.4 等價(jià)類+邊界值 56
5.4.5 基本路徑分析法 56
5.4.6 因果圖法 57
5.4.7 場景設(shè)計(jì)法 58
5.4.8 錯(cuò)誤猜測法 59
5.4.9 正交表與TCG的使用 59
5.4.10 利用均勻試驗(yàn)法設(shè)計(jì)測試用例 61
5.4.11 組合覆蓋與PICT的使用 62
5.4.12 分類樹與TESTONA的使用 64
5.4.13 測試用例設(shè)計(jì)的自動(dòng)化 66
5.4.14 敏捷測試用例設(shè)計(jì) 67
5.4.15 測試用例的粒度 67
5.4.16 基于需求的測試用例設(shè)計(jì) 67
5.4.17 測試用例數(shù)據(jù)生成的自動(dòng)化 68
5.5 測試的執(zhí)行 68
5.5.1 測試用例的合理選擇 68
5.5.2 測試的分工與資源利用 69
5.5.3 測試環(huán)境的搭建 69
5.5.4 BVT測試與冒煙測試 70
5.5.5 每日構(gòu)建的基本流程 70
5.5.6 通過每日構(gòu)建來規(guī)范源代碼管理 71
5.5.7 通過每日構(gòu)建來控制版本風(fēng)險(xiǎn) 71
5.6 測試的記錄和跟蹤 72
5.6.1 Bug的質(zhì)量衡量 72
5.6.2 如何錄入一個(gè)合格的Bug 72
5.6.3 Bug報(bào)告應(yīng)該注意的幾個(gè)問題 72
5.6.4 基于QC的缺陷管理 73
5.7 回歸測試 73
5.7.1 為什么會回歸 73
5.7.2 回歸測試的難度 74
5.7.3 基于風(fēng)險(xiǎn)的回歸測試 74
5.8 測試總結(jié)和報(bào)告 75
5.8.1 缺陷分類報(bào)告 76
5.8.2 缺陷趨勢報(bào)告 76
5.8.3 典型缺陷與Bug模式 77
5.8.4 測試中的PDCA循環(huán) 78
5.8.5 客觀全面的測試報(bào)告 79
5.8.6 實(shí)用測試經(jīng)驗(yàn)的總結(jié) 79
5.9 小結(jié) 80
5.10 習(xí)題 80
第2篇 軟件測試的技術(shù)與工具
第6章 軟件測試技術(shù) 82
6.1 常見的軟件測試技術(shù) 82
6.1.1 黑盒測試 82
6.1.2 白盒測試 83
6.1.3 自動(dòng)化測試 84
6.1.4 手工測試 84
6.1.5 單元測試 84
6.1.6 性能測試 86
6.1.7 壓力測試 89
6.1.8 安全測試 89
6.1.9 安裝測試 91
6.1.10 環(huán)境測試 93
6.2 巧用Windows自帶的小工具 95
6.2.1 找到Windows的任務(wù)管理器 95
6.2.2 檢查進(jìn)程駐留 95
6.2.3 檢查內(nèi)存問題 95
6.2.4 檢查網(wǎng)絡(luò)使用情況 95
6.2.5 檢查CPU使用情況 96
6.2.6 Perfmon的性能監(jiān)控 97
6.2.7 NetStat的網(wǎng)絡(luò)監(jiān)視 100
6.3 小結(jié) 101
6.4 習(xí)題 101
第7章 測試管理工具QC的應(yīng)用 103
7.1 測試管理平臺 103
7.1.1 測試過程管理規(guī)范化 103
7.1.2 測試管理平臺—QC簡介 104
7.1.3 QC安裝 105
7.2 測試需求管理 110
7.2.1 定義測試需求 110
7.2.2 把需求項(xiàng)轉(zhuǎn)換成測試計(jì)劃 111
7.3 測試計(jì)劃管理 112
7.3.1 測試用例的管理 112
7.3.2 設(shè)計(jì)測試步驟 112
7.3.3 測試用例的重用 113
7.3.4 測試用例對需求項(xiàng)的覆蓋 114
7.4 測試執(zhí)行 115
7.4.1 定義測試集 115
7.4.2 為測試集添加測試用例 115
7.4.3 執(zhí)行測試 116
7.5 缺陷登記與跟蹤 117
7.5.1 添加新缺陷 117
7.5.2 如何避免錄入冗余的缺陷 117
7.5.3 BUG的生命周期 118
7.5.4 把缺陷鏈接到測試 119
7.6 在QC中生成測試報(bào)告的圖表 120
7.7 基于QC的測試項(xiàng)目管理 121
7.7.1 QC的庫結(jié)構(gòu) 121
7.7.2 創(chuàng)建QC項(xiàng)目庫 121
7.7.3 定制項(xiàng)目 121
7.7.4 添加項(xiàng)目組成員 122
7.7.5 自定義QC的數(shù)據(jù)字段 123
7.7.6 配置跟蹤提醒規(guī)則 126
7.7.7 設(shè)置警報(bào)規(guī)則 128
7.7.8 設(shè)置工作流 129
7.7.9 “缺陷模塊”列表自定義 129
7.7.10 腳本編輯器 130
7.7.11 QC項(xiàng)目的導(dǎo)入 導(dǎo)出 131
7.8 小結(jié) 133
7.9 習(xí)題 133
第8章 功能自動(dòng)化測試工具UFT的
應(yīng)用 135
8.1 如何開展功能自動(dòng)化測試 135
8.1.1 選取合適的測試項(xiàng)目來開展自動(dòng)化測試 135
8.1.2 自動(dòng)化測試工程師的知識體系 135
8.1.3 自動(dòng)化測試工具選型 136
8.1.4 自動(dòng)化測試項(xiàng)目計(jì)劃 137
8.2 使用UFT開展功能自動(dòng)化測試 139
8.2.1 UFT的安裝 139
8.2.2 使用UFT錄制腳本 139
8.2.3 使用關(guān)鍵字視圖和專家視圖編輯腳本 142
8.2.4 回放腳本 143
8.2.5 插入檢查點(diǎn) 144
8.3 構(gòu)建功能自動(dòng)化測試框架 147
8.3.1 模塊化框架 147
8.3.2 函數(shù)庫結(jié)構(gòu)框架 149
8.3.3 數(shù)據(jù)驅(qū)動(dòng)框架 150
8.4 小結(jié) 152
8.5 習(xí)題 153
第9章 性能測試工具LoadRunner的應(yīng)用 154
9.1 如何開展性能測試 154
9.1.1 性能測試工程師的素質(zhì)要求 154
9.1.2 認(rèn)識性能測試 155
9.1.3 性能測試的類型 156
9.1.4 性能測試成熟度模型 157
9.1.5 分析和定義性能需求 158
9.1.6 “不成文的”性能需求定義 159
9.1.7 計(jì)劃性能測試 160
9.2 使用LoadRunner開展性能測試 160
9.2.1 LoadRunner簡介 160
9.2.2 LoadRunner基本使用方法和步驟 162
9.2.3 選擇協(xié)議 164
9.2.4 錄制腳本 165
9.2.5 常見腳本回放問題解決 167
9.2.6 修改和完善腳本 168
9.2.7 腳本參數(shù)化 169
9.2.8 添加事務(wù) 170
9.2.9 添加內(nèi)容檢查點(diǎn) 171
9.2.10 性能參數(shù)的選擇和監(jiān)視 172
9.2.11 運(yùn)行場景 173
9.2.12 選擇需要監(jiān)控的性能參數(shù) 173
9.2.13 性能測試報(bào)告與性能瓶頸分析 173
9.3 小結(jié) 175
9.4 習(xí)題 175
第10章 安全漏洞的分析與測試 176
10.1 常見安全漏洞分析 176
10.1.1 緩沖區(qū)溢出 176
10.1.2 整數(shù)溢出 178
10.1.3 命令注入 179
10.1.4 SQL注入 179
10.1.5 XSS – 跨站腳本攻擊 181
10.2 使用AppScan進(jìn)行安全測試 183
10.2.1 AppScan簡介 183
10.2.2 利用AppScan進(jìn)行Web安全測試 183
10.2.3 使用AppScan測試AltoroJ項(xiàng)目 184
10.3 小結(jié) 187
10.4 習(xí)題 188
第11章 單元測試工具M(jìn)STest的應(yīng)用 189
11.1 單元測試范圍管理 189
11.1.1 單元測試的分類 189
11.1.2 靜態(tài)單元測試 190
11.1.3 動(dòng)態(tài)單元測試 191
11.1.4 單元測試的要求 191
11.1.5 單元測試的效果 191
11.1.6 單元測試的范圍 191
11.2 單元測試的過程管理 192
11.2.1 單元測試的過程策劃 192
11.2.2 單元測試的組織 192
11.2.3 單元測試模式的選擇 192
11.2.4 單元測試的策略 192
11.2.5 單元測試用例的設(shè)計(jì) 193
11.2.6 代碼標(biāo)準(zhǔn)和規(guī)范 193
11.2.7 代碼審查制度 193
11.2.8 單元測試的流程 194
11.2.9 單元測試與每日構(gòu)建的結(jié)合 194
11.2.10 單元測試的自動(dòng)化方面 195
11.3 單元測試的質(zhì)量度量 196
11.3.1 單元測試覆蓋率 196
11.3.2 單元測試評審 197
11.4 單元測試工具M(jìn)STest的應(yīng)用 197
11.4.1 建立單元測試項(xiàng)目 198
11.4.2 巧用NMock對象 199
11.4.3 對缺乏接口實(shí)現(xiàn)的類的方法進(jìn)行測試 199
11.4.4 使用NMock對象 200
11.4.5 使用NMock的場合 201
11.4.6 單元測試的執(zhí)行 201
11.4.7 測試管理 201
11.4.8 運(yùn)行測試代碼 201
11.4.9 查看測試結(jié)果 201
11.5 數(shù)據(jù)驅(qū)動(dòng)的單元測試 202
11.5.1 為什么要使用數(shù)據(jù)驅(qū)動(dòng)的方式 202
11.5.2 創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)單元測試 202
11.5.3 使用數(shù)據(jù)源 204
11.5.4 使用配置文件定義數(shù)據(jù)源 204
11.5.5 編寫單元測試代碼使用配置文件定義的數(shù)據(jù)源 205
11.6 小結(jié) 206
11.7 習(xí)題 206
第12章 開源測試工具 207
12.1 開源測試工具簡介 207
12.1.1 開源的背景 207
12.1.2 開源測試工具的發(fā)展現(xiàn)狀 207
12.1.3 開源測試工具的分布 207
12.1.4 開源測試工具的來源 208
12.1.5 開源測試工具的優(yōu)勢 208
12.1.6 開源測試工具的不足 208
12.2 常用開源測試工具介紹—測試管理類 209
12.2.1 Bugzilla 209
12.2.2 Mantis 210
12.2.3 BugFree 211
12.2.4 綜合比較 211
12.3 常用開源測試工具介紹—單元測試類 212
12.3.1 NUnit 212
12.3.2 NMock 213
12.3.3 NUnitForms 214
12.4 常用開源測試工具介紹—性能測試類 215
12.4.1 JMeter 215
12.4.2 TestMaker 217
12.4.3 DBMonster 217
12.5 常用開源測試工具介紹—自動(dòng)化功能測試類 219
12.5.1 Abbot Java GUI Test Framework 220
12.5.2 White 221
12.5.3 Watir 222
12.6 如何在測試組中引入開源測試工具 224
12.6.1 開源測試工具的成本考慮 224
12.6.2 引入開源測試工具的步驟 224
12.6.3 引入開源測試工具可能碰到的問題 225
12.7 小結(jié) 226
12.8 習(xí)題 226
第13章 用戶界面測試管理 227
13.1 用戶界面測試的必要性 227
13.2 如何進(jìn)行用戶界面測試 228
13.2.1 用戶界面測試的時(shí)機(jī) 228
13.2.2 后期修改界面的風(fēng)險(xiǎn) 228
13.2.3 界面測試遺漏 228
13.2.4 用戶界面測試的要點(diǎn) 228
13.2.5 減少用戶的工作量 229
13.2.6 “少就是多” 229
13.3 用戶界面測試原則 229
13.3.1 親和力 230
13.3.2 協(xié)助 231
13.3.3 有效 232
13.3.4 鼓勵(lì) 232
13.3.5 熟悉 233
13.3.6 明顯 233
13.3.7 個(gè)性化 234
13.3.8 安全 234
13.3.9 滿意 235
13.3.10 簡單 235
13.3.11 支持 235
13.3.12 多樣性 236
13.4 小結(jié) 236
13.5 習(xí)題 237
第14章 自動(dòng)化測試項(xiàng)目實(shí)戰(zhàn) 238
14.1 自動(dòng)化測試用例設(shè)計(jì) 238
14.1.1 手工測試用例與自動(dòng)化測試用例 238
14.1.2 測試類型 239
14.1.3 自動(dòng)化測試用例編寫原則 239
14.2 BBS社區(qū)項(xiàng)目實(shí)戰(zhàn) 240
14.2.1 準(zhǔn)備工作 240
14.2.2 項(xiàng)目結(jié)構(gòu)介紹 241
14.2.3 配置文件 241
14.2.4 樣本與執(zhí)行結(jié)果 242
14.2.5 編寫測試用例 242
14.2.6 執(zhí)行測試用例 245
14.3 小結(jié) 245
14.4 習(xí)題 245
收起全部↑