內容簡介
[名家名著 22]
先求有,再求好,後求美
Kent Beck的測試驅動開發,帶領你快速突破軟體開發的重重難關!
讓你不再糾結、不再徬徨、不再浪費寶貴的時間!
譯者特別得到作者Kent Beck的授權,
將範例變更的歷程,放到GitHub上公開呈現每一個步驟的演進,
使讀者能夠搭配書中解說以理解TDD開發軟體的精髓!
★好評推薦★
想知道該如何對複雜的企業級需求化繁為簡嗎?如何能專注且輕鬆、不浪費每一分力氣地堆砌出最剛好的設計?該如何可靠穩定地建構出高易用性的API?如何隨心所欲地控制開發推進的步伐大小?如何透過持續的反饋進行實驗與學習,進而持續改善產品品質?如何將需求、驗收、測試、開發、設計各環節一以貫之,無多餘的一絲浪費?這些問題的答案,以及現代敏捷開發的基礎與核心,都在 Extreme Programming與 TDD 祖師爺 Kent Beck 這本經典代表鉅作中。
連任九屆微軟最有價值專家 陳仕傑(91)
「簡潔且執行正確的程式碼(clean code that works)」,這似乎是許多程式開發難題所存在的矛盾。而測試驅動開發(Test-Driven Development,TDD)則以矛盾、違反直覺的方式來解決這樣的矛盾問題:在你開始撰寫產品程式碼之前,先寫程式測試它。
這是什麼創新的想法嗎?完全不是。自從有電腦以來,程式開發人員就已經會在撰寫之前,先確認其輸入與輸出的結果。TDD只是採用這個古老的想法,並將它與現代程式語言和開發環境相互結合,端出一道滋味美妙的佳餚以滿足你對「簡潔且執行正確的程式碼」的渴望。
開發人員每天都在面對複雜的開發難題,然而最佳解決方案不可能隨時都準備好來派上用場。但屢見不鮮的是,這樣艱辛的專案往往面臨巨大的壓力,並隨之而來產生大量且糟糕的程式碼。為了獲得征服這樣看似艱鉅任務所需要力量與勇氣,開發人員應該了解一下TDD,這是一系列經過驗證可行的技術,能用來幫助開發人員同時設計出簡單好懂的程式,以及讓我們充滿信心的測試程式。
透過自動測試來驅動開發產品程式碼,然後消除程式中存在的重複,可使任何開發人員在面對無論多複雜的需求,都能寫出可靠、無錯誤的程式碼。除此之外,TDD的過程還能鼓勵開發人員更快速地學習、更清楚地溝通,並且從過程中尋求有建設性的反饋。
你將從本書學會:
•要解決複雜的任務,先從簡單開始,然後逐步發展到處理更複雜的情況。
•在開始寫產品程式碼之前,先寫自動化測試程式。
•藉由每次的重構步驟,一次引入一個設計的決定,形成演進式的設計。
•能替那些複雜的邏輯(包含反射跟例外)撰寫對應的測試。
•使用一些模式來決定該寫哪些測試。
•使用xUnit來撰寫測試,xUnit是許多開發人員所使用的測試工具中的核心架構。
這本書透過2個以TDD方式開發的專案範例來貫穿全場,藉此來解說開發人員能用來輕鬆且顯著提高工作品質的技術。這些範例遵循TDD與重構的一些模式。透過敏捷方法與快速開發策略能帶來的價值,TDD一定能激勵讀者去擁抱這些強大但還未被充分發揮巨大價值的技術。
作者Kent Beck是軟體業界中最具有創意且廣受好評的領導者之一。他熱愛採用模式、極限程式設計與測試驅動開發,目前隷屬於Three Rivers學院。他是一位超級銷暢作家,作品有《Extreme Programming Explained》(Addison-Wesley, 2000)以及《Planning Extreme Programming》(與 Martin Fowler合著, Addison-Wesley, 2001)並為《Refactoring》(Martin Fowler, Addison-Wesley, 1999)一書之貢獻者。
本書範例檔:(本範例檔以GitHub方式呈現已透過原作者授權)
https://tdd.best/book/tdd-by-example
先求有,再求好,後求美
Kent Beck的測試驅動開發,帶領你快速突破軟體開發的重重難關!
讓你不再糾結、不再徬徨、不再浪費寶貴的時間!
譯者特別得到作者Kent Beck的授權,
將範例變更的歷程,放到GitHub上公開呈現每一個步驟的演進,
使讀者能夠搭配書中解說以理解TDD開發軟體的精髓!
★好評推薦★
想知道該如何對複雜的企業級需求化繁為簡嗎?如何能專注且輕鬆、不浪費每一分力氣地堆砌出最剛好的設計?該如何可靠穩定地建構出高易用性的API?如何隨心所欲地控制開發推進的步伐大小?如何透過持續的反饋進行實驗與學習,進而持續改善產品品質?如何將需求、驗收、測試、開發、設計各環節一以貫之,無多餘的一絲浪費?這些問題的答案,以及現代敏捷開發的基礎與核心,都在 Extreme Programming與 TDD 祖師爺 Kent Beck 這本經典代表鉅作中。
連任九屆微軟最有價值專家 陳仕傑(91)
「簡潔且執行正確的程式碼(clean code that works)」,這似乎是許多程式開發難題所存在的矛盾。而測試驅動開發(Test-Driven Development,TDD)則以矛盾、違反直覺的方式來解決這樣的矛盾問題:在你開始撰寫產品程式碼之前,先寫程式測試它。
這是什麼創新的想法嗎?完全不是。自從有電腦以來,程式開發人員就已經會在撰寫之前,先確認其輸入與輸出的結果。TDD只是採用這個古老的想法,並將它與現代程式語言和開發環境相互結合,端出一道滋味美妙的佳餚以滿足你對「簡潔且執行正確的程式碼」的渴望。
開發人員每天都在面對複雜的開發難題,然而最佳解決方案不可能隨時都準備好來派上用場。但屢見不鮮的是,這樣艱辛的專案往往面臨巨大的壓力,並隨之而來產生大量且糟糕的程式碼。為了獲得征服這樣看似艱鉅任務所需要力量與勇氣,開發人員應該了解一下TDD,這是一系列經過驗證可行的技術,能用來幫助開發人員同時設計出簡單好懂的程式,以及讓我們充滿信心的測試程式。
透過自動測試來驅動開發產品程式碼,然後消除程式中存在的重複,可使任何開發人員在面對無論多複雜的需求,都能寫出可靠、無錯誤的程式碼。除此之外,TDD的過程還能鼓勵開發人員更快速地學習、更清楚地溝通,並且從過程中尋求有建設性的反饋。
你將從本書學會:
•要解決複雜的任務,先從簡單開始,然後逐步發展到處理更複雜的情況。
•在開始寫產品程式碼之前,先寫自動化測試程式。
•藉由每次的重構步驟,一次引入一個設計的決定,形成演進式的設計。
•能替那些複雜的邏輯(包含反射跟例外)撰寫對應的測試。
•使用一些模式來決定該寫哪些測試。
•使用xUnit來撰寫測試,xUnit是許多開發人員所使用的測試工具中的核心架構。
這本書透過2個以TDD方式開發的專案範例來貫穿全場,藉此來解說開發人員能用來輕鬆且顯著提高工作品質的技術。這些範例遵循TDD與重構的一些模式。透過敏捷方法與快速開發策略能帶來的價值,TDD一定能激勵讀者去擁抱這些強大但還未被充分發揮巨大價值的技術。
作者Kent Beck是軟體業界中最具有創意且廣受好評的領導者之一。他熱愛採用模式、極限程式設計與測試驅動開發,目前隷屬於Three Rivers學院。他是一位超級銷暢作家,作品有《Extreme Programming Explained》(Addison-Wesley, 2000)以及《Planning Extreme Programming》(與 Martin Fowler合著, Addison-Wesley, 2001)並為《Refactoring》(Martin Fowler, Addison-Wesley, 1999)一書之貢獻者。
本書範例檔:(本範例檔以GitHub方式呈現已透過原作者授權)
https://tdd.best/book/tdd-by-example
作者簡介
Kent Beck
Kent Beck不斷挑戰軟體工程的教條,並持續推廣模式、測試驅動開發以及極限程式設計等理念。目前隸屬於Three Rivers學院以及Agitar軟體公司,他同時也是眾多Addison-Wesley書籍的作者。
譯者簡介
陳仕傑(91)
連任九屆微軟最有價值專家(2010~2018)
著作:《ASP.NET MVC 5:網站開發美學》(12刷)、《ASP.NET MVC4 網站開發美學》
譯作:《敏捷開發實踐》、《單元測試的藝術 第二版》
審校:《進入IT產業必讀的200個.NET面試決勝題》
講師:各大技術研討會、知名企業內訓與公開培訓講師、知名部落客
Kent Beck不斷挑戰軟體工程的教條,並持續推廣模式、測試驅動開發以及極限程式設計等理念。目前隸屬於Three Rivers學院以及Agitar軟體公司,他同時也是眾多Addison-Wesley書籍的作者。
譯者簡介
陳仕傑(91)
連任九屆微軟最有價值專家(2010~2018)
著作:《ASP.NET MVC 5:網站開發美學》(12刷)、《ASP.NET MVC4 網站開發美學》
譯作:《敏捷開發實踐》、《單元測試的藝術 第二版》
審校:《進入IT產業必讀的200個.NET面試決勝題》
講師:各大技術研討會、知名企業內訓與公開培訓講師、知名部落客
內容目錄
獻詞
前言
致謝
序
譯者序
Part I 貨幣範例
Chapter 01 多幣別貨幣
Chapter 02 退化的物件
Chapter 03 眾生平等
Chapter 04 私有性
Chapter 05 法郎:那我呢
Chapter 06 一切平等,續集
Chapter 07 蘋果與橘子
Chapter 08 製造物件
Chapter 09 我們所在的Times
Chapter 10 有趣的Times 方法
Chapter 11 萬惡的根源
Chapter 12 終於來到加法了
Chapter 13 動工
Chapter 14 換匯
Chapter 15 混合幣別
Chapter 16 最後的工作:抽象
Chapter 17 貨幣範例的回顧
➔下一步該做什麼
➔隱喻
➔JUnit的使用
➔程式碼分析度量
➔過程
➔測試品質
➔最後一次回顧
Part II xUnit 範例
Chapter 18 開始xUnit 的第一步
Chapter 19 用餐前先擺餐桌
Chapter 20 事後清理
Chapter 21 計數
Chapter 22 處理失敗
Chapter 23 如何組成一組測試
Chapter 24 xUnit 回顧
Part III TDD 模式
Chapter 25 測試驅動開發模式
➔測試(名詞)
➔獨立的測試(Isolated Test)
➔測試清單(Test List)
➔測試先行(Test First)
➔驗證先行(Assert First)
➔測試資料(Test Data)
➔因果關係清晰的資料(Evident Data)
Chapter 26 紅燈模式
➔一次一步測試(One Step Test)
➔啟動測試(Starter Test)
➔說明測試(Explanation Test)
➔學習測試(Learning Test)
➔其他用途的測試(Another Test)
➔回歸測試(Regression Test)
➔休息一下(Take a Break)
➔重頭來過(Do Over)
➔便宜的桌子,舒適的椅子
Chapter 27 測試模式
➔子測試(Child Test)
➔模擬物件(Mock Object)
➔自分流(Self Shunt)
➔Log字串
➔模擬例外情況的假物件(Crash Test Dummy)
➔壞掉的測試(Broken Test)
➔提交時保持乾淨(Clean Check-in)
Chapter 28 綠燈模式
➔先作假,直到它變成真的(Fake It, Till You Make It)
➔三角定位法(Triangulate)
➔明確實作(Obvious Implementation)
➔從一到多(One to Many)
Chapter 29 xUnit 模式
➔驗證(Assertion)
➔固定裝置(Fixture)
➔外部固定裝置(External Fixture)
➔測試方法(Test Method)
➔例外測試(Exception Test)
➔全部測試(All Tests)
Chapter 30 設計模式
➔命令(Command)
➔數值物件(Value Object)
➔空物件(Null Object)
➔範本方法(Template Method)
➔插入式物件(Pluggable Object)
➔插入式選擇器(Pluggable Selector)
➔工廠方法(Factory Method)
➔冒名頂替(Imposter)
➔遞迴組合(Composite)
➔收集參數(Collecting Parameter)
➔單例模式(Singleton)
Chapter 31 重構
➔調和差異(Reconcile Differences)
➔隔離變化(Isolate Change)
➔資料遷移(Migrate Data)
➔擷取方法(Extract Method)
➔行內語句方法(Inline Method)
➔擷取介面(Extract Interface)
➔移動方法(Move Method)
➔方法物件(Method Object)
➔新增參數(Add Parameter)
➔把方法中的參數轉變成建構式中的參數
Chapter 32 精通 TDD
➔步伐應該多大?
➔哪些可以不用測試?
➔怎麼知道自己的測試沒有疏漏呢?
➔TDD 如何促進框架的形成?
➔你需要獲得多少反饋?
➔何時應該刪除測試?
➔程式語言與 IDE 如何影響 TDD 呢?
➔你能用 TDD 來開發大型系統嗎?
➔能使用應用程式等級的測試來驅動開發嗎?
➔如何想在產品開發中途開始引入 TDD 呢?
➔TDD 是給哪些人使用的?
➔TDD 對初始條件敏感嗎?
➔TDD 與模式的關係?
➔TDD 為什麼有效?
➔TDD 這個術語有什麼含義?
➔TDD 與極限程式設計實踐的關聯?
➔Darach 的挑戰
Appendix A 影響圖
➔反饋(Feedback)
➔系統控制
Appendix B 費氏數列
後記
前言
致謝
序
譯者序
Part I 貨幣範例
Chapter 01 多幣別貨幣
Chapter 02 退化的物件
Chapter 03 眾生平等
Chapter 04 私有性
Chapter 05 法郎:那我呢
Chapter 06 一切平等,續集
Chapter 07 蘋果與橘子
Chapter 08 製造物件
Chapter 09 我們所在的Times
Chapter 10 有趣的Times 方法
Chapter 11 萬惡的根源
Chapter 12 終於來到加法了
Chapter 13 動工
Chapter 14 換匯
Chapter 15 混合幣別
Chapter 16 最後的工作:抽象
Chapter 17 貨幣範例的回顧
➔下一步該做什麼
➔隱喻
➔JUnit的使用
➔程式碼分析度量
➔過程
➔測試品質
➔最後一次回顧
Part II xUnit 範例
Chapter 18 開始xUnit 的第一步
Chapter 19 用餐前先擺餐桌
Chapter 20 事後清理
Chapter 21 計數
Chapter 22 處理失敗
Chapter 23 如何組成一組測試
Chapter 24 xUnit 回顧
Part III TDD 模式
Chapter 25 測試驅動開發模式
➔測試(名詞)
➔獨立的測試(Isolated Test)
➔測試清單(Test List)
➔測試先行(Test First)
➔驗證先行(Assert First)
➔測試資料(Test Data)
➔因果關係清晰的資料(Evident Data)
Chapter 26 紅燈模式
➔一次一步測試(One Step Test)
➔啟動測試(Starter Test)
➔說明測試(Explanation Test)
➔學習測試(Learning Test)
➔其他用途的測試(Another Test)
➔回歸測試(Regression Test)
➔休息一下(Take a Break)
➔重頭來過(Do Over)
➔便宜的桌子,舒適的椅子
Chapter 27 測試模式
➔子測試(Child Test)
➔模擬物件(Mock Object)
➔自分流(Self Shunt)
➔Log字串
➔模擬例外情況的假物件(Crash Test Dummy)
➔壞掉的測試(Broken Test)
➔提交時保持乾淨(Clean Check-in)
Chapter 28 綠燈模式
➔先作假,直到它變成真的(Fake It, Till You Make It)
➔三角定位法(Triangulate)
➔明確實作(Obvious Implementation)
➔從一到多(One to Many)
Chapter 29 xUnit 模式
➔驗證(Assertion)
➔固定裝置(Fixture)
➔外部固定裝置(External Fixture)
➔測試方法(Test Method)
➔例外測試(Exception Test)
➔全部測試(All Tests)
Chapter 30 設計模式
➔命令(Command)
➔數值物件(Value Object)
➔空物件(Null Object)
➔範本方法(Template Method)
➔插入式物件(Pluggable Object)
➔插入式選擇器(Pluggable Selector)
➔工廠方法(Factory Method)
➔冒名頂替(Imposter)
➔遞迴組合(Composite)
➔收集參數(Collecting Parameter)
➔單例模式(Singleton)
Chapter 31 重構
➔調和差異(Reconcile Differences)
➔隔離變化(Isolate Change)
➔資料遷移(Migrate Data)
➔擷取方法(Extract Method)
➔行內語句方法(Inline Method)
➔擷取介面(Extract Interface)
➔移動方法(Move Method)
➔方法物件(Method Object)
➔新增參數(Add Parameter)
➔把方法中的參數轉變成建構式中的參數
Chapter 32 精通 TDD
➔步伐應該多大?
➔哪些可以不用測試?
➔怎麼知道自己的測試沒有疏漏呢?
➔TDD 如何促進框架的形成?
➔你需要獲得多少反饋?
➔何時應該刪除測試?
➔程式語言與 IDE 如何影響 TDD 呢?
➔你能用 TDD 來開發大型系統嗎?
➔能使用應用程式等級的測試來驅動開發嗎?
➔如何想在產品開發中途開始引入 TDD 呢?
➔TDD 是給哪些人使用的?
➔TDD 對初始條件敏感嗎?
➔TDD 與模式的關係?
➔TDD 為什麼有效?
➔TDD 這個術語有什麼含義?
➔TDD 與極限程式設計實踐的關聯?
➔Darach 的挑戰
Appendix A 影響圖
➔反饋(Feedback)
➔系統控制
Appendix B 費氏數列
後記
ISBN: 9789864345618