測試驅動開發(TDD)是一種開發軟件的過程,其中在編寫代碼以前先編寫測試。一旦完成,開發人員將努力編寫足夠的代碼以經過測試,而後開始重構。程序員
域驅動設計(DDD)是一種將實現與不斷髮展的模型聯繫在一塊兒的開發方法。將項目的重點放在覈心領域(知識領域),背後的邏輯上,並迫使技術和非技術方面之間進行協做以改進模型。
行爲驅動開發(BDD)是對TDD和DDD的改進,旨在經過縮小溝通差距,增進對客戶的瞭解並實現持續溝通來簡化開發。簡而言之,BDD是將業務需求與代碼結合在一塊兒的一種方式,使您可以從業務/最終用戶的角度瞭解系統的行爲。編程
Hybrid Practice混合實踐
架構
Test-driven development,即測試驅動開發。一種開發過程當中應用方法。其思想爲先根據需求抽象接口,先編寫測試用例,而後在開始編寫開發代碼。TDD的本意就是經過測試來推進整個開發的進行。框架
TDD說白了就是先寫一小段功能的測試代碼,測試失敗後再寫實現代碼,測試成功後接着迭代下一個功能。編程語言
TDD的優勢:ide
缺點:工具
Behavior-driven development,即行爲驅動開發。其目的是鼓勵軟件項目中的開發者、QA和非技術人員或商業參與者之間的協做。是從用戶的需求出發,強調系統行爲。經過用天然語言書寫非程序員可讀的測試用例擴展了測試驅動開發方法,使用混合了領域中統一的語言的母語語言來描述他們的代碼的目的,讓開發者得以把精力集中在代碼應該怎麼寫,而不是技術細節上,並且也最大程度的減小了將代碼編寫者的技術語言與商業客戶、用戶、利益相關者、項目管理者等的領域語言之間來回翻譯的代價.單元測試
目前主流的BDD測試框架爲Cucumber ,支持多種編程語言。測試
cucumber支持的關鍵字:ui
feature | "功能" | background | "背景" | scenario | "場景", "劇本" | scenario outline | "場景大綱", "劇本大綱" | examples | "例子" | given | "* ", "假如", "假設", "假定" | when | "* ", "當" | then | "* ", "那麼" | and | "* ", "並且", "而且", "同時" | but | "* ", "可是" | given (code) | "假如", "假設", "假定" | when (code) | "當" | then (code) | "那麼" | and (code) | "並且", "而且", "同時" | but (code) | "可是" |
編程是經過使用以上的關鍵字來描述應用的功能,使非開發人員能快速便捷的瞭解代碼的功能。
Domain-drive Design,領域驅動設計。其目的是以一種領域專家、設計人員、開發人員都能理解的通用語言做爲相互交流的工具,在交流的過程當中發現領域概念,而後將這些概念設計成一個領域模型,再有該模型驅動軟件設計和開發。
領域模型
領域驅動設計的分紅架構
業務對象的職責和策略:
DDD對構建企業級應用開發平臺和大型核心業務系統的做用是至關大的,不管是在產品的穩定性、擴展性、可維護性、生命週期等方面都有良好的表現
參考
The Value at the Intersection of TDD, DDD, and BDD
Hybrid Development: The Value at the Intersection of TDD, DDD, and BDD
BDD vs TDD vs ATDD : Key Differences
Differences between TDD, ATDD and BDD