关于TDD和BDD

这里是关于TDD和BDD的个人区别理解,不喜勿喷

要理解这两个技术的区别,首先要对这两个技术自身有一个了解,在这里简单介绍一下:


TDD(测试驱动开发 Test Driven Development)

TDD是敏捷开发中的一项核心实践和技术,也是一种设计方法论。原理呢,是在开发功能代码之前,先编写单元测试用例代码,测试代码是要根据需求的产品来编写的代码。

TDD的基本思路就是通过测试来推动整个开发的进行。 // ! (测试驱动开发不是简单的测试,是需要把需求分析、设计和质量控制量化的过程)

个人理解为:测试驱动开发就是,在了解需求功能之后,制定了一套测试用例代码,这套测试用例代码对你的需求(对象、功能、过程、接口等)进行设计,测试框架可以持续进行验证。就像是在画画之前先画好了基本的轮廓,来保证能够画成你想要的东西。

TDD的优点是:

  1. 过程中可以检测,所以在不同的开发阶段都可以稳健开发(就是没啥大问题)。
  2. 大致方向明确,开发有一个正确的导向;而测试在测试阶段不必要和开发隔绝,只需要拟定一个验收条件即可,节省时间。

TDD的缺点是:

  1. 代码复杂。
  2. 明确导向,是需要一个确切的目标才能做到,目标要是瞬息万变,就会增加很多的问题。

BDD(行为驱动开发 Behavior Driven Development)

BDD是在应用程序存在之前,写出用例与期望,从而描述应用程序的行为,并且促使在项目中的人们彼此互相沟通。

BDD关注的是业务领域,而不是技术。BDD强调用领域特定语言描述用户行为,定义业务需求,让开发者集中精力于代码的写法而不是技术细节上。着重在整个开发层面所有参与者对行为和业务的理解。

个人理解为:行为驱动开发将所有人集中在一起用一种特定的语言将所需要的系统行为形成一个一致理解认可的术语。就像是统一了的普通话,各个地区的人可以通过普通话来了解一句话意义是什么。

BDD的优点是:

  1. 将各个参与协作团队的人员(跨领域)集中在一起达成一致的理解,节约了很多协作上的沟通时间。
  2. 具有明确的目的性,准确的让参与协作人员认识到开发什么。

TDD和BDD的区别

个人认为,这两者没有可比性,根本不是一个频道的东西;若非要说出二者的区别,总结有以下几点:

  1. 从各自的定义分析:TDD是一种从测试验收层面来推动整个项目开发的技术;BDD是一种对系统行为进行设计的协作技术。
  2. 从参与者来分析:TDD的参与者是开发和测试之间;BDD是专注于参与项目协作的每一个人员与用户之间。
  3. 从使用写法分析:TDD通常使用代码层级测试工具,单元写法没有特定局限;BDD是有非常辨识力的行为测试用例格式。
  4. 从解决问题分析:TDD是用于解决开发和测试之间脱节问题;BDD是用于解决需求和开发之间脱节问题。
  5. 从使用人群分析:TDD是开发人员和测试人员;BDD是客户和开发者。
  6. 从侧重点分析:TDD是侧重测试;BDD是侧重引导关注行为和规范。
阅读 1.2k

推荐阅读