BDD vs TDD
2012-12-31 21:37
106 查看
在敏捷开发中我们常听到BDD,TDD,ATDD….等术语。这里我想谈谈我对TDD和BDD的看法,以及在项目中的应用。
TDD is 测试驱动开发. TDD针对每个特定的功能写测试代码。当然一开始测试会失败(Red)的,因为我们的功能还不存在。然后写简单的代码使测试通过(Green)。接着重构代码(Refactor)。始终重复Red-Green-Refactor直到整个功能完成
BDD is 行为驱动开发. BDD首先创建的是可执行的规范(Specification)。当然一开始规范会失败(Red)的,因为我们的功能还不存在。然后写简单的代码使规范通过(Green)。接着重构代码(Refactor)。
在我看来BDD并不是替代TDD的一种敏捷开发模式。BDD可以看作是对TDD的一种补充,当然你也可以把它看作TDD的一个分支。在上图中BDD并没有去掉单元测试,BDD的验收测试是建立在单元测试的基础中。BDD在意程度上可以 TDD在项目实施过程中的一些不足。因为TDD并不能完全保证根据设计所编写的测试就是用户所期望的功能。BDD将这一部分简单和自然化,用自然语言来描述,让开发、测试、BA以及客户都能在这个基础上达成一致。因为测试优先的概念并不是每个人都能接受的,可能有人觉得系统太复杂而难以测试,有人认为不存在的东西无法测试。
最后TDD/BDD在我个人所接触的或参加过的一些项目中,并不能完全做到测试先行。尤其在项目的初期或是项目竞标阶段,成功的关键是快速验证你的IDEA的正确性,快速应变市场变化的速度。而且很多情况下我们在和客户的Specification没有确认的情况下,也就无从入手BDD了。无论TDD还是BDD,我们都关注开发过程中的产品质量,但是不能盲目引用TDD/BDD。。。
TDD is 测试驱动开发. TDD针对每个特定的功能写测试代码。当然一开始测试会失败(Red)的,因为我们的功能还不存在。然后写简单的代码使测试通过(Green)。接着重构代码(Refactor)。始终重复Red-Green-Refactor直到整个功能完成
BDD is 行为驱动开发. BDD首先创建的是可执行的规范(Specification)。当然一开始规范会失败(Red)的,因为我们的功能还不存在。然后写简单的代码使规范通过(Green)。接着重构代码(Refactor)。
在我看来BDD并不是替代TDD的一种敏捷开发模式。BDD可以看作是对TDD的一种补充,当然你也可以把它看作TDD的一个分支。在上图中BDD并没有去掉单元测试,BDD的验收测试是建立在单元测试的基础中。BDD在意程度上可以 TDD在项目实施过程中的一些不足。因为TDD并不能完全保证根据设计所编写的测试就是用户所期望的功能。BDD将这一部分简单和自然化,用自然语言来描述,让开发、测试、BA以及客户都能在这个基础上达成一致。因为测试优先的概念并不是每个人都能接受的,可能有人觉得系统太复杂而难以测试,有人认为不存在的东西无法测试。
最后TDD/BDD在我个人所接触的或参加过的一些项目中,并不能完全做到测试先行。尤其在项目的初期或是项目竞标阶段,成功的关键是快速验证你的IDEA的正确性,快速应变市场变化的速度。而且很多情况下我们在和客户的Specification没有确认的情况下,也就无从入手BDD了。无论TDD还是BDD,我们都关注开发过程中的产品质量,但是不能盲目引用TDD/BDD。。。
相关文章推荐
- [转]关于TDD、BDD和DDD的一些看法
- TDD、ATDD、BDD敏捷测试相关书籍
- TDD、ATDD、BDD比较
- 浅谈TDD、BDD与ATDD软件开发 (敏捷开发模式)
- TDD、BDD、ATDD、DDD 软件开发模式
- BDD 与 TDD
- 关于TDD、BDD和DDD的一些解释
- 浅谈TDD、BDD与ATDD软件开发
- TDD、BDD与ATDD CI
- [置顶] 浅谈TDD、BDD与ATDD软件开发 (敏捷开发模式)
- 关于TDD、BDD和DDD
- 开发人员看测试之TDD和BDD
- TDD、BDD与ATDD软件开发模式
- The TDD & BDD interfaces
- BDD(behaviour driven development), TDD(test driven development)
- TDD,BDD,DDD,XP,Scrum,Kanban,Design Thinking等名词解释
- The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber
- [Jasmine]Why Another JavaScript TDD/BDD Framework?
- [转]关于TDD、BDD和DDD的一些看法
- TDD&BDD