軟件測試:一個軟件工藝師的方法(原書第4版)

軟件測試:一個軟件工藝師的方法(原書第4版) pdf epub mobi txt 電子書 下載 2025

[美] 保羅 C.喬根森(Paul C.Jorgensen) 著,李海峰 譯
圖書標籤:
  • 軟件測試
  • 測試方法
  • 軟件工程
  • 質量保證
  • 軟件工藝
  • 測試技術
  • 黑盒測試
  • 白盒測試
  • 自動化測試
  • 測試管理
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111581314
版次:1
商品編碼:12219963
品牌:機工齣版
包裝:平裝
叢書名: 計算機科學叢書
開本:16開
齣版時間:2017-11-01
用紙:膠版紙
頁數:324

具體描述

內容簡介

本書是經典的軟件測試教材,也可作為軟件測試者、開發者和工程師的參考書。書中對基礎知識、方法提供瞭係統的綜閤闡述,既涉及基於模型的開發,又介紹瞭測試驅動的開發,做到瞭理論與實踐的完美結閤,反映瞭軟件標準和開發的新進展和變化。

作者簡介

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於密歇根州羅剋福德市
精益求精的軟件藝術:一套係統性的質量保障之道 在軟件開發的浩瀚海洋中,質量是航行的燈塔,而測試則是確保這艘巨輪安全抵達彼岸的羅盤與舵。本書並非僅僅羅列枯燥的測試用例或操作指南,它更像是一本集哲學、藝術與工程學於一體的匠心之作,旨在為每一個投身軟件開發事業的“軟件工藝師”提供一套係統、深刻且具有前瞻性的質量保障理念與實踐框架。我們相信,真正的軟件測試,超越瞭簡單的“發現Bug”這一層麵,它是一種貫穿整個軟件生命周期的主動式質量構建過程,是塑造卓越軟件産品不可或缺的靈魂。 超越“找蟲”,擁抱“工藝” 本書的核心,在於重新定義“軟件測試”的概念。它不再是開發流程末端的一道“驗收關”,而是貫穿需求分析、設計、編碼、部署乃至運維全過程的“質量意識”的具象化。我們倡導的“軟件工藝師”心態,意味著每一個參與軟件開發的人,都應將自己視為一名技藝精湛的工匠,對産品的每一個細節精雕細琢,對潛在的缺陷防微杜漸。這是一種主人翁意識,一種對用戶體驗負責的職業道德,一種追求卓越的工匠精神。 我們深入剖析瞭軟件開發過程中常見的陷阱與挑戰,並從工藝師的角度齣發,提齣瞭一係列行之有效的應對策略。這其中包括如何構建 robust 的係統,如何理解軟件的復雜性,以及如何在快速迭代的環境中保持高質量的輸齣。本書強調,測試不僅僅是尋找缺陷,更是理解軟件、驗證設計、優化實現、甚至驅動創新的重要手段。一個優秀的測試人員,不僅是代碼的“審判者”,更是軟件的“守護者”和“閤作者”。 係統性思維:構建穩固的質量基石 本書最大的特色之一,在於其強大的係統性。它不拘泥於某個具體的測試技術或工具,而是從宏觀層麵構建瞭一個完整的軟件質量保障體係。這套體係強調各個環節之間的協同與聯動,將測試的觸角延伸至需求的源頭,並與開發、運維緊密結閤。 早期介入,預防為主: 我們堅信“防患於未然”的重要性。本書將詳細闡述如何將測試的思維融入需求分析和設計階段,通過評審、模型、以及早期可執行的規格說明來避免問題的産生,而非僅僅在後期纔去發現和修復。這種“前置測試”的理念,能夠顯著降低開發成本,提高開發效率,並最終保障産品的質量。 多層次的測試策略: 軟件的質量並非單一維度,而是由多個層次的驗證共同構建。本書將係統性地介紹單元測試、集成測試、係統測試、驗收測試等不同層級的測試目標、方法和最佳實踐。我們關注如何在各個層級上實現有效的覆蓋,以及如何將這些測試活動有機地整閤起來,形成一個有機的整體。 風險導嚮的測試規劃: 資源總是有限的,而軟件的潛在風險卻是無限的。本書將引導讀者掌握如何進行有效的風險評估,並基於風險等級來規劃測試活動。這意味著將有限的時間和精力投入到最可能齣現問題、對業務影響最嚴重的區域,從而實現測試效益的最大化。 自動化與手動測試的平衡: 自動化測試是現代軟件開發不可或缺的利器,但它並非萬能。本書將深入探討自動化測試的設計原則、實施策略以及其局限性。同時,我們也將強調手動測試在探索性測試、可用性測試以及那些難以自動化的場景中的關鍵作用,倡導一種理性、平衡的自動化與手動測試相結閤的策略。 持續集成與持續交付中的測試: 在敏捷開發和 DevOps 的浪潮中,測試的角色變得尤為重要。本書將探討如何在 CI/CD 流程中無縫地集成各種測試活動,確保代碼變更的質量,並實現快速、可靠的軟件交付。 精深的技術洞察與實踐指導 在係統性思維的框架下,本書同樣不乏對具體測試技術的精深洞察和實用指導。我們鼓勵讀者深入理解測試的底層原理,並在此基礎上靈活運用各種技術。 探索性測試的藝術: 探索性測試並非盲目地“亂測”,而是一種基於經驗、直覺和學習的、高度紀律性的測試活動。本書將帶領讀者領略探索性測試的精髓,學習如何設計有效的測試路徑,如何從用戶視角齣發發現潛在問題,以及如何將探索性測試的發現轉化為可復現的缺陷報告。 模型驅動的測試設計: 利用軟件模型來驅動測試用例的設計,能夠更 systematic 地覆蓋軟件的功能和狀態。本書將介紹不同的建模技術,以及如何從這些模型中生成高質量的測試用例。 代碼審查的價值: 代碼審查是發現早期缺陷、提升代碼質量、促進團隊知識共享的重要手段。本書將探討如何進行有效的代碼審查,並將其融入到開發流程中。 性能與安全測試的考量: 軟件的健壯性不僅僅體現在功能正確性上,更在於其性能和安全性。本書將提供對性能測試和安全測試的基本原則和實踐指導,幫助讀者構建更可靠、更安全的軟件。 測試數據的管理與生成: 高質量的測試數據是有效測試的基石。本書將探討測試數據的管理策略,以及如何利用各種技術生成具有代錶性的測試數據。 不僅僅是技術,更是思維的升華 本書的深度遠不止於技術層麵,它更是一次思維的升華。我們鼓勵讀者從多個維度去理解軟件質量: 用戶體驗的視角: 軟件的最終價值在於能否為用戶帶來良好的體驗。本書將引導讀者從用戶的角度思考問題,理解用戶的需求和痛點,並設計齣能夠提升用戶滿意度的測試策略。 業務價值的考量: 測試活動最終是為瞭支撐業務目標的實現。本書將幫助讀者理解如何將測試活動與業務價值掛鈎,確保測試的投入能夠帶來最大的業務迴報。 技術債務與質量的權衡: 在快速變化的市場環境中,我們常常需要在速度與質量之間做齣權衡。本書將探討技術債務的概念,以及如何在追求快速交付的同時,有效管理和控製技術債務,避免其對軟件質量造成長期損害。 持續學習與成長: 軟件技術日新月異,測試領域也在不斷發展。本書倡導一種持續學習的態度,鼓勵讀者緊跟行業發展趨勢,不斷提升自己的技能和知識水平,成為一名與時俱進的軟件工藝師。 獻給所有追求卓越的軟件從業者 無論您是經驗豐富的測試專傢,還是初涉軟件開發的新人,本書都將為您提供寶貴的洞察和實用的指導。它適用於任何規模的團隊,任何類型的項目,從小型初創公司到大型企業,從 Web 應用到嵌入式係統,其核心理念都具有普適性。 本書的目標,是幫助您構建一種“質量至上”的文化,讓每一個軟件開發環節都充滿對卓越的追求。它不僅僅是一本技術手冊,更是一份對軟件工藝精神的傳承與弘揚。我們相信,通過掌握本書所傳達的理念與方法,您將能夠更自信、更有效地構建齣高質量的軟件産品,成為一名真正意義上的“軟件工藝師”,為軟件行業的進步貢獻您的力量。

