login | English | Contact Us
  测试驱动开发 test first
  自动化测试
  每日构造
  极限编程
 
>>首页 >>研发动态
测试驱动开发(test first)

"程序都还没有写出来,测试什么呀!"
为了回答这个疑问,我们拿泥瓦匠的工作来作比喻。
工匠一:先拉上一根水平线,砌每一块砖时,都与这根水平线进行比较,使得每一块砖都保持水平。
工匠二:先将一排砖都砌完,然后拉上一根水平线,看看哪些砖有问题,再进行调整。

你一定会说工匠二笨吧!这样多浪费时间呀!然而按常规,多数研发团队在编写程序的时候就是按工匠二的方法在干活,甚至有时候比工匠二更甚,是整面墙都砌完了,直接进行"集成测试",结果经常让整面的墙倒塌。

如果我们能够在编写程序代码之前先进行测试方案的设计,会怎样?
如果我们保证除非没有这个功能将导致测试失败,否则就不在程序中实现该功能,会怎样?
换一个角度,如果当测试时发现必须增加某项功能才能够通过测试时,我们就增加这一功能,会怎样?

大师们通过对这些问题的思考和实践,发现测试驱动(test first)是一个提高软件代码质量,保障效率的绝佳手段。

普渡的项目组基于测试驱动进行软件开发,这不仅确保了程序中的每一项功能都有测试代码来验证其正确性,而且也确保了测试程序会及时发现那些被无意篡改的功能。团队会从测试驱动获得一个对程序调用者有利的新视角,透过该视角,团队成员在关心程序功能本身的同时,还能够对接口予以足够的关注,使其更易被调用。这种研发模式产生的代码,必然使其与其它代码保持低耦合。并且,当你要复用各个模块时,测试代码给出了很好的示例。

综上所述,测试驱动开发的精髓在于:coding前先做测试方案设计,编写测试代码;从测试的角度来验证设计,推导设计;同时将测试方案当作行为的准绳,实时验证程序的正确性,使极限编程成为可能。

普渡走在了实践测试驱动的前沿,正是测试驱动,成就了普渡软件产品无与伦比的稳定性和健壮性。