| 書[0名0]: | 有效的單元測試[按需印刷]|3804193 |
| 圖書定價: | 59元 |
| 圖書作者: | (芬)Lasse Koskela |
| 齣版社: | [1機1] 械工業齣版社 |
| 齣版日期: | 2014/11/1 0:00:00 |
| ISBN號: | 9787111483434 |
| 開本: | 16開 |
| 頁數: | 198 |
| 版次: | 1-1 |
| 作者簡介 |
| Lasse Koskela 資深敏捷技術實踐專傢、敏捷教練、培洲師、顧問和程序員,具有數十年計算 [1機1] 程序設計和開發經驗。他精通多種編程語言,尤其對Java、Ruby、C/C++有[0獨0]到見解,熱衷於編程和追逐前沿技術,在程序設計、軟件工程、項目管理等多個[0領0]域頗有建樹。目前他主攻開源項目,幫助企業提高生産力,而且經常在世界各地的[0會0]議上發錶演講。除本書外,他還著有《測試驅動開發的藝術》。申健 江湖人稱“申導”,創客、王匠、敏捷教練、軟件開發顧問,緻力於啓發創意、促進協作、交付價值的事業。1994年迷上汁算 [1機1] 編程。從南京[0大0][0學0]畢業後,在跨[0國0]企業從事近十年的研發和管理工作,涉及通信、金融、互聯網等[0領0]域,擁有豐富的移動應用程序和麵嚮服務分布式係統的項目經驗,擅長使用不同的技術來實現麵嚮服務的分布式架構設計和整體解決方案,熟悉J2EE、Python、嵌入式C、 [0No0]de.js技術及iOS等平颱。2007年開始進入敏捷開發實踐,擁有CSP、CSM和CSPO等認證。他曾在諾基亞西門子擔任高級工程師和研發經理,在渣打銀行擔任資深工程師和敏捷教練等。目前主要從事外部敏捷教練工作,提供組織轉型和技術實踐的谘詢與培訓服務。同時還是Scrum Aliiance注冊講師、1nfoQ中文站編輯、中[0國0]敏捷教練組成員,以及敏捷之旅、 ScrumGathering、QClub等社區活動的講師與組織者。他曾翻譯《SOA with REST》等書籍。個人網站:www.JackyShen.com |
| 內容簡介 |
| 這是一本關於單元測試的係統實踐指南,由資深敏捷技術實踐專傢撰寫,不僅全麵闡釋瞭單元測試用於軟件設計的工具、方[0法0]、原則和佳實踐,而且對各種測試常見問題進行瞭深入分析,包含[0大0]量實踐案例,可操作性強,能為用戶高效編寫[0優0]秀測試提供有效指導,讓組織持續創造成功的産[0品0]和服務。 本書分為三部分,共9章。[0第0]一部分([0第0]1—3章)主要闡述測試的目的與原因,並分析作為常用工具的測試替身的作用。[0第0]1章先從整體闡釋測試先行所帶來的價值,以及各種對測試和測試質量的影響,,[0第0]2章定義如何纔能寫齣[0優0]秀的測試。[0第0]3章討淪現代程序員基本的工具之一——測試替身。[0第0]二部分([0第0]4—6章)的目標是幫助我們更好地識彆並修復測試代碼中的壞味道。[0第0]4章展示破壞測試可讀性的壞味道。[0第0]5章繼續對破壞可維護性的測試提供建議。[0第0]6章涉及有關脆弱或不可靠的測試壞味道。[0第0]三部分([0第0]7—9章)涉~Java程序員在編寫測試時隨時可能碰到的話題。[0第0]7章介紹可測的設汁的定義與作用。[0第0]8章探討JVM語言的共生,以及如何用另一門語言來測試Java代碼。[0第0]9章專門討論對構建進行加速的問題。此外還包括兩個附錄,附錄A介紹使用JUnit編寫測試的入門[0知0]識。附錄B探討通過JUnit的API來擴展其內置功能。 |
| 目錄 |
《有效的單元測試》 譯者序 序言 前言 緻謝 [0第0]一部分 基礎 [0第0]1章 [0優0]秀測試的承諾 2 1.1 [0國0]情谘文:編寫更好的測試 3 1.2 測試的價值 3 1.2.1 生産力的因素 6 1.2.2 設計潛力的麯綫 8 1.3 測試作為設計工具 9 1.3.1 測試驅動開發 9 1.3.2 行為驅動開發 11 1.4 小結 12 [0第0]2章 尋求[0優0]秀 13 2.1 可讀的代碼纔是可維護的代碼 14 2.2 結構有助於理解事物 16 2.3 如果測試瞭錯誤的東西就不好瞭 17 2.4 [0獨0]立的測試易於單[0獨0]運行 18 2.5 可靠的測試纔是可靠的 21 2.6 每個行業都有其工具而測試也不例外 22 2.7 小結 23 [0第0]3章 測試替身 24 3.1 測試替身的威力 25 3.1.1 隔離被測代碼 26 3.1.2 加速執行測試 27 3.1.3 使執行變得確定 27 3.1.4 模擬特殊情況 28 3.1.5 暴露隱藏的信息 29 3.2 測試替身的類型 30 3.2.1 測試樁通常是短小的 30 3.2.2 僞造對象做事不産生副作用 31 3.2.3 測試間諜偷取秘密 32 3.2.4 模擬對象反對驚喜 34 3.3 使用測試替身的指南 35 3.3.1 為測試挑選閤適的替身 35 3.3.2 準備、執行、斷言 36 3.3.3 檢查行為,而非實現 37 3.3.4 挑選你的工具 38 3.3.5 注入依賴 39 3.4 小結 39 [0第0]二部分 目錄 [0第0]4章 可讀性 42 4.1 基本斷言 43 4.1.1 示例 43 4.1.2 該對它做點兒什麼 44 4.1.3 小結 45 4.2 過度斷言 46 4.2.1 示例 46 4.2.2 該對它做點兒什麼 48 4.2.3 小結 50 4.3 按位斷言 50 4.3.1 示例 50 4.3.2 該對它做點兒什麼 51 4.3.3 小結 51 4.4 附加細節 52 4.4.1 示例 52 4.4.2 該對它做點兒什麼 53 4.4.3 小結 54 4.5 人格分裂 55 4.5.1 示例 55 4.5.2 該對它做點兒什麼 56 4.5.3 小結 58 4.6 邏輯分割 59 4.6.1 示例 59 4.6.2 該對它做點兒什麼 61 4.6.3 小結 63 4.7 魔[0法0]數字 64 4.7.1 示例 64 4.7.2 該對它做點兒什麼 64 4.7.3 小結 65 4.8 冗長安裝 65 4.8.1 示例 66 4.8.2 該對它做點兒什麼 67 4.8.3 小結 68 4.9 過分保護 68 4.9.1 示例 69 4.9.2 該對它做點兒什麼 69 4.9.3 小結 70 4.10 總結 70 [0第0]5章 可維護性 71 5.1 重復 72 5.1.1 示例 72 5.1.2 該對它做點兒什麼 73 5.1.3 小結 75 5.2 條件邏輯 75 5.2.1 示例 76 5.2.2 該對它做點兒什麼 76 5.2.3 小結 77 5.3 脆弱的測試 78 5.3.1 示例 78 5.3.2 該對它做點兒什麼 79 5.3.3 小結 80 5.4 殘缺的文件路徑 80 5.4.1 示例 81 5.4.2 該對它做點兒什麼 81 5.4.3 小結 83 5.5 的臨時文件 83 5.5.1 示例 84 5.5.2 該對它做點兒什麼 85 5.5.3 小結 86 5.6 沉睡的蝸牛 86 5.6.1 示例 87 5.6.2 該對它做點兒什麼 88 5.6.3 小結 89 5.7 像素完美 89 5.7.1 示例 89 5.7.2 該對它做點兒什麼 90 5.7.3 小結 93 5.8 參數化混亂 94 5.8.1 示例 95 5.8.2 該對它做點兒什麼 98 5.8.3 小結 99 5.9 方[0法0]間缺乏內聚 100 5.9.1 示例 100 5.9.2 該對它做點兒什麼 101 5.9.3 小結 104 5.10 總結 104 [0第0]6章 可信賴 106 6.1 注釋掉的測試 107 6.1.1 示例 107 6.1.2 該對它做點兒什麼 108 6.1.3 小結 108 6.2 歧義注釋 109 6.2.1 示例 109 6.2.2 該對它做點兒什麼 110 6.2.3 小結 111 6.3 永不失敗的測試 111 6.3.1 示例 112 6.3.2 該對它做點兒什麼 112 6.3.3 小結 113 6.4 輕率承諾 113 6.4.1 示例 114 6.4.2 該對它做點兒什麼 115 6.4.3 小結 116 6.5 降低期望 117 6.5.1 示例 117 6.5.2 該對它做點兒什麼 118 6.5.3 小結 118 6.6 平颱偏見 119 6.6.1 示例 119 6.6.2 該對它做點兒什麼 120 6.6.3 小結 121 6.7 有條件的測試 122 6.7.1 示例 122 6.7.2 該對它做點兒什麼 123 6.7.3 小結 124 6.8 總結 124 [0第0]三部分 消遣 [0第0]7章 可測的設計 126 7.1 什麼是可測的設計 126 7.1.1 模塊化設計 127 7.1.2 SOLID設計原則 128 7.1.3 上下文中的模塊化設計 129 7.1.4 以測試驅動齣模塊化設計 130 7.2 可測性的問題 130 7.2.1 無[0法0]實例化某個類 130 7.2.2 無[0法0]調用某個方[0法0] 131 7.2.3 無[0法0]觀察到輸齣 131 7.2.4 無[0法0]替換某個協作者 131 7.2.5 無[0法0]覆蓋某個方[0法0] 132 7.3 可測的設計的指南 132 7.3.1 避免復雜的私有方[0法0] 133 7.3.2 避免final方[0法0] 133 7.3.3 避免static方[0法0] 134 7.3.4 使用new時要[0當0]心 134 7.3.5 避免在構造函數中包含邏輯 135 7.3.6 避免單例 137 7.3.7 組閤[0優0]於繼承 138 7.3.8 封裝外部庫 138 7.3.9 避免服務查找 139 7.4 小結 140 [0第0]8章 用其他JVM語言來編寫測試 142 8.1 混閤使用JVM語言的前提 142 8.1.1 通用收益 143 8.1.2 編寫測試 144 8.2 用Groovy來編寫測試 146 8.2.1 簡化的測試setup 146 8.2.2 Groovy式的JUnit 4測試 148 8.3 BDD工具的錶達力 149 8.3.1 用easyb寫Groovy需求說明 149 8.3.2 Spock Framework:編寫更具錶達力測試的激素 150 8.3.3 Spock Framework的測試替身也打瞭激素 152 8.4 小結 153 [0第0]9章 加速執行測試 155 9.1 追求速度 156 9.1.1 對速度的需要 156 9.1.2 進入狀況 156 9.1.3 對構建進行性能分析 157 9.1.4 對測試進行性能分析 160 9.2 令測試代碼加速 162 9.2.1 彆睡覺,除非你纍瞭 163 9.2.2 [0當0]心膨脹的基類 163 9.2.3 [0當0]心冗餘的setup與teardown 165 9.2.4 挑剔地添加新測試 166 9.2.5 保持本地運行,保持快速 167 9.2.6 抵禦訪問數據庫的誘惑 168 9.2.7 沒有比文件I/O更慢的I/O瞭 169 9.3 令構建加速 171 9.3.1 RAM磁盤帶來更快的I/O 172 9.3.2 並行構建 173 9.3.3 改換為高性能CPU 177 9.3.4 分布式構建 179 9.4 小結 183 附錄A JUnit入門 185 附錄B 擴展JUnit 192 |
這本書的包裝簡直是藝術品,那種厚重感和紙張的質感,一拿到手裏就知道這不是那種廉價的批量生産物。封麵設計低調而富有內涵,沒有太多花哨的元素,但那種沉穩的氣質讓人忍不住想一探究竟。我記得我當時是在一個陽光明媚的下午翻開它的,書頁散發著淡淡的油墨香,這種體驗在現在這個電子閱讀盛行的時代顯得尤為珍貴。書的裝幀非常考究,鎖綫膠裝的工藝保證瞭即使是經常翻閱也不會輕易散架。而且,書脊的處理也很有心,平攤在桌麵上時,無論翻到哪一頁都能保持平整,這對於需要對照代碼和文字的讀者來說簡直是福音。內頁的排版更是體現瞭齣版方的專業水準,行距、字號的選擇都恰到好處,長時間閱讀也不會感到眼睛疲勞。我甚至注意到,頁邊距留得非常閤理,方便讀者做筆記和標記重點,這對於技術書籍來說是極其重要的細節。光是這份對實體書本身的敬意,就足以讓我對裏麵的內容抱有更高的期待。這種對細節的極緻追求,讓我覺得作者和齣版社在創作和製作的過程中投入瞭巨大的心血,這份匠心精神在當今快餐式的齣版環境中,簡直是鳳毛麟角。
評分初讀這本書的引言部分,我立刻被作者那種深入淺齣的敘事風格所吸引。他沒有一上來就拋齣復雜的理論和晦澀的術語,而是通過一個非常貼近日常開發的場景作為切入點,像一位經驗豐富的老朋友在分享他的“獨門秘籍”。那種娓娓道來的感覺,仿佛你正在咖啡館裏聽一位資深工程師為你答疑解惑。特彆是他對“為什麼我們需要單元測試”這個基礎問題的闡述,角度非常新穎,沒有陷入傳統教科書那種枯燥的定義循環,而是從實際項目中引入的成本、維護難度和代碼質量的直觀影響來闡述其價值,邏輯鏈條清晰且極具說服力。我發現自己很多曾經模糊不清的概念,在作者的引導下,豁然開朗。他用詞精準,但又不失溫度,即便是對測試新手而言,也不會産生強烈的畏難情緒。這種引導性的敘述方式,讓閱讀過程變成瞭一種主動探索和學習的旅程,而不是被動地接收信息。讀完前幾章,我感覺自己不僅是學到瞭知識點,更重要的是,建立起瞭一套係統且健壯的思維框架,這纔是技術書籍的最高境界。
評分從排版和圖錶的質量來看,這本書的製作水準絕對是業界頂尖的。技術書籍的圖錶往往是重災區,要麼模糊不清,要麼設計得過於復雜,讓人看瞭反而更懵。然而,這本書中的流程圖、架構圖和類圖都繪製得極其清晰、簡潔,色彩運用剋製而有效,每一個箭頭、每一個標注都服務於清晰地傳達信息,沒有任何多餘的裝飾。我注意到,作者在解釋一些涉及到依賴注入或AOP等底層機製時,使用瞭非常巧妙的“分層解構圖”,將一個復雜的交互過程分解為數個簡單的、可獨立理解的步驟,這種可視化能力極大地降低瞭理解門檻。而且,很多核心概念的對比錶格做得非常到位,比如針對不同Mocking庫的優缺點對比,那種一目瞭然的錶格信息密度和清晰度,遠勝於冗長的文字描述。這錶明齣版團隊在後期製作環節投入瞭大量的精力進行審校和美化工作,確保瞭視覺信息與文字信息能夠完美協同,真正做到瞭“一圖勝韆言”,這對於需要精確理解技術細節的讀者來說,是極其寶貴的資源。
評分這本書的價值遠超其標價,它更像是一份長期的技術投資迴報。我不是說它能讓你立刻升職加薪,但它提供的是一套經過時間檢驗、能夠提升你個人工程素養的底層能力。它教會我的,不僅僅是如何寫齣一個能跑起來的測試,更重要的是,如何思考“高質量”的軟件應該是什麼樣子。我感受最深的是它對測試的可維護性這一維度的強調,很多初學者隻關注通過率,卻忽略瞭測試代碼本身也需要被維護,會産生技術債務。這本書在這方麵給齣瞭非常深刻的警示和實用的清理方案。我甚至把其中關於“測試的依賴管理”那一章的內容,拿去給團隊做瞭一次內部培訓,引發瞭熱烈的討論。這本書的深度在於,它能讓你從一個“實現功能”的初級階段,過渡到“構建可信賴係統”的成熟階段。它不隻是提供配方,更是培養瞭你作為一名優秀工程師的“品味”和“責任感”。如果你想讓你的代碼庫不再是“定時炸彈”,而是可靠的基石,這本書是必讀之作,它帶來的思維模式的轉變,是任何短期培訓班都無法比擬的。
評分這本書在案例的選擇上展現齣瞭驚人的廣度和深度。我本來以為它會局限於講解某個單一框架下的測試技巧,但事實遠超我的預期。它涵蓋瞭從最基礎的同步代碼測試,到復雜的異步操作mocking,再到麵嚮服務的微服務架構下的集成測試策略,幾乎覆蓋瞭現代軟件開發生命周期中可能遇到的各種測試難題。更讓我印象深刻的是,作者在介紹每種技術或模式時,都會提供至少兩種不同語言或環境下的代碼示例,這極大地拓寬瞭讀者的視野,確保瞭知識的普適性。我尤其欣賞其中關於“測試金字塔”的討論,作者並沒有把它當作不可動搖的教條,而是結閤實際項目特點,給齣瞭如何靈活調整測試層級和側重點的實用建議。這些建議充滿瞭實戰經驗的沉澱,不是紙上談兵的空泛之論。對於那些正在為如何構建一個既高效又可靠的測試體係而苦惱的團隊領導者來說,這本書提供瞭一個非常可參考的藍圖和大量的實戰工具箱。讀完相關的章節,我立刻嘗試將其中提到的幾種模式應用到我手頭的一個遺留項目中,效果立竿見影,代碼的健壯性有瞭顯著提升。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有