有效的單元測試 (Effective Unit Testing: A guide for Java Developers) 华章程序员书库:有效的单元测试

科斯凱拉 (Lasse Koskela)

  • 出版商: 機械工業
  • 出版日期: 2014-11-01
  • 定價: $354
  • 售價: 8.5$301
  • 語言: 簡體中文
  • 頁數: 198
  • 裝訂: 平裝
  • ISBN: 711148343X
  • ISBN-13: 9787111483434
  • 相關分類: Java 程式語言軟體測試

無法訂購

買這商品的人也買了...

商品描述

<內容簡介>

  《有效的單元測試》是一本關於單元測試的專著,由資深敏捷技術實踐專家撰寫,不僅系統且深入地闡釋了單元測試用於軟件設計的工具、方法、原則和最佳實踐,而且對各種測試常見問題進行了深入分析,包含大量實踐案例,可操作性強,能為用戶高效編寫優秀測試提供有效指導,讓組織持續創造成功的產品和服務。
  《有效的單元測試》分為三部分,共9章。第一部分(第1~3章)主要闡述測試的目的與原因,並分析作為常用工具的測試替身的作用。第1章先從整體闡釋測試先行所帶來的價值,以及各種對測試和測試質量的影響。第2章定義如何才能寫出優秀的測試。第3章討論現代程序員最基本的工具之一——測試替身。第二部分(第4~6章)的目標是幫助我們更好地識別並修復測試代碼中的壞味道。第4章展示破壞測試可讀性的壞味道。第5章繼續對破壞可維護性的測試提供建議。第6章涉及有關脆弱或不可靠的測試壞味道。第三部分(第7~9章)涉及Java程序員在編寫測試時隨時可能碰到的話題。第7章介紹可測的設計的定義與作用。第8章探討JVM語言的共生,以及如何用另一門語言來測試Java代碼。第9章專門討論對構建進行加速的問題。此外還包括兩個附錄,附錄A介紹使用JUnit編寫測試的入門知識。附錄B探討通過JUnit的API來擴展其內置功能。

<作者簡介>

  Lasse Koskela,資深敏捷技術實踐專家、敏捷教練、培訓師、顧問和程序員,具有數十年計算機程序設計和開發經驗。他精通多種編程語言,尤其對Java、Ruby、C/C++有獨到見解,熱衷於編程和追逐前沿技術,在程序設計、軟件工程、項目管理等多個領域頗有建樹。目前他主攻開源項目,幫助企業提高生產力,而且經常在世界各地的會議上發表演講。除本書外,他還著有《測試驅動開發的藝術》。

<目錄>

