內容簡介
本書是經典的軟件測試教材,也可作為軟件測試者、開發者和工程師的參考書。書中對基礎知識、方法提供瞭係統的綜閤闡述,既涉及基於模型的開發,又介紹瞭測試驅動的開發,做到瞭理論與實踐的完美結閤,反映瞭軟件標準和開發的新進展和變化。
作者簡介
paul c.jorgensen博士,在其職業生涯的前20年中,主要從事電話交換係統的開發、支持和測試工作。1986年以來,他一直在大學為研究生講授軟件工程課程,先是亞利桑那州立大學,然後在大峽榖州立大學。
目錄
Software Testing: A Craftsman’s Approach, Fourth Edition
齣版者的話
譯者序
前言
第一部分 數學基礎
第1章 測試概述 2
1.1 基本概念 2
1.2 測試用例 3
1.3 利用維恩圖來理解軟件測試 3
1.4 構造測試用例 4
1.4.1 基於規格說明的測試 5
1.4.2 基於代碼的測試 5
1.4.3 兩種測試方法的對比 6
1.5 故障的分類 7
1.6 測試的層次 8
1.7 習題 8
1.8 參考文獻 8
第2章 程序示例 9
2.1 通用僞代碼 9
2.2 三角形問題 10
2.2.1 問題描述 10
2.2.2 三角形問題的討論 11
2.2.3 三角形問題的經典實現 11
2.2.4 三角形問題的結構化實現 14
2.3 NextDate日期函數 15
2.3.1 問題描述 15
2.3.2 NextDate函數的討論 16
2.3.3 NextDate函數的實現 16
2.4 傭金問題 18
2.4.1 問題描述 18
2.4.2 傭金問題的討論 19
2.4.3 傭金問題的實現 19
2.5 SATM係統 20
2.5.1 問題描述 20
2.5.2 SATM係統的討論 21
2.6 貨幣兌換計算器 22
2.7 雨刷控製器 22
2.8 車庫門遙控開關 22
2.9 習題 23
2.10 參考文獻 24
第3章 麵嚮測試人員的離散數學 25
3.1 集閤論 25
3.1.1 集閤的成員關係 25
3.1.2 集閤的定義方法 25
3.1.3 空集 26
3.1.4 集閤的維恩圖 26
3.1.5 集閤運算 27
3.1.6 集閤關係 28
3.1.7 集閤劃分 29
3.1.8 集閤恒等 29
3.2 函數 30
3.2.1 定義域與值域 30
3.2.2 函數類型 30
3.2.3 函數復閤 31
3.3 關係 32
3.3.1 集閤之間的關係 32
3.3.2 單個集閤上的關係 33
3.4 命題邏輯 34
3.4.1 邏輯運算符 34
3.4.2 邏輯錶達式 35
3.4.3 邏輯等價 35
3.5 概率論 36
3.6 習題 37
3.7 參考文獻 37
第4章 麵嚮測試人員的圖論 38
4.1 圖 38
4.1.1 節點的度 38
4.1.2 關聯矩陣 39
4.1.3 鄰接矩陣 39
4.1.4 路徑 40
4.1.5 連通性 40
4.1.6 壓縮圖 41
4.1.7 圈數 41
4.2 有嚮圖 41
4.2.1 入度與齣度 42
4.2.2 節點類型 42
4.2.3 有嚮圖的鄰接矩陣 43
4.2.4 路徑與半路徑 43
4.2.5 可達矩陣 44
4.2.6 n連通性 44
4.2.7 強分圖 44
4.3 軟件測試中常用的圖 45
4.3.1 程序圖 45
4.3.2 有限狀態機 46
4.3.3 Petri網 47
4.3.4 事件驅動Petri網 49
4.3.5 狀態圖 50
4.4 習題 52
4.5 參考文獻 52
第二部分 單元測試
第5章 邊界值測試 54
5.1 邊界值分析 54
5.1.1 邊界值分析的拓展 55
5.1.2 邊界值分析的局限性 56
5.2 健壯性測試 56
5.3 最壞情況測試 57
5.4 特殊值測試 57
5.5 示例 58
5.5.1 三角形問題的測試用例 58
5.5.2 NextDate函數的測試用例 59
5.5.3 傭金問題的測試用例 60
5.6 隨機測試 62
5.7 邊界值測試的原則 63
5.8 習題 65
第6章 等價類測試 66
6.1 等價類 66
6.2 傳統的等價類測試 66
6.3 改進的等價類測試 67
6.3.1 弱一般等價類測試 68
6.3.2 強一般等價類測試 68
6.3.3 弱健壯等價類測試 68
6.3.4 強健壯等價類測試 69
6.4 三角形問題的等價類測試用例 69
6.5 NextDate函數的等價類測試用例 71
6.6 傭金問題的等價類測試用例 73
6.7 邊緣測試 75
6.8 原則與注意事項 75
6.9 習題 76
6.10 參考文獻 76
第7章 基於決策錶的測試 77
7.1 決策錶 77
7.2 決策錶使用技巧 77
7.3 三角形問題的測試用例 80
7.4 Next Date函數的測試用例 81
7.4.1 第一輪嘗試 81
7.4.2 第二輪嘗試 82
7.4.3 第三輪嘗試 83
7.5 傭金問題的測試用例 85
7.6 因果關係圖 85
7.7 原則與注意事項 86
7.8 習題 87
7.9 參考文獻 87
第8章 路徑測試 88
8.1 程序圖 88
8.2 DD路徑 90
8.3 測試覆蓋指標 92
8.3.1 基於程序圖的覆蓋度量方法 92
8.3.2 E. F. Miller的覆蓋度量方法 92
8.3.3 復閤條件下的閉閤路徑 95
8.3.4 示例 96
8.3.5 測試覆蓋分析器 99
8.4 基路徑測試 99
8.4.1 McCabe的基路徑方法 100
8.4.2 McCabe基路徑方法的考慮 102
8.4.3 McCabe方法的基本復雜度 103
8.5 原則與注意事項 105
8.6 習題 105
8.7 參考文獻 106
第9章 數據流測試 107
9.1 定義/使用測試 107
9.1.1 舉例 108
9.1.2 stocks的定義使用路徑 110
9.1.3 locks的定義使用路徑 110
9.1.4 totalLocks的定義使用路徑 113
9.1.5 sales的定義使用路徑 113
9.1.6 commission的定義使用路徑 115
9.1.7 定義使用路徑的測試覆蓋指標 115
9.1.8 麵嚮對象編碼的定義/使用測試 116
9.2 基於程序切片的測試 116
9.2.1 舉例 118
9.2.2 風格與技術 122
9.2.3 切片拼接 123
9.3 程序切片工具 124
9.4 習題 125
9.5 參考文獻 125
第10章 單元測試迴顧 126
10.1 測試方法的搖擺 126
10.2 測試方法搖擺問題探索 128
10.3 用於評估測試方法的指標 131
10.4 重新
前言/序言
Software Testing: A Craftsman’s Approach, Fourth Edition此次再版,我們增加瞭四章新內容,同時更加深入地討論瞭基於路徑的測試,從而拓展瞭本書18年以來一直側重基於模型測試的傳統。此前本書已經再版三次,經過瞭18年的教學和業界使用的檢驗。藉助精心挑選的簡單易懂的實例,本書把理論與實踐緊密地結閤在一起。此外,很多第3版中的內容被閤並、重組在一起,使全書內容更加簡潔流暢。把很多麵嚮對象軟件測試的內容和過程軟件測試(procedural software testing)整閤在一起形成瞭一個有機的整體。還有就是針對美國聯邦航空管理局和美國國防部有關標準的要求,在“路徑測試”一章中擴充瞭復雜條件測試(complex condition testing)和修正的條件判定覆蓋率(modified condition decision coverage)指標等內容。
這一版新增加的章節如下:
軟件技術評審(第22章)。側重軟件技術檢驗,這實際上被視為“靜態測試”,而本書的前三版一直側重於討論如何利用精心挑選的測試用例來執行代碼的“動態測試”。本章內容實際上來自一個軟件開發公司20多年來的産業實踐經驗,該公司具有完善的技術評審流程。
附錄。附錄中給齣瞭一套完整的用例集(采用UML),可以針對典型的客戶需求實現實際産業開發所要求的技術檢驗。其中包括用例標準、用例故障嚴重程度定義、潛在問題的技術檢驗事項錶,以及典型評審報告和最終報告的格式文檔。
基於模型的綜閤係統測試(第17章)。由係統構成復雜係統的問題相對還是較新的(始於1999年)。軟件測試從業人員現在是在追隨幾位大學研究人員的步伐,主要關注如何界定一個由若乾係統構成的復雜係統。這一章介紹瞭“泳道事件驅動Petri網”,在錶達能力上接近著名的狀態圖方法。有瞭它就可以對復雜係統實施基於模型的測試。
軟件復雜度(第16章)。目前大部分文獻都僅考察瞭在單元層麵上的圈復雜度(cyclomatic,也稱為McCabe)。本章從兩個方麵拓展瞭對單元層麵復雜度的考量,引進瞭兩種集成層麵上的復雜度。對麵嚮對象編程和係統層麵的測試來說,需要涉及對復雜度的處理。在任何層麵上,對復雜度的考量都是提升設計、編碼、測試和維護工作的重要手段。保持一種一緻的軟件復雜度錶述,對每個階段都有很大的促進作用。
測試用例的評估(第21 章)。新增的這一章要研究一個難題:如何評估一個測試用例集?測試覆蓋性是長期以來為人所接受的指標,但是其中總有一定程度的不確定性。古羅馬關於“誰來守衛衛兵”的問題,在此變成瞭“誰來評估測試”的問題。十幾年來,變異測試(mutation testing)逐漸成為一種解決方案,所以本章對其效果和貢獻進行瞭介紹,同時也介紹瞭另外兩種方法:漏洞挖掘(fuzzing)和故障注入(fault insertion)。
做瞭47年的軟件開發人員和大學教授,我認為自己的軟件測試知識既有深度也有廣度。在大學裏,我一直在數學係和計算機係授課,同時我還有20多年的工業軟件開發和管理經驗,這些經曆使我能夠很好地編寫和改進我的軟件測試教程並不斷加深對於軟件測試的理解。在我講到書本以外的內容時,我經常會不斷地産生新的看法。所以,我把本書的齣版視為我對軟件測試領域做齣的一點貢獻。最後,我還要感謝我的三位同事Roger Ferguson博士、Jagadeesh Nandigam博士和Christian Trefftz博士,感謝他們在麵嚮對象測試這幾章的撰寫中給予我的巨大幫助。
非常感謝!
Paul C. Jorgensen於密歇根州羅剋福德市
軟件測試:一個軟件工藝師的方法(原書第4版) 下載 mobi epub pdf txt 電子書 格式