用戶評價

評分

作為一名剛剛入行不久的測試新人,我正在努力構建自己的知識體係,並且渴望找到一本能夠引領我入門、並且具有深度和廣度的書籍。這本書的標題,尤其是“軟件工藝師的方法”,聽起來非常吸引人,因為它暗示瞭一種對專業技能的極緻追求,這正是我所嚮往的學習目標。我非常好奇,書中對於“工藝”的具體闡述會是如何體現的?例如,在學習如何編寫清晰、可復用的測試腳本時,是否會強調代碼的可讀性和優雅性?在學習如何進行缺陷分析和根源定位時,是否會鼓勵采用更深入、更係統的偵探式思維?我尤其希望能從書中學習到如何纔能成為一個“優秀的”測試工程師,不僅僅是會執行測試,更能思考測試的價值,並且能夠對産品的質量負責。這本書能否為我提供一套行之有效的學習路徑和成長模型,幫助我在測試領域打下堅實的基礎,並不斷進步?

評分

在我看來,軟件測試不僅僅是執行預設的測試用例,更是一種對産品質量的係統性思考和持續改進的過程。市麵上很多測試書籍,側重點往往是某種特定的測試技術或工具,但這本《軟件測試:一個軟件工藝師的方法》的名字,卻讓我感覺它更像是在探討一種“道”的層麵。我很好奇,書中是如何定義“軟件工藝師”的,以及這種“工藝師”的精神如何體現在軟件測試的各個環節?例如,在理解需求的深度、在設計測試方案的精妙性、在執行測試的細緻程度、在發現和報告缺陷的清晰度,乃至在與開發團隊溝通協作的方式上,是否都能體現齣“工藝”的匠心?我希望這本書能提供一種更宏觀的視角,幫助我理解測試在整個軟件開發生命周期中的價值,並思考如何通過提升測試的“工藝水平”,從而真正地提升産品的整體質量。

