[懶人包]DHH: TDD is dead. Long live testing. 懶人包整理

[懶人包]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

  1. RubyLove.io 就有一篇 James O'Kelly 指名道姓的戰文:TDD isn't dead just because DHH doesn't do It
  2. Ingram 的 Test Driven Development 經驗整理

 

04/25

  1. Uncle Bob 反擊文:Monogamous TDD

 

04/26

  1. 小林將 DHH 的「TDD is dead. Long live testing」這一篇翻譯成中文:TDD 已死,測試萬歲
  2. 91 對「TDD is dead. Long live testing」 在 Facebook 上的討論串

 

04/28

  1. XDite 的評論:返璞歸真 -- 以最適當的方式設計軟體

 

04/29

DHH 又發表了一篇新文章:Test-induced design damage

  1. 其中的插曲是針對 Jim Weirich 在 2013 年 10 月的影片:Jim Weirich on Decoupling from Rails,DHH 針對 Jim 用六角架構的解耦角度,是透過單元測試來說明不以為然。這邊也埋下了 Uncle Bob 在 05/01 反擊文的火線。另外也提出針對 controller 進行單元測試的效益不如整合測試來得有意義。
  2. 六角架構的簡介,可以參考 Huanlin 大哥的簡介:應用程式的分層設計 (3) - DDD、六角、與洋蔥架構
  3. 91 在 FB 上的討論串

註:DHH 在 twitter 上發給 Kent Beck 跟 Martin Fowler 的邀請(戰帖?),來錄一些影片證明(辯論)一下對軟體開發的看法

 

04/30

Kent Beck 在 4 月 30 日 FB 上發了一篇超級反串文:RIP TDD (整個系列我最愛的一篇網誌,簡單明瞭的反串,帶出 TDD 真正的效益以及可以一併解決的問題,TDD is not just testing)

  1. 91 在 FB 的討論串
  2. 小鐵(Jace Ju)在 FB 的討論串

 

針對這次事件,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?

  1. 91 在 FB 的討論串

 

05/02

Uncle Bob: Professionalism and TDD (Reprise)

  1. 91 在 FB 上的討論串

 

其他相關參考

  1. Kent Beck 在 02/27 的 TDD 概念介紹文:Driving Development: Tests as a Steering Wheel
  2. 91 的 30 天快速上手TDD系列文
  3. 91 呼應 Now I’ll really use test driven development to write device driver code 文章撰寫的網誌:簡單地描述 TDD 開發流程

或許您會對下列培訓課程感興趣:

  1. 2019/12/21(六)~2019/12/22(日):演化式設計:測試驅動開發與持續重構 第七梯次(台北)
  2. 2020/1/4(六)~2020/1/5(日):Clean Coder:DI 與 AOP 進階實戰 第三梯次(台北)
  3. 2020/02/08(六):【針對遺留代碼加入單元測試的藝術】 第八梯次(台北)
  4. 2020/02/09(日):【極速開發+】 第九梯次(台北)
  5. 2020/02/28(五)~2020/3/1(日) C#進階設計-從重構學會高易用性與高彈性API設計 第三梯次(台北)

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路