基本信息
原書名:Professional Test Driven Development with C#
作者:James Bender Jeff McWherter
譯者:賈洪峰 李菊彥
出版社:清華大學出版社
ISBN:9787302279716
出版日期:2012 年3月
開本:16開
頁碼:301
版次:1-1
內容簡介
如果您希望編寫易於實現和維護的可靠軟體,那您需要使用測試驅動開發(tdd)。這本實用手冊將向您展示如何創建高效的tdd過程。在用c#編寫的原始碼及示例的幫助下,作者帶您從頭到尾體驗tdd方法,並向您展示如何將這一方法套用於一個現實應用程式中。在研究這個應用程式時,我們將從頭構建它,執行開發過程中的每個步驟,解決出現的問題。相信您不久就能設計出自己成功的tdd過程。
主要內容
描述常見的軟體問題,並提供了解決這些問題的重構實踐
展示了叮用於測試wpf和silverlight應用程式的模式
在修復缺陷時,確保不會導致意料之外的副作用
展示如何構建具有可測試性的mvc應用程式
共享可用於測試wcf服務的簡易步驟
解釋如何運行集成測試,以確保一切功能都與計畫中的一致
揭示一些最佳實踐,用於編寫易讀、可維護的優秀測試
目錄
《c#測試驅動開發》
第Ⅰ部分入門
第1章通向測試驅動開發之路
1.1軟體開發的經典方法
1.2敏捷方法簡介
1.3 tdd背後的概念
1.4tdd的優點
1.5tdd方法的簡單示例
1.6本章小結
第2章單元測試簡介
2.1什麼是單元測試
2.2nunit一覽
2.3與模擬對象分離
2.4 moq概覽
2.5本章小結
第3章重構速覽
3.1為何重構
3.2整潔代碼原則
3.3代碼異味
3.4典型重構
.3.5本章小結
第4章測試驅動開發:以測試為指南
4.1從測試開始
4.2紅燈、綠燈、重構
4.3重構示例
4.4本章小結
第5章模擬外部資源
5.1依賴項注入模式
5.2抽象數據訪問層
5.3本章小結
第Ⅱ部分將基礎知識變為行動
第6章啟動示例應用程式
6.1定義項目
6.2定義用戶情景
6.3敏捷開發過程
6.4創建項目
6.5本章小結
第7章實現第一個用戶情景
7.1第一個測試
7.2實現功能
7.3通過重構來改進代碼
7.4多角度測試
7.5本章小結
第8章集成測試
8.1早集成、常集成
8.2編寫集成測試
8.3運行集成測試的時機和
方式
8.4本章小結
第Ⅲ部分tdd方案
第9章web上的tdd
9.1asp.netweb窗體
9.2使用asp.netmvc
9.3使用javascript
9.4本章小結
第10章測試wcf服務
10.2測試wcf服務
10.3本章小結
第11章測試wpf和silverlight應用程式
11.1測試用戶界面時的問題
11.2本章小結
第Ⅳ部分需求和工具
第12章應對缺陷和新的需求
12.1處理修改
12.2本章小結
第13章有關優秀工具的爭論
13.1測試運行程式
13.2單元測試框架
13.3模擬框架
13.4依賴項注入框架
13.5其他有用工具
13.6如何向團隊介紹tdd
13.7本章小結
第14章結論
14.1已經學到的內容
14.2tdd最佳實踐
14.3tdd的好處
14.4如何向團隊介紹tdd
14.5本章小結
附錄atddkatas
前言
作為一名諮詢師,我與開發人員合作過。在每一位客戶那裡,我都會遇到一個新團隊,要了解他們是如何開發軟體的。我見過非常優秀的團隊,也看到過分崩離析以致從未有過一個成功項目的團隊。這幾年,我注意到不同的團隊獲得成功具有不同的特點。我開始總結,是什麼使一個開發團隊開發和部署的應用程式優質且能為企業提供價值。
大多數人都預計我的觀察會得出這樣一條結論:成功的團隊擁有更聰明、更有能力的人員,他們當然能夠成功了。但那些失敗的團隊中也有許多非常聰明的人。顯然,智力不是成功的關鍵因素。
我在成功團隊中所看到的,是他們對技術的熱情,對自己作品的自豪感。他們總在學習新工具和新技術,希望能夠提高軟體開發速度,減少錯誤。而那些不太成功的團隊則滿足於堅持舊的工作方式,對周邊發生的變化從來不感興趣。
在我第一次遇到這些成功的、富有激情的開發團隊時,他們並非都採用了測試驅動開發(test-ddVen deVelopment,TDD)。但在了解到這一概念之後,他們大多都會快速而迫切地鎖定它。這些團隊發現,在開發軟體的過程中,增加測試驅動開發實踐,可以馬上得到非常出色的結果,提高了所交付應用程式的質量,減少了其中的缺陷。
要培養激情很難,扼殺它卻很容易。在缺乏激情的團隊里,通過介紹測試驅動開發,在許多情況下都能重新點起開發人員心中的激情。特別是對那些已經厭倦了日復一日地重複相同開發工作的開發人員而言,尤其如此!
除了激情之外,研究測試驅動開發還有另外一個非常有說服力的理由。有證據表明,近年來的兩個最大變化可能會吸引極多的開發人員,這兩大變化就是敏捷方法的興起和測試驅動開發。這兩者經常一起發展。我不相信,敏捷方法能夠在不使用測試驅動開發的情況下獲得長期成功,也想像不出測試驅動開發如何在一個瀑布環境中發揮作用。
敏捷方法已經比較成熟。它不再是一些小型開發部門使用的“瘋狂牛仔式編碼”方法了。一些大型公司在設計其IT部門的結構時大規模採用瀑布形式,現在也開始採用一種敏捷方法來開發越來越多的項目。即使是最官僚化的組織、政府也開始研究敏捷方法,並取得了巨大成功。這些開發清楚地表明了一個現實:那些可以在敏捷環境中工作(包括採用測試驅動開發)的開發人員,其價值很快就能超過那些不能在此環境中工作的開發人員。
驅動測試開發並不是存在於真空中的。在過去幾年裡,許多團體和運動都旨在提高所開發軟體的質量,並使企業參與到這一過程中。新的工作理念與方式已經向前發展,可以幫助開發人員開發出能夠滿足企業需求的可維護應用程式。諸如“軟體工藝”和SOLID等術語已經進入了世界各地富有激情的開發人員的辭彙表當中。一些開發人員甚至更進一步,將自己稱為軟體工匠或軟體技工。
為了滿足人們對於學習測試驅動開發及相關知識的要求,已經有了許多書籍、網站和研討會,其中有很多是非常出色的。但也有一些只不過是將一些常見的、可移植的工作方式加以商業化運作,為其套上一層昂貴的、專用解決方案的外衣。許多聰明的、熱情的開發人員都在討論和傳播測試驅動開發。但是,沒有任何一種“一站式”資源能夠將一位開發人員(具體來說,是.NET開發人員)從一個新手變為一個……嗯,還是一個新手,不過是掌握了一些信息的新手。
您正在閱讀本書,就憑這一點,就說明您對測試驅動開發是有興趣的。您可能是一位開發人員,聽了關於測試驅動開發的信息,但卻從未真正有機會研究它。您也可能是一位很有經驗的測試驅動開發人員,只是想看看這本書在討論這一主題時與其他書有什麼不同。無論是哪一種情況,就憑您正在閱讀本書,就表明測試驅動開發已經成為主流,值得花時間來學習、練習和改進。