行為驅動開發
行為驅動開發(英語:Behavior-driven development,縮寫BDD)是一種敏捷軟體開發的技術,伊鼓勵軟體項目中的開發者、QA 佮非技術人員抑是商業參與者之間的協作。BDD 上原初是由 Dan North 佇二空空三年號名,伊包括驗收測試佮客戶試驗驅動等的極限編程的實踐,成做對測試驅動開發的回應。佇過去幾年內底,伊得著足大的發展。
二空空九年,佇倫敦發表的「敏捷規格,BDD 佮極限測試交流」中,Dan North 著 BDD 予出了如下定義:
> > BDD 第二代的、是由外及內的、因為搝 ( pull ) 的、多方利益相關者的 ( stakeholder )、濟款會當楦闊的、高自動化的扭掠方法。伊描述一个交互循環,會當有紮真好定義的輸出(即工作中交付的結果): 已經測試過的軟體。 > >
BDD 的重點是通過佮利益相關者的討論取得對預期的軟體行為的清醒認捌。伊通過用自然語言書寫非程式設計師會當讀的測試用例擴展了測試驅動開發方法。行為驅動開發人員使用混合了領域中統一的語言的母語言來描述𪜶的代碼的目的。這予開發者著愛共精神集中佇咧代碼應該愛按怎寫,毋是技術細節上,而且嘛上大程度減少共代碼編寫者的技術語言佮商業客戶、用戶、利益相關者、專案管理者等的領域語言之間來回翻譯的代價。
Dan North 創造了首个 BDD 框架:JBehave;了後是 Ruby 語言的較是因為故事的 RBehave,尾仔去予人納入去 RSpec 項目。伊閣佮大衛赫利姆斯基、Aslak Hellesøy 佮其他人開發矣 RSpec,並且做伙編寫矣《The RSpec Book : Behaviour Driven Development with RSpec , Cucumber , and Friends》。 RSpec 中第一个是佇咧故事的框殼,尾仔去予主要的由來 Aslak Hellesøy 開發的 Cucumber 取代。
二空空八年,參與矣圍共踅 BDD 進行的首輪討論的克里斯馬茨,提出特性注入 ( Feature Injection ) 的想法,使 BDD 會當崁分析的空間並提供對初期的展望到編碼佮發佈的規个軟體性命周期過程的改造。
BDD 實踐
BDD 的做法包括:
- 確立無仝利益相關者愛實現的遠景目標
- 使用特性注入方法畫出達到遮的目標所需要的特性
- 通過由外佮內的軟體開發方法,共牽涉著的利益相關者融入到實現的過程中
- 使用例來描述應用程式的行為或者是代碼的每一个單元
- 來往過自動運行遮的例,提供快速反饋,進行回歸測試
- 使用「應當 ( should )」來講軟體的行為,以幫助闡明代碼的職責,猶閣有回答對該軟體的功能性的質疑
- 使用「確保 ( ensure )」來講軟體的職責,以共代碼本身的效用佮其他單元 ( element ) 代碼𤆬來邊際效用中區分出來。
- 使用 mock 作為猶未編寫的相關代碼模塊的替身
特性注入
一个公司可能有足濟个會帶來商業利益的無仝願景,通常包括盈利、省錢抑是保護錢。一旦某一个願景予人開發小組確定做當前條件下的最佳願景,𪜶需要閣較濟幫助來成功實現這个遠景。
然後確定這个願景的主要利益相關者,會帶入其他的利益相關者。逐个相關者欲定義為著實現該願景𪜶需要完成的目標。比如講,法務部門可能要求某一寡監管愛得著滿足。市場行銷負責人可能愛參加將使用這个軟體的用戶的社區。安全專家需要確保該軟體袂受著 SQL 注入去的攻擊。
通過遮的目標,會定義出愛實現遮的目標所需要的大概的題目 ( theme ) 或者是特性集合。比如講,「 允准用戶排序來貢獻值」抑是「交易審計」。
遮的主題,通好著用戶功能佮用戶界面的頭一批細節。
是由外及內
BDD 是由商業價值--佇應用開發中自然增加的商業利益--彼驅動的。愛認清這个利益的唯一方式,是通過用戶接口(通常--但並無總是--圖形界面,GUI)理解應用程式。
仝款,每一段的代碼,對用戶界面開始,會當共視作伊使用的其他的模塊代碼的利益相關者。每一个代碼單元 ( element ) 通過佮其他的單元合作,提供部份的行為,對規个應用程式的行為。
參見
- 測試驅動開發,TDD / Test-Driven Development
- Scrum
引用
外部連結
- Dan North's article introducing BDD
- Introduction to Behavior Driven Development
- Behavior Driven Development Using Ruby ( Part 一 )
- Behavior-Driven Development Using Ruby ( Part 二 )
- In pursuit of code quality : Adventures in behavior-driven development by Andrew Glover
- Behavior Driven Database Development by Pramodkumar Sadalage
- The RSpec Book : Behaviour Driven Development with RSpec , Cucumber , and Friends
- Good Test , Better Code–From Unit Testing to Behavior-Driven Development
- BDD in practice