TDD 的核心理念與流程:
測試驅動開發(TDD)是一個迭代開發過程,在 test、coding 和 refactor 間快速循環。在 TDD 中開發人員首先依規格來撰寫應有行為的測試,再進一步撰寫程式碼來逐步通過測試,最後進行必要的重構。
完成以上五個步驟後,再對下一個開發的功能再次進行這個過程。透過這種方法在不間斷的開發過程中維持其程式可靠性和可維護性。
這邊補充和 TDD 相關的 BDD
行為驅動開發(BDD)的核心思想源自於 Dan North 在 2000 年代帶來的一種更新、更專注於用戶的測試驅動開發方法。相較於 Kent Beck 在敏捷開發早期所創 TDD,BDD 更注重使用一種 共享語言
來改善技術和非技術團隊成員間的溝通,並且將焦點聚焦在系統的行為上,進而確保測試是以用戶為中心。
BDD 是從終端用戶的角度定義應用程式的功能表現。它提供了一種基於簡單、結構化的句子和利害關係人的母語(例如英語)來表達的通用語言。在BDD的實踐過程中,產品所有者、業務分析師和開發團隊(包含測試人員)會緊密協作並通過持續溝通來發現、理解並制定真正的業務需求。
以一個實際範例來看,我們可以瞭解到BDD如何協助開發人員寫出更具描述性的測試:
public class WhenTransferringInternationalFunds {
@Test
public void should_transfer_funds_to_a_local_account() {...}
@Test
public void should_transfer_funds_to_a_different_bank() {...}
@Test
public void should_deduct_fees_as_a_separate_transaction() {...}
...
}
這些以 BDD 「風格」撰寫的測試讀起來更像是一套規範,強調應用程式的行為,將測試作為表達和驗證該行為的手段。
雖然 TDD 在具備足夠技術能力並熟悉使用的單元測試框架的情況下能夠發揮很大的效用,但 BDD 能夠透過更清晰、直接的語言撰寫出測試,提升技術和非技術團隊之間的協作效率。