[懶人包]DHH: TDD is dead. Long live testing. 懶人包整理
前言
4 月 23 日的時候,Ruby on Rails 創始人 David Heinemeier Hansson (DHH) 在今年 RailsConf 大會上大力抨擊 TDD (下半段影片 35:00 開始),結束之後 DHH 在 Blog 發表了一篇 「TDD is dead. Long live testing」,接下來就引起世界級的筆戰了。
其中有提到一段話,大意是:「現在如果開發不採 TDD ,好像就會被 TDD 狂熱者說自己 unprofessional ,不 TDD 就會是 Dirty Code」,而那個 professional 也為後面 Uncle Bob 05/02 的反擊文章埋下了哏。
而這篇文章則把一些相關的文章連結整理起來,供有興趣瞭解這次事件的朋友當參考。
04/24
- RubyLove.io 就有一篇 James O'Kelly 指名道姓的戰文:TDD isn't dead just because DHH doesn't do It
- Ingram 的 Test Driven Development 經驗整理
04/25
- Uncle Bob 反擊文:Monogamous TDD
04/26
- 小林將 DHH 的「TDD is dead. Long live testing」這一篇翻譯成中文:TDD 已死,測試萬歲
- 91 對「TDD is dead. Long live testing」 在 Facebook 上的討論串
04/28
- XDite 的評論:返璞歸真 -- 以最適當的方式設計軟體
04/29
DHH 又發表了一篇新文章:Test-induced design damage
- 其中的插曲是針對 Jim Weirich 在 2013 年 10 月的影片:Jim Weirich on Decoupling from Rails,DHH 針對 Jim 用六角架構的解耦角度,是透過單元測試來說明不以為然。這邊也埋下了 Uncle Bob 在 05/01 反擊文的火線。另外也提出針對 controller 進行單元測試的效益不如整合測試來得有意義。
- 六角架構的簡介,可以參考 Huanlin 大哥的簡介:應用程式的分層設計 (3) - DDD、六角、與洋蔥架構
- 91 在 FB 上的討論串
註:DHH 在 twitter 上發給 Kent Beck 跟 Martin Fowler 的邀請(戰帖?),來錄一些影片證明(辯論)一下對軟體開發的看法
04/30
Kent Beck 在 4 月 30 日 FB 上發了一篇超級反串文:RIP TDD (整個系列我最愛的一篇網誌,簡單明瞭的反串,帶出 TDD 真正的效益以及可以一併解決的問題,TDD is not just testing)
針對這次事件,ITHome 也在 04/30 整理了懶人包。
同一天,DHH 再發一篇:Slow database test fallacy。大綱是針對:過去講 integration testing 太慢,要 unit testing 才有效益,但現在都什麼時代了,要跑 integration testing 也只是咻一下就跑完了,效益比寫一堆 isolated unit testing 高多了,也可以避免很多因為 isolated unit testing 為基底的 TDD over design 的情況。
而 Gary Bernhardt 也針對 DHH 的「Slow database test fallacy」發表反擊文:TDD, Straw Men, and Rhetoric。大綱就是講:TDD 裡面根本沒有說一定要 isolated unit testing 才叫 TDD。
Uncle Bob 則發了一篇非針對 DHH ,從概念上闡述 TDD 的適用與不適用場景的文章:When TDD doesn't work.
05/01
Uncle Bob 針對 DHH 04/29 的「Test-induced design damage」發表反擊文:Test Induced Design Damage?
05/02
Uncle Bob: Professionalism and TDD (Reprise)
其他相關參考
- Kent Beck 在 02/27 的 TDD 概念介紹文:Driving Development: Tests as a Steering Wheel
- 91 的 30 天快速上手TDD系列文
- 91 呼應 Now I’ll really use test driven development to write device driver code 文章撰寫的網誌:簡單地描述 TDD 開發流程
blog 與課程更新內容,請前往新站位置:http://tdd.best/