TDD的一些思考

最近考虑在开发中引入TDD的概念,用于提高在进度压迫下的开发效率,搜索了一些资料,对于TDD的定义是这样的:

 

测试驱动开发
测试驱动开发(Test Driven Development,英文缩写TDD)是极限编程的一个重要组成部分,它的基本思想就是在开
发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。代码整洁可用(clean code that works) 是测试驱动开发所追求的目标。

 

以上的定义一定程度阐述了TDD,只是如果将“测试代码”换成“测试用例”就会更加精确些,下面这个定义大家可以细细体会一下:

Test-driven design (TDD) (Beck 2003Astels 2003), is an evolutionary approach to development which combines test-first development where you write a test before you write just enough production code to fulfill that test and refactoring.  

TDD是一种演化后的开发方式,它结合了TFD,即在完成满足测试与重构要求的代码前,先编写测试用例。

 

这就要求测试人员要在项目的一开始(非开发开始)就要加入进来,测试人员除了提前写测试用例, 无论是自动化的还是非自动化的, 而需要测试人员参加的一项重要活动, 就是参与特性验收条件的制定. 之前经常发生开发人员按照自己的理解去编码, 测试人员按照自己的理解去测试, 直到开发完成, 测试过程中才发现理解的不一致, 开始产生争执并阻塞等待产品经理或项目经理的仲裁. 解决办法就是就在开始开发新特性前的一刹那, 由PM, 测试人员, 开发人员进行一次讨论, 就验收条件达成一致并形成记录, 然后测试人员和开发人员分头去写测试和实现。这里就体现了敏捷的特性----减少后期由于理解不一致的带来的成本消耗。

 

测试人员早期的加入还有一个好处,就是帮助开发人员设计制定“规则”。一份需求文档主要的工作是描述这个产品应该做什么,而测试人员编写的测试用例除了要检验“该做的有没有做”以外,另一个重要工作就是“不该做的是不是没做”。这就类似于是需求文档,甚至是设计文档的一种补充及检验。这样TDD就可以使开发人员在开发过程中就开始减少了引入的bug数目。这又是敏捷的另一个特性----减少了bug引入数,进一步减少了测试-修改的迭代次数,节省了时间与人力。

 

If it's worth building, it's worth testing.

If it's not worth testing, why are you wasting your time working on it?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值