注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件工程及軟件方法學有效的單元測試

有效的單元測試

有效的單元測試

定 價:¥59.00

作 者: Lasse Koskela 著
出版社: 機械工業(yè)出版社
叢編項: 華章程序員書庫
標 簽: 計算機/網(wǎng)絡 軟件工程/開發(fā)項目管理

ISBN: 9787111483434 出版時間: 2014-11-19 包裝: 平裝
開本: 16開 頁數(shù): 200 字數(shù):  

內(nèi)容簡介

  本書分三部分,共9章。第一部分(第1~3章)主要闡述測試的目的與原因,并分析作為常用工具的測試替身的作用。第1章先從整體闡釋測試先行所帶來的價值,以及各種對測試和測試質量的影響。第2章定義了如何才能寫出優(yōu)秀的測試。第3章談及現(xiàn)代程序員最基本的工具之一——測試替身。第二部分(第4~6章)的目標是幫助我們更好地識別并修復測試代碼中的壞味道。第4章展示破壞測試可讀性的壞味道。第5章繼續(xù)對破壞可維護性的測試提供建議。第6章涉及有關脆弱或不可靠的測試壞味道。第三部分(第7~9章)涉及Java程序員在編寫測試時隨時可能碰到的話題。第7章介紹可測的設計的定義與作用。第8章探討JVM語言的共生,以及如果用另一門語言來測試Java代碼。第9章專門討論對構建進行加速的問題。此外還包括兩個附錄,附錄A介紹了使用JUnit編寫測試的入門知識。附錄B探討通過JUnit的API來擴展其內(nèi)置功能。

作者簡介

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

圖書目錄

序言
前言
致謝
第一部分 基礎
第1章 優(yōu)秀測試的承諾 2
1.1 國情咨文:編寫更好的測試 3
1.2 測試的價值 3
1.2.1 生產(chǎn)力的因素 6
1.2.2 設計潛力的曲線 8
1.3 測試作為設計工具 9
1.3.1 測試驅動開發(fā) 9
1.3.2 行為驅動開發(fā) 11
1.4 小結 12
第2章 尋求優(yōu)秀 13
2.1 可讀的代碼才是可維護的代碼 14
2.2 結構有助于理解事物 16
2.3 如果測試了錯誤的東西就不好了 17
2.4 獨立的測試易于單獨運行 18
2.5 可靠的測試才是可靠的 21
2.6 每個行業(yè)都有其工具而測試也不例外 22
2.7 小結 23
第3章 測試替身 24
3.1 測試替身的威力 25
3.1.1 隔離被測代碼 26
3.1.2 加速執(zhí)行測試 27
3.1.3 使執(zhí)行變得確定 27
3.1.4 模擬特殊情況 28
3.1.5 暴露隱藏的信息 29
3.2 測試替身的類型 30
3.2.1 測試樁通常是短小的 30
3.2.2 偽造對象做事不產(chǎn)生副作用 31
3.2.3 測試間諜偷取秘密 32
3.2.4 模擬對象反對驚喜 34
3.3 使用測試替身的指南 35
3.3.1 為測試挑選合適的替身 35
3.3.2 準備、執(zhí)行、斷言 36
3.3.3 檢查行為,而非實現(xiàn) 37
3.3.4 挑選你的工具 38
3.3.5 注入依賴 39
3.4 小結 39
第二部分 目錄
第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 附加細節(jié) 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 魔法數(shù)字 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
第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 參數(shù)化混亂 94
5.8.1 示例 95
5.8.2 該對它做點兒什么 98
5.8.3 小結 99
5.9 方法間缺乏內(nèi)聚 100
5.9.1 示例 100
5.9.2 該對它做點兒什么 101
5.9.3 小結 104
5.10 總結 104
第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
第三部分 消遣
第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 無法實例化某個類 130
7.2.2 無法調(diào)用某個方法 131
7.2.3 無法觀察到輸出 131
7.2.4 無法替換某個協(xié)作者 131
7.2.5 無法覆蓋某個方法 132
7.3 可測的設計的指南 132
7.3.1 避免復雜的私有方法 133
7.3.2 避免final方法 133
7.3.3 避免static方法 134
7.3.4 使用new時要當心 134
7.3.5 避免在構造函數(shù)中包含邏輯 135
7.3.6 避免單例 137
7.3.7 組合優(yōu)于繼承 138
7.3.8 封裝外部庫 138
7.3.9 避免服務查找 139
7.4 小結 140
第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
第9章 加速執(zhí)行測試 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 當心膨脹的基類 163
9.2.3 當心冗余的setup與teardown 165
9.2.4 挑剔地添加新測試 166
9.2.5 保持本地運行,保持快速 167
9.2.6 抵御訪問數(shù)據(jù)庫的誘惑 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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號