HI,BUGS——全面軟件測試

-
【作 者】黃文高 編著
【I S B N 】978-7-5170-4411-6
【責任編輯】張玉玲
【適用讀者群】科技
【出版時間】2016-06-20
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】440
【千字數】640
【印 張】27.5
【定 價】¥68
【叢 書】暫無分類
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書主要介紹企業軟件測試的流程、方法和技術。本書分四大部分:理論篇、設計篇、技術篇和擴展篇。理論篇主要介紹軟件測試的基礎知識;設計篇主要介紹企業中真實的軟件測試的流程,包括測試計劃、設計、執行、結果報告等,尤其是如何對缺陷進行度量,是本部分內容的一大亮點。技術篇主要介紹系統測試過程中其他的相關測試技術,包括Web測試技術、本地化與國際化測試、兼容性測試和易用性測試。擴展篇主要介紹了當前流行的性能測試和自動化測試,通過實例講述了性能測試和自動化測試的全過程。
本書內容由淺入深、由理論到實踐。希望能幫助初學者迅速了解軟件測試的全過程及相關技術,同時也可以幫助中高級工程師進一步提高軟件測試技能。
脫離測試設計的用例編寫,是無源之水
沒有度量及分析的缺陷管理,是舍本逐末
超過10年的軟件測試經驗,干貨遍地
全面深入需求分析、測試策略、測試流程、缺陷管理、度量及分析
企業真實軟件測試流程,超級實用
Bugs,不見不如相見
從去年5月份開始對這本書升級,直到今年3月份才將本書升級完成,花費的時間實在是比較長。由于最近軟件測試課程講得太多,還有一些煩瑣的事情需要課后處理,所以每天留給寫書的時間比較少,導致書稿延期。
這幾年做的企業內訓比較多,因此經常有機會與一些企業的軟件測試工程師進行深入的交流。關于軟件測試,不少測試工程師都存在以下較為典型的認識誤區:
(1)唯工具論。
很多軟件測試工程師重視各種測試工具的學習和使用,而不重視對軟件測試方法、流程等方面的學習與研究。
(2)總覺得黑盒測試很簡單,沒什么技術含量。
做自動化和性能測試的工資明顯比做手工測試的工資高,這是客觀存在的現象,但并不能說做自動化或性能測試就可以不用來研究測試設計及測試流程。站在公司的層面,測試設計與測試流程是產品質量的保障,自動化測試也好,性能測試也好,只是一種測試手段,他們更多的是使用工具代替了手工測試,但并不能保證測試的全面性。而測試的全面性與科學性還是由測試設計、測試流程來決定的。
黑盒測試很簡單沒有技術含量,這是很多做了多年測試的人常犯的錯誤。如果黑盒測試沒有技術含量,為什么很多公司做的黑盒測試都不理想呢?通常來說,認為一件事或一門技術很簡單有兩個方面的原因:一是由于這個人確實很強,對他來說這個內容確實很簡單;二是自己掌握的知識很淺,即我們通常說的“半桶水”,由于對知識體系了解得不全面而覺得簡單。很多做了幾年測試的工程師,可能始終沒搞明白一個問題:產品究竟什么時候可以發布?筆者幾年前做測試的時候也有過一樣的困惑。
由于白盒測試主要由開發人員完成,所以我們一般說的測試主要是指黑盒測試,嚴格說來性能測試和自動化測試也都屬于黑盒測試的范疇。很多年前當筆者剛接觸測試時,筆者也曾經迷茫過,也像很多朋友一樣,認為黑盒測試沒有技術含量,只有用例設計和測試執行,但真正走進測試領域后,發現事實遠非如此簡單:
(1)為什么用例設計總是不全面?
(2)為什么測試用例發現的問題總是很少,很多的問題不是按測試用例執行來發現的,而是一些其他方面的操作發現的?
(3)為什么測試報告幾乎沒什么有用的數據,只是簡單地描述用例執行情況,對缺陷幾乎沒有任何分析,也不知道為什么產品或系統就可以發布了?
(4)為什么幾乎從沒認真分析過測試需求,甚至不清楚需求到底是怎么來的?
而解決諸多類似的問題,正是筆者編寫本書的目的。必須明確指出,黑盒測試的核心并非測試工具的掌握和使用;黑盒測試并不簡單,需要有完整的理論指導及嚴格的方法訓練。
概括說來,測試的核心工作可歸結為測試流程、測試設計及缺陷管理和分析。
(1)測試流程:不能只對測試流程有一個了解,而是必須要對測試流程中每個步驟都很熟悉,并且知道每個步驟可能存在的問題,評估需要注意的事項,在流程優化方面有自己的見解最好。
(2)測試設計:其實很多人不知道測試設計是什么意思,很多測試工程師只知道測試用例設計,但其實用例設計不能等同于測試設計,測試設計包含三個步驟:需求分析、測試分析、用例設計。
(3)缺陷管理和分析:缺陷管理是大家目前都在做的,但缺陷分析很少有公司在做,這就導致在寫測試報告時,測試報告的內容幾乎沒什么有價值的數據,都是一些無關緊要的內容。其實測試報告中應該對缺陷進行一定程度的分析和對缺陷進行度量,這樣才能更好地分析產品或系統是否達到發布標準。
我把本書定位為一本系統、詳細、實用的學習軟件測試用書,所以,本書的內容分為四大部分:理論篇、設計篇、技術篇和擴展篇。
理論篇主要內容有:軟件測試的發展、缺陷的引入、修改缺陷的成本、測試成本以及測試工程師的職責,系統生命周期中的測試策略、測試模型,軟件測試組織的發展。
設計篇包括七個章節的內容。首先講了測試的整個流程,然后是軟件質量模型、測試設計和用例設計方法。測試設計和測試用例設計是測試過程中的核心內容,直接影響著軟件測試的質量,所以一般說來,我們的用例設計需要建立在測試設計分析的基礎上。但在實際的測試過程中,很多人經常忽略測試分析而直接進行用例設計。所以測試設計和測試用例設計也是本篇的核心內容。測試用例不僅需要設計,還需要進行有效的管理和維護,以便我們通過分析缺陷來改善測試流程。所以,本部分還詳細講解了如何對缺陷進行有效的管理和分析。
技術篇的內容更加豐富多彩,包括了Web測試、本地化與國際化測試、兼容性測試和易用性測試,當然,還有Web測試中不可或缺的Web 安全性測試。
擴展篇內容包含:功能測試及其他測試技術,主要介紹了性能測試和自動化測試,并且通案例詳細介紹性能測試和自動化測試的過程;接著介紹了驗收測試和文檔測試;最后介紹如何制定自己的職業規劃。
經過近一年的努力,書稿終于完成。在這里我感謝所有曾經幫助、支持和鼓勵過我的朋友。由于筆者水平有限,很多內容是自己的經驗總結,出現錯誤在所難免,歡迎廣大讀者批評指正。讀者在閱讀本書的過程中如有任何不清楚的問題和批評建議,可以發郵件到arivnhuang@163.com,作者將盡力給您答疑解惑。
Bugs,不見不如相見,相見不要再見!
第一部分 理論篇
第1章 軟件測試概述 2
1.1 軟件測試發展歷史 2
1.2 歷史教訓 5
1.2.1 1962年,“水手1號”火箭爆炸 5
1.2.2 1978年,哈特福德體育場倒塌 5
1.2.3 “5•19”南方六省斷網事件 6
1.2.4 2003年,美加停電事故 6
1.3 軟件測試定義 7
1.4 軟件測試分類 8
1.4.1 黑盒、白盒、灰盒測試的區別 9
1.4.2 動態與靜態測試的區別 10
1.4.3 手工與自動化測試的區別 11
1.5 軟件測試階段 11
1.5.1 軟件測試階段劃分 12
1.5.2 回歸測試 12
1.6 小結 14
第2章 系統生命周期中的測試策略 15
2.1 測試級別 15
2.1.1 組件測試 15
2.1.2 集成測試 16
2.1.3 系統測試 17
2.1.4 驗收測試 18
2.2 測試在質量體系中的位置 18
2.2.1 能力成熟度模型集成 18
2.2.2 基于過程中的質量 20
2.3 軟件測試模型 23
2.3.1 瀑布模型 23
2.3.2 V模型 25
2.3.3 W模型 26
2.3.4 H模型 27
2.3.5 X模型 28
2.4 系統生命周期中的測試策略 30
2.4.1 開發階段的測試策略 31
2.4.2 產品階段的測試策略 31
2.5 小結 33
第3章 軟件測試組織 34
3.1 測試部在企業的位置 34
3.2 項目團隊模型 35
3.3 測試組織的演變 37
3.4 測試工程師晉升通道 38
3.5 測試工程師職業發展 39
3.6 小結 40
第二部分 設計篇
第4章 軟件測試過程 42
4.1 測試過程模型 42
4.2 計劃與控制 43
4.2.1 關鍵過程域 43
4.2.2 階段度量指標 58
4.2.3 能力評價 59
4.3 分析與設計 59
4.3.1 關鍵過程域 60
4.3.2 階段度量指標 63
4.3.3 能力評價 64
4.4 實現與執行 64
4.4.1 關鍵過程域 64
4.4.2 階段度量指標 66
4.4.3 能力評價 66
4.5 評估與報告 66
4.5.1 關鍵過程域 66
4.5.2 階段度量指標 70
4.5.3 能力評價 70
4.6 結束活動 70
4.6.1 關鍵過程域 70
4.6.2 階段度量目標 71
4.6.3 能力評價 71
4.7 小結 71
第5章 軟件質量模型 72
5.1 軟件質量框架 72
5.1.1 質量途徑 72
5.1.2 產品質量和生存周期 73
5.2 外部和內部質量模型 74
5.2.1 功能性(Functionality) 75
5.2.2 可靠性(Reliability) 76
5.2.3 易用性(Usability) 78
5.2.4 效率(Efficiency) 79
5.2.5 可維護性(Maintainability) 80
5.2.6 可移植性(Portability) 81
5.3 使用質量的質量模型 83
5.4 小結 84
第6章 測試需求分析過程 85
6.1 測試需求分析相關概念 85
6.2 需求的特性 88
6.3 原始需求收集及整理 90
6.4 需求繼承性分析 92
6.5 確定測試原始需求 100
6.6 測試需求分析 101
6.6.1 測試規格分析準備 101
6.6.2 測試類型分析 103
6.6.3 功能交互分析 104
6.7 生成最終產品規格 104
6.8 需求跟蹤矩陣 105
6.9 小結 109
第7章 測試設計 110
7.1 MFQ測試設計模型概述 110
7.2 建模 111
7.2.1 建模的維度 111
7.2.2 PRDCS建模方法 114
7.3 設計用例覆蓋模型 118
7.3.1 M(Mode) 118
7.3.2 F(Function) 119
7.3.3 Q(Quality) 119
7.4 確定測試數據 120
7.4.1 M(Mode) 120
7.4.2 F(Function) 120
7.4.3 Q(Quality) 120
7.5 非正式測試 121
7.6 小結 121
第8章 測試用例設計及管理 122
8.1 測試用例概述 122
8.1.1 寫測試用例的優勢 122
8.1.2 測試用例項 123
8.2 黑盒測試用例設計方法 126
8.2.1 等價類測試用例設計方法 126
8.2.2 邊界值測試用例設計方法 132
8.2.3 場景法測試用例設計方法 134
8.2.4 因果圖測試用例設計方法 141
8.2.5 判定表測試用例設計方法 144
8.2.6 正交試驗測試用例設計方法 148
8.2.7 狀態遷移圖測試用例設計方法 152
8.2.8 輸入域測試用例設計方法 155
8.2.9 輸出域測試用例設計方法 155
8.2.10 異常分析測試用例設計方法 155
8.2.11 錯誤猜測測試用例設計方法 155
8.3 測試用例評審 156
8.4 測試用例變更 158
8.5 小結 159
第9章 缺陷管理與分析 160
9.1 缺陷報告的發展 160
9.1.1 Bug的由來 161
9.1.2 一份簡單的缺陷報告 161
9.1.3 一份好的缺陷報告 161
9.2 相關術語 163
9.3 缺陷管理 163
9.3.1 缺陷的嚴重等級 163
9.3.2 缺陷的管理流程 164
9.3.3 缺陷的生命周期 166
9.3.4 缺陷的狀態轉變 167
9.4 缺陷特性 169
9.4.1 缺陷雪崩效應 169
9.4.2 缺陷成本放大效應 170
9.4.3 缺陷集群效應 170
9.4.4 缺陷的收斂性 170
9.5 缺陷修復成本 171
9.5.1 缺陷修復成本與研發階段的關系 172
9.5.2 缺陷修復成本 173
9.6 缺陷分析方法 174
9.6.1 根本原因缺陷分析法 174
9.6.2 四象限缺陷分析法 177
9.6.3 ODC缺陷分析法 180
9.6.4 Rayleigh缺陷分析法 184
9.6.5 Gompertz缺陷分析法 187
9.7 缺陷遏制能力 189
9.7.1 缺陷引入與移除矩陣 189
9.7.2 缺陷預防的特性 190
9.7.3 缺陷預防的過程 191
9.8 缺陷監控 197
9.8.1 缺陷收斂趨勢 197
9.8.2 缺陷分布 197
9.8.3 無效缺陷 198
9.8.4 缺陷修復 199
9.9 缺陷度量 199
9.9.1 缺陷密度度量 199
9.9.2 客戶角度 201
9.9.3 功能點 202
9.10 常用的缺陷管理系統 203
9.10.1 開源缺陷管理系統 204
9.10.2 商業化缺陷管理系統 206
9.11 小結 206
第10章 單元測試 208
10.1 單元測試介紹 208
10.1.1 單元測試定義 208
10.1.2 單元測試的重點 209
10.1.3 單元測試環境 212
10.1.4 單元測試策略 215
10.2 靜態測試技術 217
10.2.1 代碼走查 217
10.2.2 控制流分析 218
10.2.3 數據流分析 219
10.2.4 信息流分析 220
10.3 動態測試技術 222
10.3.1 語句覆蓋 222
10.3.2 判定覆蓋 223
10.3.3 條件覆蓋 224
10.3.4 判定/條件覆蓋 224
10.3.5 路徑覆蓋 225
10.3.6 基本路徑覆蓋 226
10.4 CppUnit自動化單元測試框架 231
10.5 小結 238
第三部分 技術篇
第11章 系統測試 240
11.1 系統測試概述 241
11.2 功能測試 241
11.3 易用性測試 243
11.4 可安裝性測試 244
11.4.1 安裝過程測試 244
11.4.2 不同環境下的安裝 244
11.4.3 系統升級測試 245
11.4.4 安裝的文件存放 245
11.4.5 卸載測試 246
11.5 異常測試 246
11.6 壓力測試 248
11.7 GUI測試 249
11.8 兼容性測試 252
11.9 性能測試 252
11.10 安全性測試 252
11.11 配置測試 254
11.12 可靠性測試 254
11.13 健壯性測試 254
11.14 系統測試過程 255
11.15 小結 258
第12章 Web系統測試 259
12.1 功能測試 259
12.1.1 鏈接測試 259
12.1.2 表單測試 262
12.1.3 Cookies測試 263
12.1.4 設計語言測試 265
12.1.5 數據庫測試 266
12.1.6 文件上傳測試 267
12.2 性能測試 267
12.2.1 鏈接速度測試 267
12.2.2 負載測試 267
12.2.3 壓力測試 268
12.3 GUI測試 268
12.3.1 格式驗證 268
12.3.2 導航條測試 268
12.3.3 頁面排版測試 269
12.3.4 拼寫和語法測試 270
12.3.5 標簽屬性測試 271
12.3.6 頁面源文件測試 271
12.3.7 Tab鍵測試 272
12.4 兼容性測試 272
12.5 安全性測試 272
12.5.1 Web漏洞掃描 273
12.5.2 服務器端信息測試 273
12.5.3 文件和目錄測試 281
12.5.4 認證測試 286
12.5.5 會話管理測試 290
12.5.6 權限管理測試 292
12.5.7 文件上傳下載測試 296
12.5.8 消息泄漏測試 298
12.5.9 輸入數據測試 300
12.5.10 跨站腳本攻擊測試 301
12.5.11 Web Service測試 303
12.6 小結 307
第13章 本地化與國際化測試 308
13.1 本地化與國際化測試概述 308
13.2 國際化測試 310
13.2.1 國際化測試常用術語 310
13.2.2 軟件國際化要求 311
13.2.3 軟件國際化測試方法 314
13.3 本地化測試 315
13.3.1 同步本地化工程模型 315
13.3.2 多語言測試 316
13.3.3 區域文化 317
13.3.4 數據格式 318
13.3.5 熱鍵 320
13.4 小結 321
第14章 兼容性測試 322
14.1 兼容性測試概述 322
14.1.1 向上兼容 323
14.1.2 向下兼容 323
14.1.3 交叉兼容 323
14.2 硬件兼容 324
14.3 軟件兼容 324
14.3.1 瀏覽器兼容 324
14.3.2 分辨率兼容 325
14.3.3 打印機兼容 325
14.4 數據庫兼容 326
14.5 操作系統兼容 326
14.6 數據共享兼容 327
14.7 小結 327
第15章 易用性測試 328
15.1 易用性測試概述 328
15.1.1 易用性的定義 328
15.1.2 UI的七大特征 330
15.2 安裝易用性測試 334
15.3 GUI易用性測試 338
15.3.1 GUI的組成部分 338
15.3.2 GUI測試內容 340
15.4 UI易用性測試 349
15.5 易用性測試的自動化實現 349
15.6 小結 352
第四部分 擴展篇
第16章 性能測試 354
16.1 性能測試概述 354
16.1.1 性能測試的概念 354
16.1.2 性能測試自動化 355
16.2 主流性能測試工具 356
16.3 性能測試常見術語 358
16.3.1 響應時間 358
16.3.2 并發用戶數 358
16.3.3 吞吐量 359
16.3.4 吞吐率 360
16.3.5 點擊率 360
16.3.6 資源使用率 361
16.3.7 性能計數器 361
16.3.8 思考時間 361
16.4 性能測試過程 362
16.5 性能測試實例 365
16.5.1 系統介紹 365
16.5.2 設計 365
16.5.3 構建 368
16.5.4 執行 375
16.5.5 分析、診斷和調節 375
16.5.6 測試結論 378
16.6 小結 378
第17章 自動化測試 379
17.1 自動化測試的概念 379
17.1.1 自動化測試目的和范圍 380
17.1.2 自動化測試需要達到的程度 380
17.1.3 適合自動化測試的對象 381
17.2 自動化測試優點 382
17.3 自動化測試缺點 382
17.4 自動化測試普遍存在的問題 383
17.5 主流自動化測試工具 384
17.6 自動化測試框架 385
17.6.1 自動化測試框架的發展 385
17.6.2 自動化測試框架的開發 387
17.7 自動化測試過程 388
17.8 自動化測試實例 389
17.8.1 系統介紹 390
17.8.2 測試方案及計劃 390
17.8.3 測試用例 392
17.8.4 腳本開發 394
17.8.5 執行測試 406
17.8.6 提交測試報告 406
17.9 小結 406
第18章 驗收測試 407
18.1 驗收測試的內容 407
18.1.1 制定驗收測試的標準 407
18.1.2 復審配置項 408
18.1.3 執行驗收測試 409
18.2 驗收測試的策略 409
18.2.1 正式驗收測試 409
18.2.2 非正式驗收測試 410
18.2.3 Beta測試 410
18.3 驗收測試的過程 411
18.4 實施驗收測試 412
18.5 提交驗收測試報告 413
18.6 小結 414
第19章 文檔測試 415
19.1 文檔的類型 415
19.2 文檔測試的現狀 418
19.3 文檔測試的要點 418
19.4 文檔測試的策略 420
19.5 小結 420
第20章 軟件測試工程師的職業規劃 421
20.1 如何進入軟件測試行業 421
20.2 軟件測試工程師的職責 422
20.3 軟件測試工程師的心態 423
20.4 當前你的工作情況 424
20.5 未來你如何選擇 425
20.5.1 性能測試 425
20.5.2 自動化測試 425
20.5.3 單元測試 426
20.5.4 云測試 426
20.6 如何提高自身技能 427
20.6.1 給自己制定一個目標 427
20.6.2 正規培訓 428
20.6.3 自學 428
20.7 小結 429
參考文獻 430
- 2023年長沙市軟件業發展報告 [主編 肖玉朝 胡伏湘]
- 軟件評測師備考一本通 [張洋洋 編著]
- 軟件測試(微課版)(第二版) [鄭小蓉 萬國德]
- Python數據分析 [主編 馮志輝 趙磊 李放]
- 深入性能測試——LoadRunner性能測試、流程、監控、調優全程實戰 [黃文高 編著]
- 軟件設計師考前沖刺100題 [施游 王曉笛 鄒月平 編著]
- 軟件定義網絡技術與實踐 [主編 但唐仁]
- Python 語言程序設計實踐指導 [主編 張雙獅]
- Photoshop 圖形圖像項目化教程 [主編 胡斌斌 黎婭 蘇大椿]
- 軟件設計師備考一本通 [倪奕文 編著]
- Python程序設計案例教程 [主編 毛錦庚 鐘肖英 周賢來 ]
- 高職院校軟件類專業“類上班制”人才培養模式研究 [楊智勇 王海洋 著]
- 信息技術基礎實訓與習題指導(Windows7+Office2016) [主編 周金容 唐天國]
- 平面設計與制作項目化教程 [主編 李晨]
- 后期影像剪輯技術 [主編 郭建偉]
- Spark大數據處理技術 [主編 劉仁山 周洪翠 莊新妍]
- Python語言同步案例習題精解 [主編 肖朝暉]
- Excel在會計工作中的應用(第三版) [主 編 趙艷莉 耿聰慧]
- 簡單易懂的Python入門教程 [[日]大澤文孝 著]
- Python數據分析之道——Thinking in Pandas [[美]漢娜·斯捷潘內克(Hannah S]
- 軟件工程(微課版) [主編 陳亞峰]
- 計算機應用基礎教程(Windows 10+Office 2019) [主編 聶長浪 賀秋芳 李久仲]
- python青少年趣味編程 [千鋒教育 編著]
- 計算機應用基礎(Windows 7+Office 2016) [主編 王洪平 楊華]
- AutoCAD 2019實例教程(微課版) [主編 王立恒]
- 軟件定義網絡技術與實戰教程 [主編 但唐仁 肖穎]
- 基于ANSYS的復合材料有限元分析和應用(第二版) [李占營 張承承 李成良 編著]
- 軟件評測師考試重難點突破 [張洋洋 編著]
- 大學計算機基礎教程實驗指導與測試題集 [主編 饒拱維 吳華光 巫滿秀]
- 大學計算機基礎教程(Windows 10+Office 2016) [主編 饒拱維 郭其標 房宜汕]