测试驱动开发(TDD)是一种开发软件的过程,其中在编写代码之前先编写测试。一旦完成,开发人员将努力编写足够的代码以通过测试,然后开始重构。
域驱动设计(DDD)是一种将实现与不断发展的模型联系在一起的开发方法。将项目的重点放在核心领域(知识领域),背后的逻辑上,并迫使技术和非技术方面之间进行协作以改进模型。
行为驱动开发(BDD)是对TDD和DDD的改进,旨在通过缩小沟通差距,增进对客户的了解并实现持续沟通来简化开发。简而言之,BDD是将业务需求与代码结合在一起的一种方式,使您能够从业务/最终用户的角度了解系统的行为。
Hybrid Practice混合实践
Test-driven development,即测试驱动开发。一种开发过程中应用方法。其思想为先根据需求抽象接口,先编写测试用例,然后在开始编写开发代码。TDD的本意就是通过测试来推动整个开发的进行。
TDD说白了就是先写一小段功能的测试代码,测试失败后再写实现代码,测试成功后接着迭代下一个功能。
TDD的优点:
缺点:
Behavior-driven development,即行为驱动开发。其目的是鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。是从用户的需求出发,强调系统行为。通过用自然语言书写非程序员可读的测试用例扩展了测试驱动开发方法,使用混合了领域中统一的语言的母语语言来描述他们的代码的目的,让开发者得以把精力集中在代码应该怎么写,而不是技术细节上,而且也最大程度的减少了将代码编写者的技术语言与商业客户、用户、利益相关者、项目管理者等的领域语言之间来回翻译的代价.
目前主流的BDD测试框架为Cucumber ,支持多种编程语言。
cucumber支持的关键字:
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
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。