BDD 開發流程是從 Business Goal 出發,進而定義出為了達到目標所需要開發的功能(Feature)項目,然後利用使用情境(User story)描述出整體功能,再者以 Gherkin 語法建構功能的具體運作(Example)。最後,開發人員根據 Example 轉寫出整合測試與單元測試(Executable Specification、Low-level specifications)來驗證將要開發的項目。
BDD 如何運作
BDD 本身是一種幫助開發團隊進行定義開發的功能項目並且減少最終產品失敗的風險,主要是由 Scenario、Given、And、When、Then… 的 Gherkin 語法,用來充分地定義 Feature。
如以下 WebScoket 傳輸訊息的例子,能夠一目了然地知道要實做的功能與功能細部上具體的行為:
Scenario: Transferring a message to another client by WebSocket
Given a destination IP address and a mailbox
And mailbox have message should send to destination IP
When I send a message, there is no message in mailbox
Then the client should got message
And I have no message in mailbox
功能:實做 WebSocket client傳輸,會給予目標 IP、Message box,當 message box 有訊息時就進行傳輸,當傳輸的時候 message box 沒有訊息且接收方收到該訊息。
而 BDD 實際運用的時候是由 Marketing、PM、RD 團隊一起參與談論需求,直到寫出上面的範例碼,以此防止因為團隊之間的不理解導致最終開發出來的功能與 Business Goal有所誤差。BDD 有一個好處,當寫出 Example 之後,就可以使用一些現有的工具將這些 Examples 轉化成 Executable Specification、Low-level specifications,相對於實務上即為「整合測試」與「單元測試」。
採用 BDD 對整個團隊的好處:
- 開發人員:了解現有功能的運作情況。
- 測試人員和業務分析師:可以看到他們指定的功能是如何實現的。
- 客戶和專案經理:可以判斷專案的當前狀態,查看進度並決定將哪些功能發佈。
參考工具
- Python:Behave
- Java:Cucumber-JVM
- .NET:SpecFlow
- JavaScript:Cucumber-JS
參考資料
[1] Smart, J. F. (2014). BDD in Action (Vol. 12). New York: Manning Publications.