TDD ( Test-driven development ) 是一種寫程式的開發技巧,提倡能為開發者及程式帶來多項好處:
先簡單列出最重要的這三點,之後再來做更詳細的說明。
TDD 要求,在寫任何產品程式之前,必須要先寫出預期功能的自動化測試。
若按照一般直覺的寫程式方式,思考完要寫什麼功能後,也許再做一些大略或詳細的設計,接著就開始進行 Coding,
寫出一個又一個的函式,完成部分或全部後,試著執行功能,測測看符不符合自己預期的功能,不符的話就繼續修改程式或開始 Debug。
然而 TDD 違反了這個直覺,使用時具有以下的步驟:
這裡說的自動化測試,可以是對於單一 function / class 的單元測試,也可以是更高層的整合測試。
下一篇就讓我們來看一個範例,開始瞭解如何用 TDD 的方式來寫函式。
這個系列預計由簡入深去探討 TDD 使用上的各種議題,大致包含下列方向
TDD 的各種介紹、如何實踐、以及程式範例會穿插於整個系列,範例目前會以 PHP 及 Laravel 為主,但也希望能包含到使用其他語言,時間充裕的話也許會寫一些 Web 前端或其他功能的範例。
接下來讓我們一起,一步步體會 TDD 的精髓吧。
設計流程,往往都違反了製作直覺的摸索過程。
TDD 的流程先決定了 I/O 再決定內容。是很棒的「設計流程」而且,在軟體以外的領域已經行之有年囉
也許因為純軟的寫程式成本低,反而形成了——有初步想法或拿到需求就開始寫——這樣的直覺,可能這也是大學程式設計課沒想到要教的事情,但電路設計課就要先思考I/O。
TDD 維基百科的兩頂帽子的比喻很貼近呢。
老實說我原本沒有看 TDD 維基百科的中文頁面XD,不過的確是在不同的思考方式之間切換。