四个开发模式意思:

  • TDD:测试驱动开发(Test-Driven Development)
  • BDD:行为驱动开发(Behavior Driven Development)
  • ATDD:验收测试驱动开发(Acceptance Test Driven Development)
  • DDD:领域驱动开发(Domain Drive Design)

1. TDD: Test-driven development (测试驱动开发)

  是一种使用自动化单元测试来推动软件设计并强制依赖关系解耦的技术。使用这种做法的结果是一套全面的单元测试,可随时运行,以提供软件可以正常工作的反馈。

  在编写真正实现功能的代码之前先编写测试,每次测试之后,重构完成,然后再次执行相同或类似的测试。该过程根据需要重复多次,直到每个单元根据所需的规格运行。

2 .BDD:Behavior-Driven Development (行为驱动开发)

  BDD将TDD的一般技术和原理与领域驱动设计(DDD)的想法相结合。 BDD是一个设计活动,您可以根据预期行为逐步构建功能块。

  BDD的重点是软件开发过程中使用的语言和交互。

  行为驱动的开发人员使用他们的母语与领域驱动设计的语言相结合来描述他们的代码的目的和好处。

  使用BDD的团队应该能够以用户故事的形式提供大量的"功能文档",并增加可执行场景或示例。BDD通常有助于领域专家理解实现而不是暴露代码级别测试。它通常以GWT格式定义:GIVEN WHEN&THEN。

3. ATDD: Acceptance Test Driven Development(验收测试驱动开发)

  这是一种在编码开始之前将客户带入测试设计过程的技术。它也是一个协作实践,用户,测试人员和开发人员定义了自动验收标准。 ATDD有助于确保所有项目成员准确理解需要完成和实施的内容。如果系统未通过测试可提供快速反馈,说明未满足要求。验收测试以业务领域术语进行指定。每个功能都必须提供真实且可衡量的业务价值,事实上,如果您的功能没有追溯到至少一个业务目标,那么您应该想知道为什么您要首先实施它。

  进入彩蛋环节:在SBE-Specification by Example(实例化需求说明)的过程和工件有两种流行的模型:以验收>测试为中心的模型和以系统行为规范为主导的模型。

  以ATDD侧重于自动化测试,并把它作为实例化需求说明过程的一部分。这个模型的主要优点是开发目标更加分明确,并且可以防止功能退化。

  以BDD侧重于制定系统行为的场景。主要工作是通过协作和需求澄清,在项目干系人和交付团队之间建立共识。

4. DDD:领域驱动开发(Domain Drive Design)

DDD指的是Domain Drive Design,也就是领域驱动开发,DDD实际上也是建立在这个基础之上,因为它关注的是Service层的设计,着重于业务的实现,将分析和设计结合起来,不再使他们处于分裂的状态,这对于我们正确完整的实现客户的需求,以及建立一个具有业务伸缩性的模型

【转】浅谈TDD、BDD、ATDD、DDD的区别相关推荐

  1. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  2. 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解 本篇文章小编为大家介绍,Android onTouchEvent 与 onInterceptTo ...

  3. 什么是proxy服务器代理?怎么设置代理服务器?浅谈服务器代理与VPN的区别

    服务器 服务器是计算机的一种,它比普通计算机运行更快.负载更高.价格更贵.服务器在网络中为其它客户机(如PC机.智能手机.ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务.服务器具有高速的C ...

  4. 浅谈机器学习-回归与分类的区别

    前言 机器学习的主要任务便是聚焦于两个问题:分类和回归.本文将浅谈下两者的区别. 区别 回归会给出一个具体的结果,例如房价的数据,根据位置.周边.配套等等这些维度,给出一个房价的预测.         ...

  5. 浅谈云计算与超融合的区别和联系

    在项目设计阶段遇到了云计算和超融合的实际运用的问题,虽然自己本身不负责设计,但是对于云计算与超融合的区别也不了解,故查了一些资料,由此谈一下自己的理解,内容干干巴巴不瞎扯,不当之处欢迎交流指正. 在谈 ...

  6. 浅谈php7 引入的“??“和 “?:“的区别

    很多人在代码的编写过程中都会大量使用三目运算,原因无它,只因为这样可以是自己的代码看起来更加简洁高效!!! 不可否认,三目运算确实方便了"你,我,他".而为了使用方便php版本7 ...

  7. html5的api有什么区别,HTML入门--浅谈HTML和HTML5有什么区别?

    1.首先讨论什么是HTML5? 首先,HTML5是最新的HTML标准,HTML5拥有新的语义.图形以及多媒体元素.HTML5提供了新元素和新的API简化了web应用程序的搭建.HTML5是跨平台的,可 ...

  8. 浅谈c/c++typedef和#define区别[转]

    在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的 ...

  9. 普通计算机网络和工业控制网络的区别,浅谈工控电脑和普通电脑的区别

    工控电脑就是工业控制用的计算机,是计算机的一种,主要结构和工作原理和普通电脑没有什么区别,但是在设计上区别比较大. 工控机 机箱不同: 工控机箱采用钢结构,封闭式设计,内部有大量固定条,有较高的防磁. ...

最新文章

  1. String字符串类的获取功能
  2. SQL Server 备份还原造成孤立用户的问题
  3. 【BZOJ-2669】局部极小值 状压DP + 容斥原理
  4. LevelDB原理及应用
  5. C# 4.0 新特性之参数
  6. GMapbook中文版上线
  7. disruptor模拟高速处理大规模订单类业务场景
  8. 某科学的分支语句 --- switch
  9. BigGAN学会“七十二变”:跟着视频模仿动物,看到啥就能变啥
  10. JXSE 2.5 : What's Cool #6 -- PeerGroup Executor and ScheduledExcutor
  11. [题解]第十一届北航程序设计竞赛预赛——I.神奇宝贝大师
  12. 网易云音乐广告CTR预估模型演进过程
  13. 电视hdr测试软件,HDR+4K一个都不能少 本地资源播放测试
  14. df -h无响应问题解决
  15. 实验吧-欢迎来到地狱题解
  16. unity 贴图合并_[2018.4]Unity版本迭代与效果提升
  17. 怎么在漫画中去表现速度线?
  18. 腾讯云对象存储的完整教程,java将文件上传到腾讯云上后返回可以访问的连接
  19. C语言面试篇(一)总结
  20. 【单词】计算机常用1700单词

热门文章

  1. 爬虫入门-3.初识BeautifulSoup
  2. node.js Error: connect EMFILE 或者 getaddrinfo ENOTFOUND
  3. UVA-714 二分
  4. 通过回调函数阻止进程创建(验证结束,方案完全可行)
  5. UIImageView 圆角
  6. 【数据结构与算法】排序 冒泡、插入、选择 O(n^2)
  7. 不同vlan之间如何ping通_【丰润达.安防百科】如何实现交换机不同VLAN、不同网段之间互访?...
  8. 服务器测试文件怎么创建,如何创建一个“FTPS”模拟服务器以单元测试Java中的文件传输...
  9. mysql多表查询方式_MySQL多表查询方式问题
  10. 7-3 旅游规划 (25 分)(C语言实现)