測試驅動開發
2023 年 12 月 11 日
測試驅動開發 (TDD) 是一種透過撰寫測試來指導軟體開發的軟體建構技術。它是由 Kent Beck 在 1990 年代後期開發,作為極限編程的一部分。基本上,我們重複執行以下三個簡單步驟:
- 為您想要新增的下一個功能性元件撰寫測試。
- 撰寫功能程式碼,直到測試通過。
- 重構新舊程式碼,使其結構良好。

儘管這三個步驟(通常簡稱為「紅 - 綠 - 重構」)是此流程的核心,但還有一個重要的初始步驟,我們會先寫出測試案例清單。然後我們挑選其中一個測試,對其套用紅 - 綠 - 重構,完成後再挑選下一個。適當地排序測試是一項技能,我們希望挑選能快速引導我們找出設計中重點的測試。在此過程中,我們應該在想到時將更多測試新增到清單中。
先撰寫測試,也就是 XPE2 所稱的測試優先編程,提供了兩個主要好處。最明顯的是,這是一種取得 自測試程式碼 的方式,因為我們只能在通過測試後才能撰寫一些功能程式碼。第二個好處是,先思考測試會迫使我們先思考程式碼的介面。這種對介面和如何使用類別的關注有助於我們將介面與實作分開,這是許多程式設計師難以應對的良好設計關鍵要素。
我聽說最常見的搞砸 TDD 的方式是忽略第三個步驟。重構程式碼以保持其簡潔是此流程的關鍵部分,否則我們只會得到一堆雜亂的程式碼片段。(至少這些會有測試,所以這比大多數設計失敗的結果不那麼痛苦。)
延伸閱讀
Kent 對 執行 TDD 的標準方式 的摘要是關鍵的線上摘要。
若要深入了解,請參閱 Kent Beck 的著作 測試驅動開發。
James Shore 的《敏捷開發的藝術》相關章節是另一個精確的描述,它也將其與其他有效的敏捷開發連結起來。James 也寫了一系列名為 讓我們玩 TDD 的螢幕錄影。
修訂
我最初發布此頁面是在 2005-03-05。受到 Kent 的經典文章啟發,我在 2023-12-11 更新了它