[30天快速上手TDD][Day 1]TDD Guidance
前言
相信許多 developer 一定都曾經聽過、看過甚至寫過所謂的 Unit Test,可能也嘗試過所謂的 TDD。
但可能心裡也有很大的疑問:
- 「為什麼我要寫兩份程式?」
- 「為什麼我要寫程式來驗證我已經知道的結果?」
- 「我又不是 SA,可能也不懂 domain,怎麼產生一開始的 test case?」
最後的感想就變成是:
- 「Unit Test,那都是說說而已」
- 「Unit Test?沒那美國時間啦!」
- 「TDD 只不過是被拿來炒作而已,現實開發中,誰用 TDD 寫過一整個大系統?至少台灣沒有吧!」
- 「TDD 只是先寫測試程式而已,有什麼特別的?」
希望透過這一系列的文章,可以滿足大家的求知慾,激起大家的熱情,讓大家也可以動手跟著練習看看。
相信我,你也可以真的在TDD。
TDD 修煉系列大綱簡介
如前言所說,這個系列希望可以把 TDD 學習的順序,以及實際實作的順序介紹一下,讓大家可以先學每個環節,接著再把所學的組合起來,進行案例的實作。
我預計將 TDD 整塊大餅分成四份,分別是 Testing, Refactoring, TDD, 最後輔以「ATDD 與 BDD」。設計的目標則是:working software。如下圖所示:
TDD 的學習順序
我對TDD建議的學習順序是:
- Testing
- Refactoring
- TDD
- ATDD & BDD
TDD 的開發順序
TDD實際的開發順序則是:
- ATDD & BDD
- TDD
- Testing
- Refactoring
不管是學習順序,還是實作順序,其實都是環環相扣、相輔相成。接下來29天,則預計以上述的四個部分,來進行細部的說明與簡單的實作。
註:因為每一個環節都緊緊相扣,所以有一些階段不是這麼容易區分清楚。例如 Testing 其實在 ATDD, BDD , TDD 中,都有包含在裡面,這邊獨立的 Testing,或許用 Unit Testing 會更加合適。
主要的大綱與精神
一、Testing
- 單元測試 ( Unit Testing )
- 整合測試 ( Integration Testing )
- Presentation Layer Testing
二、Refactoring
- 讓程式碼會說話 ( Let code can talk )
- 簡單就是美 ( Simple is beauty )
- 不要過度設計 ( Never over design )
- 運用基本的物件導向原則 ( Need to understand OO skill and principle )
三、TDD, ATDD, BDD
- 滿足使用者需求 ( Fulfil user requirement )
- 如何產生測試案例 ( How to get acceptance test cases )
- 如何由測試案例開始設計程式 (How to start by test cases )
四、開發實例
- User Story
- ATDD
- BDD
- TDD
- Refactoring
五、總結
- Object-Oriented
- Unit Testing
- Integration Testing
- Refactoring
- CI & Auto Testing
- Agile/XP ( Continuous feedback )
總訣
最後則是用來貫穿整系列文章的總訣:
程式碼的存在是為了,也只為了滿足使用者需求,而不是寫給工程師自己爽的
補充
補上一些專有名詞的全名:
- TDD: Test-Driven Development
- ATDD: Acceptance Test-Driven Development
- BDD: Behavior-Driven Development
- CI: Continuous Integration
- XP: eXtreme Programming
blog 與課程更新內容,請前往新站位置:http://tdd.best/