本書系統地介紹了軟件測試的主要技術和方法,全書共分為8章。在討論黑盒測試時介紹了邊界值、等價類、決策表、因果圖等方法,而基于控制流的測試則介紹了語句覆蓋、判定、條件覆蓋、修正判定覆蓋和基本路徑覆蓋;在組合測試方面包括拉丁方陣、正交表等方法,重點討論了成對組合測試方法;基于有限自動機的測試涵蓋了T方法、D方法、W方法、U方法;面向對象語言測試方面包括類屬性、對象屬性測試,基于對象創建和銷毀、裝飾器、多態的軟件測試;基于UML的軟件測試介紹了基于用例圖、類圖、活動圖、序列圖、狀態圖等的測試方法;最后,本書討論基于Petri網的軟件測試、蛻變測試、基于變異的軟件測試以及基于故障樹的軟件測試。
本書結合當前技術發展的特點和工程實踐的需求而編寫,內容新穎,實操性強,既適合于軟件測試和軟件質量保障相關的技術人員在從事軟件測試時參考,也適合作為軟件工程專業的本科生、研究生學習軟件測試課程的教科書。本書封面貼有清華大學出版社防偽標簽,無標簽者不得銷售。
覆蓋等價類、邊界值、決策表、因果圖以及各種基于控制流的覆蓋方法
涵蓋多重繼承、異常、多態、裝飾器等面向對象測試的高級話題。
詳細闡述了當前組合測試的各種技術,介紹各種經典的成對組合測試策略,如CATS、AETG、IPO、GA等。
全面涵蓋有限狀態機FSM的測試方法,如T方法、D方法、W方法、U方法等。
所有的源碼相關例子都給出完整的可運行的Python代碼,方便讀者學習。
詳細介紹基于UML、CPN等模型的測試方法。
其他高級主題包括:蛻變測試、基于變異測試、故障樹測試。
第1章緒論/1
1.1 軟件測試的歷史和發展/1
1.1.1軟件測試的起源/1
1.1.2軟件質量問題/2
1.1.3軟件測試的發展/3
1.2軟件測試術語/5
1.3軟件缺陷管理/9
1.3.1缺陷生存周期/9
1.3.2缺陷的描述及屬性/10
1.4軟件質量模型的發展/12
1.4.1GB/T 16260—1996軟件質量模型/12
1.4.2GB/T 16260—2006軟件質量模型/12
1.4.3ISO/IEC 25010—2014軟件質量
模型/14
1.4.4基于質量模型的軟件測試標準/16
1.5軟件測試模型/17
1.5.1V模型/17
1.5.2W模型/18
1.5.3X模型/19
1.5.4H模型/19
1.6軟件測試的局限性/20
1.6.1軟件測試的覆蓋問題/20
1.6.2窮舉測試的局限性/22
1.6.3缺陷的隱蔽性/23
1.6.4軟件測試的殺蟲劑效應/25
1.7軟件測試的分類/27
1.7.1軟件功能測試分類/27
1.7.2根據測試階段分類/28第2章傳統的黑盒測試/33
2.1邊界值分析/33
2.1.1邊界值分析概念/33
2.1.2邊界值分析原則/34
2.1.3邊界值確定和分析法/35
2.1.4邊界值測試舉例/44
2.2等價類/47
2.2.1等價類的概念/48
2.2.2等價類的劃分及依據/49
2.2.3等價類測試舉例/51
2.3決策表/54
2.3.1決策表的概念/54
2.3.2決策表的建立/54
2.3.3決策表的簡化/55
2.3.4決策表規則數統計/57
2.3.5決策表特性/59
2.3.6決策表測試用例設計/60
2.4因果圖/62
2.4.1因果圖的概念/62
2.4.2因果圖設計/63
2.4.3利用因果圖設計測試用例/63第3章基于控制流的測試/67
3.1概述/67
3.2圖論基礎/72
3.3流程圖結構以及表示/74
3.4Python中的條件和判定/76
3.4.1條件與布爾值認定/76
3.4.2判定與短路計算/79
3.5語句覆蓋/80
3.5.1語句覆蓋定義及其測試/81
3.5.2語句覆蓋的優缺點/84
3.5.3語句覆蓋與死代碼/86
3.6判定覆蓋/88
3.6.1判定覆蓋簡介/88
3.6.2兩路分支覆蓋/89
3.6.3多路分支覆蓋/89
3.6.4不可達分支/91
3.6.5異常處理多分支覆蓋/92
3.6.6復合判定覆蓋/96
3.7條件覆蓋/99
3.7.1簡單條件覆蓋/99
3.7.2條件判定覆蓋/102
3.7.3條件組合覆蓋/106
3.8修正條件判定覆蓋/107
3.8.1修正條件判定覆蓋的定義/107
3.8.2唯一原因法生成MC/DC測試
用例/109
3.8.3屏蔽法生成MC/DC測試用例/111
3.8.4二叉樹法生成MC/DC測試用例/112
3.8.5MC/DC的進一步討論/115
3.9路徑覆蓋/117
3.9.1程序和控制流圖表示/117
3.9.2獨立路徑和圈復雜度/121
3.9.3基本路徑覆蓋/126第4章組合測試/130
4.1多參數的故障模型/130
4.2利用正交表實現測試/132
4.2.1拉丁方陣/132
4.2.2正交表/135
4.2.3正交表的性質/138
4.2.4正交表測試/139
4.3組合測試的數學基礎和定義/143
4.4成對組合測試用例的生成策略/146
4.4.1CATS算法/147
4.4.2AETG法/150
4.4.3IPO法/151
4.4.4GA法/155
4.5可變強度和具有約束的組合測試/157
4.5.1混合強度的組合測試/158
4.5.2參數值之間的約束/160
4.5.3種子組合和負面測試/162第5章基于有限狀態機的測試/167
5.1有限狀態機的定義/167
5.1.1有限狀態機/167
5.1.2確定有限狀態機和非確定有限
狀態機/170
5.1.3確定有限狀態機和非確定有限
狀態機的轉換/172
5.1.4帶狀態輸出的有限自動機/175
5.2基于有限狀態機測試的假設和特性/180
5.3有限狀態機的故障模型/181
5.4基于有限狀態機的測試/183
5.4.1概述/183
5.4.2狀態覆蓋測試/184
5.4.3遷移覆蓋測試/186
5.4.4周游法(T方法)/187
5.4.5區分序列法(D方法)/189
5.4.6特征序列法(W方法)/193
5.4.7唯一輸入/輸出序列(U方法)/202第6章面向對象結構的軟件測試/209
6.1Python面向對象/209
6.2Python面向對象編程基礎/210
6.3基于類屬性和對象屬性的測試/213
6.4基于對象創建和銷毀的測試/220
6.4.1基于類創建和繼承測試/220
6.4.2基于多重繼承初始化方法的測試/223
6.4.3多重繼承方法解釋順序的測試/228
6.4.4基于對象銷毀的測試/229
6.5基于裝飾器的測試/233
6.6基于多態的測試/240第7章基于UML的軟件測試/246
7.1UML概念和建模/246
7.2基于用例的軟件測試/248
7.2.1用例圖的概念/248
7.2.2用例圖的覆蓋準則/250
7.2.3用例圖的測試用例設計/255
7.3基于類圖的軟件測試/260
7.3.1類圖的概念/260
7.3.2類圖的覆蓋準則/264
7.3.3類圖的測試用例設計/265
7.4基于活動圖的軟件測試/268
7.4.1活動圖的概念/268
7.4.2活動圖的覆蓋準則/270
7.4.3活動圖的測試用例設計/274
7.5基于序列圖的軟件測試/282
7.5.1序列圖的概念/282
7.5.2序列圖的覆蓋準則/285
7.5.3序列圖的測試用例設計/290
7.6基于狀態圖的軟件測試方法/296
7.6.1狀態圖的概念/296
7.6.2狀態圖的覆蓋準則/299
7.6.3狀態圖的測試用例設計/301第8章其他測試技術/309
8.1基于Petri網的測試用例生成/309
8.1.1Petri網的定義/309
8.1.2著色Petri網/311
8.1.3幾種常見的系統結構模型/314
8.1.4Petri網的行為性質/316
8.1.5基于Petri網的測試/318
8.2蛻變測試/327
8.2.1蛻變測試的出發點/327
8.2.2蛻變測試的基本理論/328
8.2.3蛻變測試的過程/329
8.2.4蛻變測試的例子/330
8.3基于變異的軟件測試方法/337
8.3.1變異測試的概念/337
8.3.2變異算子/338
8.3.3變異測試的過程/345
8.4基于故障樹的軟件測試方法/350
8.4.1故障樹的概念/351
8.4.2故障樹的建立和分析/351
8.4.3基于故障樹的測試用例設計/354附錄/358
附錄A軟件測試大事記/358
附錄B常見正交測試表/360
附錄CPICT工具指南/363
附錄Dpytest測試簡介/364
附錄E最長公共子序列示例/371
參考文獻/373