C++ 序設計實踐與技巧:測試驅動開發 C++序设计实践与技巧:测试驱动开发

傑夫·蘭格 (Jeff Langr)

  • 出版商: 人民郵電出版社
  • 出版日期: 2017-01-01
  • 定價: CNY $59.00
  • 售價: $345
  • 貴賓價: 9.5$328
  • 語言: 簡體中文
  • 頁數: 283
  • 裝訂: 平裝
  • ISBN: 7115438951
  • ISBN-13: 9787115438959

立即出貨

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

產品描述

<內容簡介>

 

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

 

 

<章節目錄>


第1章環境設置1
1.1開場白1
1.2示例程序1
1.3 C++編譯器2
1.3.1 Ubuntu 2
1.3.2 OSX 2
1.3.3 Windows 3
1.4 CMake 4
1.5 GoogleMock 5
1.5.1安裝GoogleMock 5
1.5.2創建main函數運行GoogleMock測試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示例程序Geo Server 205
9.4性能要求211
9.5設計異步方案213
9.6依然簡單的測試驅動216
9.7為多線程做好準備218
9.8暴露並發性問題220
9.9在測試中創建客戶端線程222
9.10在Thread Pool中創建多個線程224
9.11回到Geo Server 226
9.12結束語230
第10章測試驅動開發的其他概念和討論231
10.1開場白231
10.2測試驅動開發與性能231
10.2.1性能優化測試的策略232
10.2.2相關單元級性能測試233
10.2.3嘗試優化Geo Server代碼234
10.2.4 Test Timer類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不良測試的死亡漩渦(亦稱為SCU Mmy週期) 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