- 行為驅動開發
- BDD - 首頁
- BDD - 簡介
- BDD - 測試驅動開發
- BDD - 以BDD的方式進行TDD
- BDD - 基於示例的規範
- BDD - 工具
- BDD - Cucumber
- BDD - Gherkin
- BDD - SpecFlow
- BDD 有用資源
- BDD - 快速指南
- BDD - 有用資源
- BDD - 討論
行為驅動開發 - 簡介
行為驅動開發 (BDD) 是一種軟體開發流程,最初起源於測試驅動開發 (TDD)。
根據 BDD 演進的負責人 Dan North 的說法,“BDD 是在多個層面上使用示例來建立共享理解並揭示不確定性,以交付有意義的軟體。”
BDD 使用示例來說明系統的行為,這些示例以每個人都能夠理解和閱讀的語言編寫,參與開發的每個人都包括在內。這些示例包括 -
轉換為可執行的規範。
用作驗收測試。
BDD – 主要特徵
行為驅動開發側重於 -
提供共享的流程和共享的工具,促進軟體開發人員、業務分析師和利益相關者之間的溝通,以協作開發軟體,目標是交付具有業務價值的產品。
系統應該做什麼,而不是應該如何實現。
提供更好的可讀性和可見性。
不僅驗證軟體的工作原理,還驗證它是否滿足客戶的期望。
BDD 的起源
如果缺陷沒有在正確的時間被檢測到並及時修復,修復缺陷的成本將成倍增加。請考慮以下示例。
這表明,除非正確獲取需求,否則在後期階段由於誤解需求而導致的缺陷將代價高昂。此外,最終產品可能無法滿足客戶的期望。
當務之急是一種開發方法,該方法 -
基於需求。
在整個開發過程中關注需求。
確保滿足需求。
BDD 是一種可以滿足上述需求的開發方法。因此,行為驅動開發 -
推匯出系統不同預期行為的示例。
能夠使用業務領域術語以一種語言編寫示例,以確保參與開發的每個人(包括客戶)都能輕鬆理解。
透過對話不時地與客戶一起確認示例。
在整個開發過程中關注客戶需求(示例)。
使用示例作為驗收測試。
BDD 實踐
BDD 的兩種主要實踐是 -
基於示例的規範 (SbE)
測試驅動開發 (TDD)
基於示例的規範
基於示例的規範 (SbE) 在對話中使用示例來說明業務規則以及要構建的軟體的行為。
基於示例的規範使產品負責人、業務分析師、測試人員和開發人員能夠消除對業務需求的常見誤解。
測試驅動開發
在 BDD 的上下文中,測試驅動開發將示例轉換為人類可讀的可執行規範。
開發人員使用這些規範作為指南來實現新功能的增量。這將導致精簡的程式碼庫和一套自動迴歸測試,從而在軟體的整個生命週期內保持較低的維護成本。
敏捷 BDD
在敏捷軟體開發中,BDD 方法用於就待定的規範達成共識。
在敏捷 BDD 中執行以下步驟 -
開發人員和產品負責人協作在純文字編輯器中編寫待定的規範。
產品負責人指定他們期望系統具有的行為。
開發人員
用這些行為細節填充規範。
根據他們對系統的理解提出問題。
考慮當前的系統行為,以檢視新功能是否會破壞任何現有功能。
敏捷宣言和 BDD
敏捷宣言宣告如下 -
我們正在透過實踐和幫助他人實踐來發現更好的開發軟體的方法。透過這項工作,我們已經認識到以下價值 -
個體和互動 − 超過流程和工具
工作的軟體 − 超過面面俱到的文件
客戶合作 − 超過合同談判
響應變化 − 超過遵循計劃
也就是說,雖然右側的專案也具有一定價值,但我們更重視左側的專案。
BDD 與敏捷宣言的對應關係如下 -
| 敏捷宣言 | BDD 對應關係 |
|---|---|
| 個體和互動勝過流程和工具。 | BDD 是關於進行對話的。 |
| 工作的軟體勝過全面文件。 | BDD 專注於簡化建立具有業務價值的軟體。 |
| 客戶合作勝過合同談判。 | BDD 專注於基於想法的場景,並隨著開發的進行與客戶持續溝通。它不基於任何承諾。 |
| 響應變化勝過遵循計劃。 | BDD 專注於持續溝通和協作,這有助於吸收變化。 |