本書第2版繼續(xù)保持了第1版的特點,對軟件測試技術介紹全面,實踐和理論并重,特色是實例多。本書著重介紹軟件測試及管理技術中最重要、最精華的部分,并注重它們的融會貫通。
隨著信息時代的到來、軟件產(chǎn)品的廣泛應用,人們對軟件質量的要求越來越高;同時由于軟件系統(tǒng)變得越來越復雜,如何提高軟件質量是廣大計算機技術人員所關注的,這使得軟件開發(fā)人員和軟件測試人員面臨著巨大挑戰(zhàn);谶@種情況,國內許多高校的計算機、軟件工程和信息管理等相關專業(yè)紛紛開設軟件測試課程以培養(yǎng)更多的軟件測試人才。目前,市場上的軟件測試教材良莠不齊,精品教材少,尤其對軟件測試技術介紹全面、深入的教材更少。為了適應當前教學和軟件測試技術人員的需要,編者查閱了大量國內外有關軟件測試方面的著作和文獻,并結合自己多年的從業(yè)和教學經(jīng)驗編寫了這本教材。
本書在更新修訂教材的同時,第7章和10章增添了部分小節(jié),補充了一些新概念和技術內容。新增加了第9章軟件質量標準。質量標準是質量管理的依據(jù)和基礎,產(chǎn)品質量的優(yōu)劣是由一系列的標準來控制和監(jiān)督產(chǎn)品生產(chǎn)全過程來產(chǎn)生的,因此,質量標準應貫穿企業(yè)質量管理的始終,是提高產(chǎn)品質量的基礎。還新增加了軟件測試管理部分,在測試技術發(fā)展的同時,測試過程的管理顯得尤為重要。一個成功的測試項目,離不開對測試過程科學的組織和監(jiān)控,過程管理已成為測試成功的重要保證。
第1章緒論,主要介紹軟件和軟件危機、軟件開發(fā)過程、軟件缺陷以及著名軟件缺陷案例,為學習本書的后續(xù)內容打好基礎、做好準備。第2章軟件測試基礎,介紹軟件測試的定義、軟件測試的過程、軟件可靠性等。第3章黑盒測試,介紹黑盒測試的基本概念,包括等價類劃分、邊界值分析法、因果圖法、決策表法和正交實驗設計法等。第4章白盒測試,介紹白盒測試的基本概念,詳細闡述了語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋等白盒測試的方法,以及基于缺陷模式的軟件測試概述等內容。第5章單元測試,主要講解了單元測試概述、對單元測試的誤解、單元測試的必要性、單元測試環(huán)境和方法、單元測試策略、單元測試用例設計和單元測試過程。第6章集成測試,介紹集成測試概念、集成測試策略、測試用例設計、測試過程和測試后的調試等。第7章系統(tǒng)測試,包括性能測試、安全性測試、可靠性測試、恢復性測試、備份測試、可用性測試、協(xié)議測試、文檔測試、GUI測試、網(wǎng)站測試、安裝性測試、配置測試、冒煙測試、測試和測試以及回歸測試等。第8章自動化測試及工具,介紹自動化測試概述、自動化測試的實施、自動化測試工具的選擇和比較。第9章軟件質量標準,介紹軟件質量標準概述、軟件能力成熟度模型、CMM與CMMI的區(qū)別、ISO 9000軟件質量標準等。第10章軟件測試行業(yè)綜述,介紹軟件測試行業(yè)的現(xiàn)狀和發(fā)展趨勢,軟件測試技術發(fā)展方向,軟件測試管理、軟件測試人員職位和責任、對軟件測試工程師的要求。本書附錄內容豐富,既有工具性的內容,如軟件測試基本術語中英文詞匯、正交表和IEEE模板;也有非常實用性的內容,如軟件測試工程師面試題、軟件測試工程師考試模擬試題及解析。
本書適合高校計算機專業(yè)、軟件工程或其他相關專業(yè)高年級本科生或研究生軟件測試課程的教材,同時還可以作為廣大軟件開發(fā)人員、軟件測試人員和研究人員的參考書。
在本書的編寫過程中,參閱了很多國內外同行的著作和論文等文獻資料,在此對這些資料的作者表示衷心的感謝!
由于編者的水平有限、時間倉促,書中難免存在疏漏和不足之處,希望讀者批評指正。
編者
2022年11月第1版前言
隨著信息時代的到來,人們對軟件質量的要求越來越高;同時由于軟件系統(tǒng)變得越來越復雜,如何提高軟件質量是廣大計算機技術人員所關注的,這使得軟件開發(fā)人員和軟件測試人員面臨著巨大挑戰(zhàn)。
基于這種情況,國內許多高校的計算機、軟件工程和信息技術等相關專業(yè)紛紛開設軟件測試課程以培養(yǎng)更多的軟件測試人才。目前,市場上的軟件測試教材良莠不齊,精品教材少,尤其是對軟件測試技術介紹全面、深入的教材更少。為了適應當前教學和軟件測試技術人員的需要,編者查閱了大量國內外有關軟件測試方面的著作和文獻,并結合自己多年的從業(yè)和教學經(jīng)驗編寫了這本教材。
本書的特點是測試技術介紹全面,不但闡述了所有基本的軟件測試技術,并附有許多軟件測試實例,從而使讀者更好地理解和掌握軟件測試的基本理論,可以迅速地應用到實際測試工作中去。
全書共分為9章。第1章緒論,主要介紹軟件和軟件危機、軟件開發(fā)過程、軟件缺陷以及著名軟件缺陷案例,為學習本書的后續(xù)內容打好基礎,做好準備。第2章軟件測試基礎,介紹軟件測試的定義、軟件測試的過程,軟件測試的分類,軟件測試的必要性,軟件測試的原則等。第3章黑盒測試,介紹黑盒測試的基本概念,包括等價類劃分、邊界值分析法、因果圖法、決策表法、正交實驗設計法等。第4章白盒測試,介紹白盒測試的基本概念,詳細闡述了語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋等白盒測試的方法以及基于缺陷模式的測試技術等內容。第5章單元測試,主要講解單元測試概述、對單元測試的誤解、單元測試的必要性、單元測試環(huán)境和方法、單元測試策略、單元測試用例設計和單元測試過程。第6章集成測試,介紹集成測試概念、集成測試策略、測試用例設計和測試過程等。第7章系統(tǒng)測試,本章從性能測試、可靠性測試、安全性測試、恢復測試、備份測試、可用性測試、協(xié)議測試、文檔測試、GUI測試、網(wǎng)站測試、測試和測試、回歸測試等方面介紹系統(tǒng)測試。第8章自動化測試及工具,介紹自動化測試概述、自動化測試的實施、自動化測試工具的選擇和比較。第9章軟件測試行業(yè)綜述,介紹了軟件測試行業(yè)的現(xiàn)狀和發(fā)展趨勢,軟件測試技術的發(fā)展方向以及軟件測試人員職位和責任、對軟件測試工程師的要求。本書的附錄內容豐富,既有工具性的內容,如軟件測試基本術語中英文詞匯、正交表和IEEE模板;也有非常實用性的內容,如軟件測試工程師面試題、軟件測試工程師考試模擬試題及解析。
在本書的編寫過程中參閱了大量國內外同行的著作及文獻,汲取了軟件測試領域的最新知識。在此,對這些作者表示深深的感謝。同時,由于編者的水平有限、時間倉促,書中難免存在疏漏和不足之處,希望讀者批評指正。
編者
2014年3月
第1章緒論1
1.1軟件和軟件危機1
1.1.1計算機軟件1
1.1.2軟件危機2
1.2軟件開發(fā)4
1.2.1軟件開發(fā)過程5
1.2.2軟件開發(fā)過程模型6
1.3軟件缺陷9
1.3.1軟件缺陷概述9
1.3.2軟件缺陷的嚴重性和優(yōu)先級11
1.3.3軟件缺陷分類13
1.3.4預防和修復軟件缺陷15
1.3.5軟件缺陷案例17
習題21
第2章軟件測試基礎22
2.1軟件測試的含義22
2.1.1軟件測試的發(fā)展22
2.1.2軟件測試的基本原則23
2.1.3軟件測試與軟件開發(fā)的關系25
2.2軟件測試模型26
2.3軟件測試過程30
2.4軟件測試基本理論33
2.4.1軟件測試用例設計33
2.4.2軟件測試方法36
2.4.3軟件測試的誤區(qū)38
2.5軟件可靠性41
習題44
第3章黑盒測試45
3.1黑盒測試概述45
3.2等價類劃分法46
3.2.1劃分等價類46
3.2.2設計測試用例47
3.2.3等價類劃分法舉例47
3.3邊界值分析法52
3.3.1邊界值分析法的含義53
3.3.2邊界值分析法原理53
3.3.3邊界值分析法舉例55
3.4決策表法57
3.4.1決策表的含義57
3.4.2決策表法舉例58
3.5因果圖分析法62
3.5.1因果圖法的含義62
3.5.2因果圖法的原理62
3.5.3因果圖法舉例64
3.6正交實驗設計法66
3.6.1正交實驗設計法的含義66
3.6.2正交實驗法舉例68
3.7黑盒測試方法比較73
習題74
第4章白盒測試76
4.1白盒測試概述76
4.1.1白盒測試含義76
4.1.2黑盒測試和白盒測試的比較77
4.1.3靜態(tài)測試和動態(tài)測試79
4.1.4程序流程圖和控制流圖80
4.2邏輯覆蓋測試81
4.3白盒靜態(tài)測試86
4.3.1桌前檢查86
4.3.2代碼審查86
4.3.3代碼走查87
4.3.4代碼評審和同行評審87
4.3.5基于缺陷模式測試88
4.4其他白盒測試方法98
4.4.1程序插裝測試98
4.4.2程序變異測試99
4.4.3循環(huán)語句測試100
4.5白盒測試策略101
習題101
第5章單元測試103
5.1單元測試概述103
5.1.1單元測試的定義103
5.1.2單元測試的目標104
5.1.3單元測試的任務104
5.2對單元測試的誤解105
5.3單元測試的必要性108
5.4單元測試環(huán)境和方法109
5.4.1驅動模塊和樁模塊的定義109
5.4.2驅動模塊和樁模塊的使用條件110
5.5單元測試策略111
5.6單元測試用例設計112
5.7單元測試過程和單元測試工具113
5.8面向對象的單元測試115
習題116
第6章集成測試117
6.1集成測試概述117
6.2集成測試方案119
6.2.1大爆炸式集成測試119
6.2.2漸增式集成120
6.2.3幾種集成測試比較123
6.2.4基于功能的集成測試124
6.2.5核心系統(tǒng)先行集成測試124
6.2.6客戶/服務器集成測試125
6.2.7高頻集成測試126
6.3集成測試用例設計127
6.4集成測試過程128
習題130
第7章系統(tǒng)測試132
7.1性能測試135
7.1.1性能測試概述135
7.1.2壓力測試140
7.1.3容量測試142
7.1.4負載測試145
7.2可靠性測試145
7.2.1可靠性測試方法145
7.2.2可靠性測試的數(shù)學模型146
7.3安全性測試148
7.3.1安全性測試概述148
7.3.2安全性測試的主要內容149
7.3.3安全性測試方法150
7.4恢復測試153
7.4.1恢復測試的含義153
7.4.2恢復測試的主要內容和步驟 154
7.4.3恢復測試中一些要注意的地方155
7.5備份測試156
7.6可用性測試156
7.6.1可用性測試概述156
7.6.2可用性測試的發(fā)展157
7.6.3可用性測試方法157
7.6.4可用性測試的必備要素159
7.6.5可用性測試時需要注意的問題161
7.7協(xié)議測試161
7.8文檔測試163
7.8.1文檔測試的含義163
7.8.2文檔測試方法 166
7.9GUI軟件測試167
7.9.1GUI測試概述168
7.9.2GUI軟件測試方法169
7.9.3GUI測試的幾個要素171
7.9.4GUI測試主要內容173
7.9.5GUI測試常見問題175
7.10網(wǎng)站測試175
7.10.1網(wǎng)站測試的含義176
7.10.2網(wǎng)站測試的主要內容176
7.11安裝性測試181
7.11.1安裝性測試的含義181
7.11.2安裝性測試的三個主要方面181
7.11.3安裝和卸載程序測試內容182
7.12配置測試183
7.12.1配置測試的含義183
7.12.2配置測試方法183
7.13冒煙測試184
7.13.1冒煙測試概述184
7.13.2冒煙測試的應用和內容184
7.14測試和測試185
7.15回歸測試187
習題190
第8章自動化測試及工具191
8.1自動化測試概述191
8.1.1自動化測試的含義191
8.1.2自動化測試的優(yōu)點192
8.1.3自動化測試的缺點193
8.1.4自動化測試與手工測試的互補性194
8.2實施自動化測試194
8.2.1自動化測試的對象和范圍194
8.2.2自動功能測試的腳本開發(fā)195
8.3自動化測試工具的選擇與比較197
8.3.1白盒測試工具197
8.3.2黑盒測試工具198
8.3.3測試管理工具199
8.3.4常用自動化測試工具200
8.3.5自動化測試工具QTP205
8.3.6自動化測試工具AutoRunner209
習題213
第9章軟件質量標準214
9.1軟件質量214
9.2軟件質量標準215
9.2.1國際標準215
9.2.2國家標準216
9.2.3行業(yè)標準217
9.2.4企業(yè)標準217
9.2.5其他標準217
9.3軟件能力成熟度模型CMM218
9.3.1CMM的含義218
9.3.2CMM的五個級別219
9.3.3國內軟件企業(yè)參與實施CMM221
9.4能力成熟度整合模型CMMI221
9.4.1CMMI的含義221
9.4.2CMMI的基本內容222
9.4.3CMM與CMMI的區(qū)別223
9.5ISO 9000軟件質量標準224
9.5.1ISO 9000的主要內容224
9.5.2ISO 9000和CMM/CMMI的關系225
9.6其他質量標準225
9.6.1IEEE質量標準226
9.6.2SPICE226
9.6.3ISO/IEC227
習題228
第10章軟件測試行業(yè)綜述229
10.1軟件測試的發(fā)展和現(xiàn)狀229
10.2軟件測試技術的發(fā)展方向232
10.3軟件測試管理234
10.4軟件測試外包240
10.5對軟件測試工程師的要求243
10.5.1軟件測試工作特點243
10.5.2軟件測試工程師246
10.6軟件測試工程師考試251
習題252
附錄A基本術語(中英文詞匯)253
附錄B正交表264
附錄CIEEE模板273
附錄D軟件測試工程師面試題及參考答案275
附錄E全國計算機等級考試四級軟件測試工程師練習題283
參考文獻288