商品簡介
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