TDD测试驱动开发
一、概念
TDD故名思意就是用测试的方法驱动开发,简单说就是先写测试代码,再写开发代码。传统的方式是先写代码,再测试,它的开发方式与之正好相反。
TDD是极限编程的一个最重要的设计工具之一,使得我们编码的目的更加明确。而极限编程的另一个最重要的工具—重构。重构改变的是代码的内部结构,而不会改变外部接口功能。一整套完备的测试用例可以保证我们的程序更加健壮,功能更加完善。
二、作用
站在用户使用的角度去思考如何完成产品设计,强迫开发人员事先思考完善的测试用例并提供不考虑细节的外部接口功能,大幅减少debug时间,提高产品开发质量。
三、适用范围
1.适合时间不是很紧的软件开发。
2.适合于产品和平台的开发。
四、操作步骤
- 加入一个新的测试。
- 运行下新加的测试,看到它失败。
- 对开发代码做很小的修改,目的就是让新加的测试通过 (注意这里的目的)。
- 运行所有的测试testcase,然后看到所有测试都通过了。
- 移掉重复的代码,对代码进行重构 (既包括功能代码,也包括测试代码。特别注意红色的字串一般会有重复,还有一些代码可以抽出来变成公用方法。
五、优缺点
优点
- 测试代码都是从客户需求出发的,不是重实现出发的。测试更关注于对外部的接口。
- 软件的需求都被测试代码描叙得很清楚,可以减少很多不必要的文档(有些时候写文档时间比开发时间多多了, 需要一个专门写文档的,而且用的机会很少。
- 每次都是很小的步骤,这样你就很集中注意解决一个问题。
- 可以优化设计。如果有做过测试驱动开发的会发现,为了更好的,更容易的做单元测试。
缺点
- 有时候开发代码可能只有几行,可是测试代码可能比真正的代码要多很多。而且花时间想怎么测试。
- 可能不适合时间很紧的软件开发
六、合作方式
最好且最快的方式就是XP中的无序结对编程,一个有TDD经验的坐在"后面",指导另一个不大熟悉的人,两人一起来完成一个类或模块的功能。