評分

這本書的封麵設計簡潔大氣,封麵上“軟件測試:一個軟件工藝師的方法”這幾個字,第一眼就吸引瞭我。作為一名在軟件開發一綫摸爬滾打多年的工程師,深知測試的重要性,但一直苦於沒有係統性、深入的指導。市麵上關於測試的書籍不少,但大多偏重於工具的使用或者局限於某個特定的測試類型,難以形成一個完整的知識體係。這本書的副標題“一個軟件工藝師的方法”更是點睛之筆,讓我預感到這不僅僅是一本介紹測試技術的書,更可能是一本關於如何用匠人心態去打磨産品、提升軟件質量的指南。我非常期待它能提供一種更哲學、更係統化的視角來看待軟件測試,幫助我跳齣“發現 Bug”的層麵,提升到“構建高質量軟件”的戰略高度。尤其是“軟件工藝師”這個詞,在我看來,意味著對細節的極緻追求,對過程的嚴謹把控,以及對最終交付産品負責任的態度。這本書能否真正將這種“工藝師”的精神融入到軟件測試的實踐中,是我最關注的。

評分

坦白說,我對軟件測試這個領域的熱情,很大程度上源於對“如何讓軟件變得更好”的執著。我一直認為,一個優秀的産品,不僅僅是功能齊全,更在於它的健壯性、穩定性和用戶體驗。這本書的題目就擊中瞭我內心深處的這個點。我非常好奇它如何將“軟件工藝師”的理念貫穿於整個測試生命周期。比如,在需求理解階段,它會不會強調如何通過深入的溝通和分析,挖掘齣潛在的風險點?在測試設計階段,又會提齣哪些能夠體現“工藝”精神的原則,比如如何設計齣既能覆蓋核心功能,又能發現隱藏缺陷的測試用例?我個人尤其關注書中關於“探索式測試”或者“基於風險的測試”的論述,因為我覺得這些更需要測試工程師的經驗、判斷力和創造力,這正是“工藝”所在。如果這本書能提供一些量化的指標或者度量方法,幫助我們評估測試的有效性和效率,那就更棒瞭。

評分

最近一直在思考如何將測試更好地融入到敏捷開發流程中,特彆是如何讓開發人員和測試人員之間建立更緊密的協作關係。很多時候,測試被視為開發完成後的一個獨立環節,導緻信息傳遞不暢,返工率高。這本書的齣現,讓我看到瞭希望。我非常好奇它在“敏捷測試”或者“測試左移”方麵會有怎樣的論述。是不是能提供一些實用的方法和實踐,幫助團隊打破壁壘,讓測試人員更早地參與到需求分析和設計階段,從源頭上規避問題?此外,對於自動化測試的深入探討也是我非常期待的。目前我們團隊的自動化測試覆蓋率還有待提高,而且維護成本也比較高。這本書會不會提供一些關於如何設計可維護、高效率的自動化測試框架的思路?又或者,對於一些傳統測試方法在敏捷環境下的演進和應用,是否有獨到的見解?我希望它能像一位經驗豐富的導師,為我指點迷津。

評分

此用戶未填寫評價內容

評分

發貨速度快,正版。

評分

很有用的一本書

評分

軟件測試的好書值得閱讀學習。

評分

評分

發貨速度快,正版。

評分

發貨速度快,正版。

評分

包裝不錯,下一次活動還會購買。

評分

給力

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有