敏捷開發方法中有許多顛覆傳統開發流程的作法,TDD測試驅動開發(Test Driven Development)就是其中一種,不像過去先撰寫出一支功能程式再來測試,TDD反而是先從使用者角度寫測試,再回頭撰寫程式碼。

TDD顛覆了傳統開發的思維,被許多人視為是新一代開發人員必須了解的開發趨勢之一,甚至有人說只有使用TDD才能寫出乾淨的程式碼。

但是,Ruby on Rails創始人David Heinemeier Hansson (DHH)卻在今年RailsConf大會中抨擊TDD的問題,甚至演講結束隔天還寫了一篇戰文(TDD is dead. Long live testing),直指測試萬歲,但TDD已死。

DHH指出,大家過於相信「TDD宗教」,甚至以為,是自己不夠懂,所以,才沒辦法發揮出TDD的好處,但是DHH認為,一昧講究TDD,反而會破壞系統的設計,甚至,有時他寫的「髒程式」,還比講究TDD的「乾淨程式」還要更簡潔。
DHH更在部落格z8 戰文中直言:「我是DHH,我寫程式不TDD」(My name is David, and I do not write software test-first.),表明態度力反TDD。

DHH在RailsConf演講的影片連結如下,不過這場演講只有下半場提及TDD,上半場則是DHH談自己一路成為程式設計師的心路歷程,也很值得從頭到尾看完。

http://www.justin.tv/confreaks/b/522089408

另外,他的TDD已死戰文連結如下,也有熱心網友翻譯成中文。

RoR之父:TTD已死  原文網址
http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html

DHH的TDD已死戰文的中文翻譯
http://blog.littlelin.info/posts/2014/04/26/tdd-is-dead-long-live-testing

RoR之父批TDD已死的觀點,引起了很大的論戰。臺灣也有開發者因DHH的反思,而分享了自己的看法。

如臺灣頗具盛名的RoR開發高手XDite(鄭伊廷)認為,DHH提醒了其他人重新思考軟體設計的根本,應該是「好讀、易維護、以全局思考」而DHH以他的身分,對「要不要TDD」開了第一槍,是非常好的開始。

XDite文章:返璞歸真 -- 以最適當的方式設計軟體
http://blog.xdite.net/posts/2014/04/28/back-to-basic

Ingram(Cubie技術長陳彥任)是全球數百萬人下載的Cubie Messenger背後的核心開發成員,也因DHH這番言論,而分享了自己使用TDD的經驗。Cubie Inc(即力可科技)本身也是採取敏捷開發的新創公司,而Ingram更是重度的TDD使用者。

Ingram認為,DHH已經成精了,所以對他來說TDD已死,但對還沒接觸過Test First的開發者而言,這則是一個不能錯過的強大武器。

Ingram也提出自己採用Test First的五階段經驗,目前正處於「若沒寫測試就寫實際程式碼,會感到有罪惡感」以及「相當熟悉Test First,知道哪些地方沒寫也沒事,從罪惡感解放」,這兩個階段之間。

Ingram文章:Test Driven Development 經驗整理
http://ingramchen.io/blog/2014/04/how-i-do-test-driven-development.html

另一篇Ingram的文章也值得讀,談「無法測試的程式
http://ingramchen.io/blog/2014/04/things-i-dont-test.html

另外對於TDD測試驅動開發,iT邦hatelove大大也在2012年鐵人賽寫了一系列的簡介,若對TDD不熟悉的人也可以先看看。

30天快速上手TDD http://ithelp.ithome.com.tw/question/10109845

你認同TDD已死嗎?你認為TDD還是很重要嗎?說說你的看法。


熱門新聞

Advertisement