如何把BDD,ATDD和TDD结合起来?

笔者最近在研究BDD,尽管在做BDD(行为驱动开发,或者ATDD,可接受性测试)的时候,不一定需要TDD(测试驱动开发),或者在做TDD(测试驱动开发)的时候也不需要BDD(为驱动开发)。但是如果项目对代码覆盖率有质量要求的时候,我想BDD一般很难达到很高的代码覆盖率(比如90%),因为其是一种比普通单元测试更高粒度的用户需求,那么在这种情况下,如何在BDD(行为驱动开发)把TDD(测试驱动开发)结合起来,从而提高代码的测试覆盖率呢?为了解释这个问题,首先咱们来看BDD和TDD分别是什么,其特点是什么。

Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。BDD最初是由Dan North在2003年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。在过去数年里,它得到了很大的发展。其中支持BDD的框架,有Cucumber,Spec,Spock等开源项目。
    
 TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程,一般高级语言都会提供某种xUnit框架来实现TDD,比如Java中的JUnit,.NET中的NUnit。 其基本步骤和周期如下。
       

从上面的BDD和TDD的定义已经流程,我们可以知道,其实BDD已经包含了TDD,但是因为其是面向可接受性测试的,是直接面向客户的,其测试案例(Test Case)的粒度又不可能细化到代码中每一个方法或者代码中的分支路径(if else; 异常等等),否则就变成了单元测试;但是如果其描述的可接受性测试,不覆盖代码中每一个方法或者代码中的分支路径的话,如果保证交付的软件产品的方法级别的代码质量呢?这个时候,肯定需要有某一个契合点能把BDD和TDD结合起来,具体结合方式请看下图示意。

从上面的图,我们可以看出。BDD(ATDD)是一种一种更高效的开发策略,其能帮助开发者精确的把握客户的需求。是一种高层次的行为方式。而低层次,需要更进一步细化的细节的实现,则需要使用TDD来进行分解BDD(ATDD)的需求规格说明。换句话说,TDD是为了保证开发者正确的做开发;而BDD(ATTD)则是保证了开发出来的产品或者软件是正确的。因此,其结合的契合点就是,在上层,还是通过和客户商量定义好的测试场景,进行一一列出,然后把需要实现的粗粒度测试场景(更面向用户的),分解成开发人员能够实现的方法级别的粒度,从而能够使用上TDD,从而不但能让客户和开发人员需要文档,只需要看我们的BDD中的功能规则说明只能知道该软件是否满足他们的需求,同时也能达到目标的代码覆盖率,从而进一步提高产品质量。
--------------------- 
作者:朱清云的技术博客 
来源:CSDN 
原文:https://blog.csdn.net/chancein007/article/details/53933872 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值