軟件測試基礎(原書第2版)
內容描述
This extensively classroom-tested text uses an innovative approach to explaining software testing, and covers the latest techniques to test software such as OO, web applications, and embedded software. This new edition features vastly expanded coverage of the basics and the JUnit framework, as well as many new examples and exercises.
目錄大綱
出版者的話
譯者序
前言
第一部分軟件測試基礎
第1章為什麼測試軟件2
1.1軟件何時會出現問題3
1.2軟件測試的目的6
1.3參考文獻註解13
第2章模型驅動測試設計15
2.1軟件測試基礎15
2.2軟件測試活動17
2.3基於軟件活動的測試級別17
2.4覆蓋準則19
2.5模型驅動測試設計21
2.5.1測試設計22
2.5.2測試自動化22
2.5.3測試執行23
2.5.4測試評估23
2.5. 5測試者和抽象23
2.6 MDTD為什麼重要25
2.7參考文獻註解25
第3章測試自動化27
3.1軟件可測性27
3.2測試用例的構成28
3.3測試自動化框架30
3.3.1 JUnit測試框架31
3.3.2數據驅動測試35
3.3.3在單元測試中添加參數36
3.3.4從命令行運行JUnit 38
3.4超越自動化38
3.5參考文獻註解41
第4章測試優先42
4.1馴服改動成本曲線42
4.1.1改動成本曲線真的被馴服了嗎43
4.2測試裝具——守護者44
4.2.1持續集成45
4.2.2敏捷方法中的系統測試45
4.2 .3將測試加入遺留系統46
4.2.4敏捷方法中測試的弱點47
4.3參考文獻註解48
第5章基於準則的測試設計49
5.1定義覆蓋準則49
5.2不可行性和包含52
5.3使用覆蓋準則的好處53
5.4下一個部分54
5.5參考文獻註解54
第二部分覆蓋準則
第6章輸入空間劃分58
6.1輸入域建模60
6.1.1基於接口的輸入域建模61
6.1.2基於功能的輸入域建模61
6.1.3設計特徵62
6.1.4選擇區塊和測試值63
6.1.5檢查輸入域模型65
6.2組合策略準則66
6.3檢查特徵之間的約束71
6.4擴展實例:從JavaDoc中推導IDM 72
6.4. 1設計基於IDM的測試用例中的任務72
6.4.2為迭代器設計基於IDM的測試用例73
6.5參考文獻註解78
第7章圖覆蓋82
7.1概述82
7.2圖覆蓋準則86
7.2.1結構化的覆蓋準則87
7.2.2遊歷、順路和繞路90
7.2.3數據流準則97
7.2.4圖覆蓋準則間的包含關係103
7.3基於源代碼的圖覆蓋104
7.3.1基於源代碼的結構化圖覆蓋104
7.3.2基於源代碼的數據流圖覆蓋108
7.4設計元素的圖覆蓋116
7.4.1設計元素的結構化圖覆蓋116
7.4.2設計元素的數據流圖覆蓋118
7.5設計規範的圖覆蓋124
7.5.1測試順序約束125
7.5.2測試軟件的行為狀態127
7.6用例的圖覆蓋134
7.6.1用例場景137
7.7參考文獻註解137
第8章邏輯覆蓋141
8.1有效的語義邏輯覆蓋準則141
8.1.1簡單的邏輯覆蓋準則142
8.1.2有效子句覆蓋144
8.1.3無效子句覆蓋148
8.1.4不可行性和包含148
8.1.5讓子句決定謂詞150
8.1.6找到滿足準則的取值153
8.2語法邏輯覆蓋準則157
8.2.1蘊涵項覆蓋158
8.2.2極小DNF 159
8.2.3 MUMCUT覆蓋準則160
8.2.4卡諾圖163
8.3程序的結構化邏輯覆蓋166
8.3.1滿足謂詞覆蓋169
8.3 .2滿足子句覆蓋170
8.3.3滿足有效子句覆蓋171
8.3.4謂詞轉換問題174
8.3.5謂詞中的副作用176
8.4基於規範的邏輯覆蓋178
8.5有限狀態機的邏輯覆蓋180
8.6參考文獻註解184
第9章基於語法的測試187
9.1基於語法的覆蓋準則187
9.1.1基於通用語法的覆蓋準則187
9.1.2變異測試189
9.2基於程序的語法192
9.2.1編譯器的BNF語法192
9.2.2基於程序的變異193
9.3集成測試和麵向對象測試206
9.3.1 BNF集成測試206
9.3.2集成變異206
9.4基於規約的語法212
9.4.1 BNF語法212
9.4.2基於規約的變異212
9.5輸入空間的語法215
9.5.1 BNF語法215
9.5.2變異輸入語法218
9.6參考文獻註解222
第三部分實踐中的測試
第10章管理測試過程226
10.1概述226
10.2需求分析和規約227
10.3系統和軟件設計227
10.4中間設計228
10.5詳細設計228
10.6實現229
10.7集成229
10.8系統部署229
10.9運行和維護229
10.10實現測試過程230
10.11參考文獻註解230
第11章編寫測試計劃231
11.1分層測試計劃模板231
11.2參考文獻註解233
第12章測試實現234
12.1集成順序234
12.2測試替身235
12.2.1樁和模擬:測試替身的變種236
12.2.2使用測試替身來代替組件237
12.3參考文獻註解240
第13章軟件演化中的回歸測試241
13.1參考文獻註解243
第14章編寫有效的測試預言244
14.1應該檢查的內容244
14.2決定正確的測試值245
14.2.1對輸出進行基於規約的直接驗證246
14.2.2冗餘計算246
14.2.3一致性檢查247
14.2.4蛻變測試247
14.3參考文獻註解248
測試準則表250
參考文獻252
索引269
作者介紹
保羅·阿曼(Paul Ammann)是喬治梅森大學軟件工程副教授。他於2007年獲得Volgenau工程學院的傑出教學獎。他領導開發了應用計算機科學學位,現任軟件工程碩士項目主任。Ammann在軟件工程領域已經發表了超過80篇文章,尤其著重於軟件測試、軟件安全、軟件依賴性和軟件工程教育方向。
傑夫·奧法特(Jeff Offutt)是喬治梅森大學軟件工程教授。他於2013年獲得喬治梅森大學傑出教學獎。他在基於模型測試、基於準則測試、測試自動化、經驗軟件工程和軟件維護等方面已經發表了超過165篇文章。他是《軟件測試、驗證和可靠性》期刊的主編。他還幫助創建了IEEE國際軟件測試大會,同時也是uJava項目的創始人。