★我要吧★

 找回密码
 注册[Register]
搜索
qq空间相册密码查看为什么登陆后需要激活无法注册?

测试驱动开发技术(TDD)解析

[复制链接]
发表于 2010-3-30 16:29:30 | 显示全部楼层 |阅读模式
1、测试驱动开发的定义
测试驱动开发(Test-driven development)是现代计算机软件开发方法的一种。利用测试来驱动软件程序的设计和实现。测试驱动开始流行于20世纪90年代。测试驱动开发是极限编程中倡导的程序开发方法,方法主要是先写测试程序,然后再编码使其通过测试。测试驱动开发的目的是取得快速反馈并使用“illustrate the main line”方法来构建程序。

软件开发可以从两个方面去看待:实现的功能和质量。测试驱动开发更像两顶帽子思考法的开发方式,先戴上实现功能的帽子,在测试的辅助下,快速实现正确的功能;再戴上重构的帽子,在测试的保护下,通过去除冗余和重复的代码,提高代码重用性,实现对质量的改进。可见测试在测试驱动开发中确实属于核心地位,贯穿了开发的始终。

2、测试驱动开发技术的优点
  1) 提高代码质量。由于功能代码的高质量和完善的测试用例集,增强了开发者信心,从而赢得他人信任。

  2) 改进设计。TDD保证了功能代码的可测试性,降低了耦合度,改善组件对象模型,使设计在开发过程中逐步完善和改进。

  3) 为功能代码提供良好的文档,并能维护代码和文档的同步。敏捷宣言主张:能够运行的软件胜过面面俱到的文档。测试用例集就是一份准备可靠,且能运行的文档。

  4) 在一定程度上可代替程序调试。当每个单元测试关注每一个具体功能时,问题被更早和更好地避免。另外调试是手动而不可重复,TDD的测试用例集则是自动可回归的。

  5) 有效的质量控制和项目管理。对管理者来说,通过单元测试每日构建的结果,每天都清楚的知道项目的质量和开发进度。

3、测试驱动开发技术的核心
  1)快速响应需求变更

当需求变更时,首先更改测试代码,其次经过多次的重构,实现对需求变更的响应

只需要更改一次测试代码

  2)优化程序设计

通过重构,减少代码冗余,优化代码

通过测试代码的反馈,保持设计的松耦合性

  3)保证软件开发过程质量

测试驱动开发的每个单元模块都是经过测试的,软件开发过程的质量得到保证

变调试为测试

4、测试驱动开发中的测试
测试驱动开发中的测试和一般意义上单元测试的区别。一般意义上的单元测试是对实现了的功能的验证,功能和接口已经在此以前就完毕,属于测试的范畴;而测试驱动开发中开发者进行的单元测试时,需要考虑被实现的模块的功能和接口,在单元测试完毕以后,模块的功能和接口的设计和推敲基本完毕,尔后,开发者在测试的辅助下实现接口及其对应的功能,这里的单元测试属于需求分析和详细设计的范畴,在代码基本完毕以后,这些测试也成为单元测试的一个部分。

思路一下子清楚起来,TDD其实不只是“红——绿——重构”,它还是与设计相关的:在动手之前,还是要有一定的设计,而且,在设计中要考虑测试的问题。终于解开了心中的困惑,现在的你,对于TDD有了一个新的认识,虽然这个认识不见得是什么终极真理,但至少是通过自己的思考得来的,这让你更加相信实践出真知的道理。

5、测试驱动开发的实现过程
在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。
  测试驱动开发的基本过程如下:

发表于 2010-3-30 18:13:15 | 显示全部楼层
完全看不懂。
发表于 2010-4-8 16:51:37 | 显示全部楼层
学习了。谢谢楼主。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

QQ|手机版|小黑屋|☆我要吧☆ ( 豫ICP备13016831号-1 )

GMT+8, 2024-11-23 08:32 , Processed in 0.059230 second(s), 20 queries .

Powered by abc369 X3.4

© 2001-2023 abc369.

快速回复 返回顶部 返回列表