C++程式設計實踐與技巧:測試驅動開發

C++程式設計實踐與技巧:測試驅動開發

《C++程式設計實踐與技巧:測試驅動開發》是2016年11月人民郵電出版社出版的圖書,作者是【美】傑夫蘭格(Jeff Langr)。

基本介紹

  • 中文名:C++程式設計實踐與技巧:測試驅動開發
  • 作者:【美】傑夫蘭格(Jeff Langr)
  • ISBN:9787115438959
  • 頁數:283頁
  • 定價:59元
  • 出版社:人民郵電出版社
  • 出版時間:2016年11月
  • 裝幀:平裝
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

本書是一本關於設計原則、編程實踐、測試驅動開發的指南,旨在幫助C++ 程式設計師用測試驅動開發方法構建高性能解決方案。全書共11 章,涵蓋測試驅動開發的基本工作方式、潛在好處、怎樣利用測試驅動開發解決設計缺陷、測試驅動開發的難點和成本、怎樣利用測試驅動開發減少甚到免除調試工作,以及如何長時間維持測試驅動開發。
本書適合所有技術層次的C++ 程式設計師閱讀。

圖書目錄

第 1 章 環境設定 1
1.1 開場白 1
1.2 示例程式 1
1.3 C++編譯器 2
1.3.1 Ubuntu 2
1.3.2 OS X 2
1.3.3 Windows 3
1.4 CMake 4
1.5 Google Mock 5
1.5.1 安裝Google Mock 5
1.5.2 創建main 函式運行Google Mock 測試 7
1.6 CppUTest 7
1.6.1 安裝CppUTest 7
1.6.2 創建main 函式以運行CppUTest 測試 8
1.7 libcurl 8
1.8 JsonCpp 8
1.9 rlog 9
1.10 Boost 10
1.11 構建示例並運行測試 10
1.12 結束語 11
第 2 章 測試驅動開發:第 一個示例 12
2.1 開場白 12
2.2 Soundex 類 12
2.3 開始吧 13
2.4 去掉不乾淨的代碼 19
2.5 增量性 21
2.6 fixture 與設定 23
2.7 思索與測試驅動開發 25
2.8 測試驅動與測試 28
2.9 如果出現別的情況呢 30
2.10 一次只做一件事 31
2.11 限制長度 32
2.12 丟掉元音 34
2.13 讓測試自我澄清 34
2.14 跳出條條框框來測試 36
2.15 言歸正傳 38
2.16 重構到單一責任的函式 39
2.17 收尾工作 40
2.18 漏了什麼測試嗎 41
2.19 解決方案 42
2.20 Soundex 類 43
2.21 結束語 46
第3 章 測試驅動開發基礎 47
3.1 開場白 47
3.2 單元測試和測試驅動開發基礎知識 47
3.2.1 單元測試的組織和執行 47
3.2.2 測試驅動單元 48
3.3 測試驅動開發周期:紅—綠—重構 49
3.4 測試驅動開發的三條準則 50
3.5 表里不一 51
3.5.1 運行了錯誤的測試 52
3.5.2 測試了錯誤的代碼 52
3.5.3 不當的測試規範 53
3.5.4 對系統的無效假設 53
3.5.5 不佳的測試順序 53
3.5.6 相關聯的產品代碼 56
3.5.7 過度編碼 58
3.5.8 確定性測試 59
3.5.9 停下來想一下 59
3.6 成功運用測試驅動開發的思維 59
3.6.1 增量性 59
3.6.2 測試行為而非方法 60
3.6.3 使用測試來描述行為 60
3.6.4 保持簡單 61
3.6.5 恪守測試驅動開發周期 62
3.7 成功運用測試驅動開發的方法 62
3.7.1 下一個測試是什麼 62
3.7.2 十分鐘限制 64
3.7.3 代碼缺陷 64
3.7.4 禁用測試 65
3.8 結束語 66
第4 章 測試結構 67
4.1 開場白 67
4.2 組織方式 67
4.2.1 檔案組織 67
4.2.2 fixture 68
4.2.3 Setup 與Teardown 69
4.2.4 Arrange-Act-Assert/Given-When-Then 72
4.3 快速測試、慢速測試、過濾器和測試集 73
4.4 斷言 75
4.4.1 經典的斷言形式 76
4.4.2 Hamcrest 斷言 76
4.4.3 選擇正確的斷言 78
4.4.4 浮點數比較 78
4.4.5 基於異常的測試 79
4.5 探查私有成員 81
4.5.1 私有數據 81
4.5.2 私有行為 82
4.6 測試和測試驅動:參數化的測試及其他方法 85
4.6.1 參數化測試 85
4.6.2 測試中的注釋 87
4.7 結束語 87
第5 章 測試替身 88
5.1 開場白 88
5.2 依賴問題 88
5.3 測試替身 89
5.4 手動打造的測試替身 90
5.5 在使用測試替身時提升測試的抽象程度 94
5.6 使用模擬對象工具 96
5.6.1 定義一個派生類 96
5.6.2 設立期望 97
5.6.3 松模擬和嚴模擬 100
5.6.4 模擬對象中的順序 101
5.6.5 巧妙的模擬工具特性 102
5.6.6 排除模擬失敗 104
5.6.7 一個還是兩個測試 104
5.7 讓測試替身各就各位 105
5.7.1 覆寫工廠方法和覆寫Getter 105
5.7.2 使用工廠 107
5.7.3 通過模板參數 109
5.7.4 注入工具 110
5.8 設計會變化 110
5.8.1 內聚與耦合 110
5.8.2 轉嫁私有依賴 112
5.9 使用測試替身的策略 113
5.9.1 探索設計 113
5.9.2 mock 流派 114
5.9.3 明智地使用測試替身 115
5.10 其他關於測試替身的主題 115
5.10.1 怎么稱呼它們 116
5.10.2 測試替身該放在哪 116
5.10.3 虛函式表和性能 117
5.10.4 模擬具體的類 117
5.11 結束語 118
第6 章 增量設計 119
6.1 開場白 119
6.2 簡單設計 119
6.2.1 重複代碼的代價 120
6.2.2 投資管理器 120
6.2.3 投資管理器中的簡單重複 122
6.2.4 我們真的能堅持增量方法嗎 124
6.2.5 更多的重複 129
6.2.6 小方法的好處 132
6.2.7 完成功能 134
6.2.8 增量設計讓事情變得簡單 138
6.3 預先設計在哪 141
6.3.1 哪裡才會討論真正的設計呢 142
6.3.2 簡單設計原則和經典設計
理念會在哪起衝突 143
6.4 阻礙重構的因素 143
6.5 結束語 145
第7 章 高質量測試 146
7.1 開場白 146
7.2 測試先行 146
7.2.1 快速 146
7.2.2 獨立 148
7.2.3 可重複 149
7.2.4 自我驗證 150
7.2.5 及時 150
7.3 一個測試一個斷言 150
7.4 測試抽象 153
7.4.1 臃腫的初始化 153
7.4.2 不相關的細節 154
7.4.3 缺失的抽象 156
7.4.4 多重斷言 157
7.4.5 不相關的數據 157
7.4.6 不必要的測試代碼 158
7.5 結束語 164
第8 章 遺留代碼的挑戰 165
8.1 開場白 165
8.2 遺留代碼 165
8.3 法則 166
8.4 遺留應用程式 167
8.5 保持測試驅動開發的心態 170
8.6 支持測試的安全重構 171
8.7 添加測試刻畫已有行為 174
8.8 被遺留代碼轉移注意力 175
8.9 為rlog 創建測試替身 175
8.10 測試驅動開發改動 179
8.11 新的場景 181
8.12 尋求更快測試的簡要探索 182
8.13 立竿見影的提煉 183
8.14 用成員變數查看狀態 186
8.15 用mock 查看狀態 187
8.16 其他注入技巧 191
8.17 用Mikado 方法大規模改動代碼 192
8.18 Mikado 方法概覽 192
8.19 用Mikado 移動一個方法 193
8.20 有關Mikado 方法的更多思考 202
8.21 這樣做值得嗎 203
8.22 結束語 203
第9 章 測試驅動開發與多執行緒 204
9.1 開場白 204
9.2 測試驅動開發多執行緒套用的核心概念 204
9.3 示例程式GeoServer 205
9.4 性能要求 211
9.5 設計異步方案 213
9.6 依然簡單的測試驅動 216
9.7 為多執行緒做好準備 218
9.8 暴露並發性問題 220
9.9 在測試中創建客戶端執行緒 222
9.10 在ThreadPool 中創建多個執行緒 224
9.11 回到GeoServer 226
9.12 結束語 230
第 10 章 測試驅動開發的其他概念和討論 231
10.1 開場白 231
10.2 測試驅動開發與性能 231
10.2.1 性能最佳化測試的策略 232
10.2.2 相關單元級性能測試 233
10.2.3 嘗試最佳化GeoServer 代碼 234
10.2.4 TestTimer 類 235
10.2.5 性能和小函式 236
10.2.6 推薦 237
10.3 單元測試、集成測試和驗收測試 238
10.3.1 測試驅動開發如何與驗收測試建立聯繫 239
10.3.2 程式設計師定義的集成測試 239
10.3.3 測試驅動開發和驗收測試驅動開發的重合部分 240
10.4 變換優先權假設 241
10.4.1 了解變換 241
10.4.2 三角法 242
10.4.3 瀏覽測試列表 243
10.5 編寫斷言 252
10.5.1 斷言—行為—排列 253
10.5.2 示例程式優先,或到少第 二 253
10.6 結束語 255
第 11 章 發展和維持測試驅動開發 256
11.1 開場白 256
11.2 向非技術人員解釋測試驅動開發 256
11.2.1 測試驅動什麼 257
11.2.2 關於TDD 的研究 259
11.3 不良測試的死亡漩渦(亦稱為SCUMmy 周期) 260
11.4 結對編程 261
11.4.1 結對原則 262
11.4.2 結對編程與測試驅動開發 262
11.4.3 角色切換 263
11.5 Kata 和Dojo 264
11.5.1 在測試驅動開發中套用Kata 264
11.5.2 Dojo 265
11.6 有效地使用代碼覆蓋率統計 266
11.7 持續集成 267
11.8 為團隊制定測試驅動開發標準 268
11.9 保持與社區同步 268
11.9.1 閱讀測試 268
11.9.2 部落格與論壇 269
11.10 結束語 269
附錄A 比較單元測試工具 270
附錄B 代碼Kata:羅馬數字轉換器 273
附錄C 參考文獻 282

熱門詞條

聯絡我們