第一部分基礎
第1章優秀 ​​測試的承諾
1.1國情咨文:編寫更好的測試
1.2測試的價值
1.2.1生產力的因素
1.2.2設計潛力的曲線
1.3測試作為設計工具
1.3.1測試驅動開發
1.3.2行為驅動開發
1.4小結
第2章尋求優秀
2.1可讀的代碼才是可維護的代碼
2.2結構有助於理解事物
2.3如果測試了錯誤的東西就不好了
2.4獨立的測試易於單獨運行
2.5可靠的測試才是可靠的
2.6每個行業都有其工具而測試也不例外
2.7小結
第3章測試替身
3.1測試替身的威力
3.1.1隔離被測代碼
3.1.2加速執行測試
3.1.3使執行變得確定
3.1.4模擬特殊情況
3.1.5暴露隱藏的信息
3.2測試替身的類型
3.2.1測試樁通常是短小的
3.2.2偽造對像做事不產生副作用
3.2.3測試間諜偷取秘密
3.2.4模擬對象反對驚喜
3.3使用測試替身的指南
3.3.1為測試挑選合適的替身
3.3.2準備、執行、斷言
3.3.3檢查行為,而非實現
3.3.4挑選你的工具
3.3.5註入依賴
3.4小結
第二部分目錄
第4章可讀性
4.1基本斷言
4.1.1示例
4.1.2該對它做點兒什麼
4.1.3小結
4.2過度斷言
4.2.1示例
4.2.2該對它做點兒什麼
4.2.3小結
4.3按位斷言
4.3.1示例
4.3.2該對它做點兒什麼
4.3.3小結
4.4附加細節
4.4.1示例
4.4.2該對它做點兒什麼
4.4.3小結
4.5人格分裂
4.5.1示例
4.5 .2該對它做點兒什麼
4.5.3小結
4.6邏輯分割
4.6.1示例
4.6.2該對它做點兒什麼
4.6.3小結
4.7魔法數字
4.7.1示例
4.7.2該對它做點兒什麼
4.7.3小結
4.8冗長安裝
4.8.1示例
4.8.2該對它做點兒什麼
4.8.3小結
4.9過分保護
4.9.1示例
4.9.2該對它做點兒什麼
4.9.3小結
4.10總結
第5章可維護性
5.1重複
5.1.1示例
5.1.2該對它做點兒什麼
5.1.3小結
5.2條件邏輯
5.2.1示例
5.2.2該對它做點兒什麼
5.2.3小結
5.3脆弱的測試
5.3.1示例
5.3.2該對它做點兒什麼
5.3.3小結
5.4殘缺的文件路徑
5.4.1示例
5.4.2該對它做點兒什麼
5.4.3小結
5.5永久的臨時文件
5.5.1示例
5.5.2該對它做點兒什麼
5.5.3小結
5.6沉睡的蝸牛
5.6.1示例
5.6.2該對它做點兒什麼
5.6.3小結
5.7像素完美
5.7.1示例
5.7.2該對它做點兒什麼
5.7.3小結
5.8參數化混亂
5.8.1示例
5.8.2該對它做點兒什麼
5.8.3小結
5.9方法間缺乏內聚
5.9.1示例
5.9.2該對它做點兒什麼
5.9 .3小結
5.10總結
第6章可信賴
6.1註釋掉的測試
6.1.1示例
6.1.2該對它做點兒什麼
6.1.3小結
6.2歧義註釋
6.2.1示例
6.2.2該對它做點兒什麼
6.2.3小結
6.3永不失敗的測試
6.3.1示例
6.3.2該對它做點兒什麼
6.3.3小結
6.4輕率承諾
6.4.1示例
6.4.2該對它做點兒什麼
6.4.3小結
6.5降低期望
6.5.1示例
6.5.2該對它做點兒什麼
6.5.3小結
6.6平臺偏見
6.6.1示例
6.6.2該對它做點兒什麼
6.6.3小結
6.7有條件的測試
6.7.1示例
6.7.2該對它做點兒什麼
6.7.3小結
6.8總結
第三部分消遣
第7章可測的設計
7.1什麼是可測的設計
7.1.1模塊化設計
7.1.2 SOLID設計原則
7.1.3上下文中的模塊化設計
7.1.4以測試驅動出模塊化設計
7.2可測性的問題
7.2.1無法實例化某個類
7.2.2無法調用某個方法
7.2.3無法觀察到輸出
7.2.4無法替換某個協作者
7.2.5無法覆蓋某個方法
7.3可測的設計的指南
7.3.1避免複雜的私有方法
7.3.2避免final方法
7.3.3避免static方法
7.3.4使用new時要當心
7.3.5避免在構造函數中包含邏輯
7.3.6避免單例
7.3.7組合優於繼承
7.3.8封裝外部庫
7.3.9避免服務查找
7.4小結
第8章用其他JVM語言來編寫測試
8.1混合使用JVM語言的前提
8.1.1通用收益
8.1.2編寫測試
8.2用Groovy來編寫測試
8.2.1簡化的測試setup
8.2.2 Groovy式的JUnit 4測試
8.3 BDD工具的表達力
8.3.1用easyb寫Groovy需求說明
8.3. 2 Spock Framework:編寫更具表達力測試的激素
8.3.3 Spock Framework的測試替身也打了激素
8.4小結
第9章加速執行測試
9.1追求速度
9.1.1對速度的需要
9.1.2進入狀況
9.1.3對構建進行性能分析
9.1.4對測試進行性能分析
9.2令測試代碼加速
9.2.1別睡覺,除非你累了
9.2.2當心膨脹的基類
9.2.3當心冗餘的setup與teardown
9.2.4挑剔地添加新測試
9.2.5保持本地運行,保持快速
9.2.6抵禦訪問數據庫的誘惑
9.2.7沒有比文件I/O更慢的I/O了
9.3令構建加速
9.3.1 RAM磁盤帶來更快的I/O
9.3.2並行構建
9.3.3改換為高性能CPU
9.3.4分佈式構建
9.4小結
附錄A JUnit入門
附錄B擴展JUnit