行為驅動開發

行為驅動開發(Behavior-Driven Development)(簡寫BDD),作為一種設計方法,可以有效的改善設計,並在系統的演化過程中為團隊指明前進方向。行為驅動開發的根基是一種“通用語言”。行為驅動開發是測試驅動開發的進化,但關注的核心是設計。行為驅動開發中,定義系統的行為是主要工作,而對系統行為的描述則變成了測試標準。在行為驅動開發中,我們需要使用通用語言來定義系統行為。

行為驅動開發(Behavior-Driven Development)(簡寫BDD
BDD 作為一種設計方法,可以有效的改善設計,並在系統的演化過程中為團隊指明前進方向。
行為驅動開發的根基是一種“通用語言”。這種通用語言同時被客戶和開發者用來定義系統的行為。由於客戶和開發者使用同一種“語言”來描述同一個系統,可以最大程度避免表達不一致帶來的問題。表達不一致是軟體開發中最常見的問題,由此造成的結果就是開發人員最終做出來的東西就不是客戶期望的。使用通用語言,客戶和開發者可以一起定義出系統的行為,從而做出符合客戶需求的設計。但如果光有設計,而沒有驗證的手段,就無法檢驗我們的實現是丌是符合設計。所以 BDD 還是要和測試結合在一起,用系統行為的定義來驗證實現代碼。
行為驅動開發是測試驅動開發的進化,但關注的核心是設計。行為驅動開發中,定義系統的行為是主要工作,而對系統行為的描述則變成了測試標準。在行為驅動開發中,我們需要使用通用語言來定義系統行為。而通用語言,實際上是一個最小化的辭彙表。我們使用這些辭彙來書寫故事。選入辭彙表的辭彙必須具有準確無誤的表達能力和一致的含義。例如“系統”這個詞就不符合要求,因為在不同的語境(又稱為上下文 Context)中,“系統”一詞具有不同的含義。而“自動提款機”則明確標識了一個沒有歧義的事物。
書寫格式:
Story: 標題 (描述故事的單行文字)
As a [角色]
I want [特徵]
So that [利益]
(用一系列的場景來定義驗證標準)
scenario 1: 標題 (描述場景的單行文字)
Given [上下文]
And [更多的上下文]...
When [事件]
Then [結果]
And [其他結果]...
實例:
Story: 帳戶持有人提取現金
As an [帳戶持有人]
I want [從 ATM 提取現金]
So that [可以在銀行關門後取到錢]
Scenario 1: 帳戶有足夠的資金
Given [帳戶餘額為 $100]
And [有效的銀行卡]
And [提款機有足夠現金]
When [帳戶持有人要求取款 $20]
Then [提款機應該分發 $20]
And [帳戶餘額應該為 $80]
And [應該退還銀行卡]

相關詞條

熱門詞條

聯絡我們