TDD vs BDD
TDD vs BDD
-
什么是TDD?
Test-Driven Development,测试驱动开发,是一种开发流程。其流程为(1)根据需求写出相应的测试用例(2)编码使测试用例通过(3)重构代码。测试用例覆盖的粒度一般比较小,以单元测试为主,覆盖基础功能。开发使用这些来保证自己代码重构时功能的正确性。
-
什么是BDD?
Behavior-Driven Development,行为驱动开发,也是一种开发流程。BDD不再只为开发服务,而是作为QA,客户和开发之间的一个桥梁。它鼓励三方能够以对话或者具体的例子来描述应该程序的行为到底是应该什么样的。一般使用Acceptance test。
-
两者的关系是怎么样的?
简单的可以理解为TDD是BDD的子集。BDD是TDD的超集。BDD也应该是以单元测试为基础,只有保证基础的足够小的功能单元的正确性,才能保证应用程序行为上的正确性。
-
TDD和BDD的区别在哪里?
-
按照上文所述,BDD的测试的粒度要比TDD大很多。
-
TDD为开发服务,BDD为开发,测试和客户三方服务。换句话说,TDD侧重实现,BDD侧重行为
-
TDD的流程为 test case -> code to pass -> refactor,BDD在此基础上,还要考虑一些跟软件行为相关的内容
-
BDD有明确的test case 的书写格式:
-
标题
要有一个明确的标题
-
故事描述
使用以下结构来进行故事描述:
作为一个<会从这个应用程序中获取价值的角色>
我想要<某个特性>;
以便能够获得<这个价值>。
note:其实就是scrum的user story
-
验收准则:
对于上述故事的每一个特定的场景的描述,都要遵循以下结构:
Given: 场景开始的上下文环境;
when: 触发场景的事件;
then: 期望的结果.
-
-
参考:
[1] https://en.wikipedia.org/wiki/Behavior-driven_development