测试驱动的开发,让你消除代码中的bug

ZDNet软件频道 时间:2003-10-16 作者:ZDNet China |  我要评论()
本文关键词:
项目后期检讨主要集中于发现了多少个bug以及如何处理它们。在大多数情况下,你会发现CMM(能力成熟度模型)、six sigma等软件质量控制方法下过程评价基本上都是围绕着如何减少缺陷以及管理缺陷的。
本文译自Builder.com,未经许可请勿转载项目后期检讨主要集中于发现了多少个bug以及如何处理它们。在大多数情况下,你会发现CMM(能力成熟度模型)、六西格玛(six sigma)等软件质量控制方法下过程评价基本上都是围绕着如何减少缺陷以及管理缺陷的。

然而,尽管编写没有bug的软件是如此的重要,许多时间还是花费在消除bug而不是花在如何防止它们的出现这一更重要的步骤上。在单元测试(Unit Test)中,绝大多数开发者在完成单元之后才开始进行测试,而不是开发代码的同时进行测试。没有人可以责怪程序员,因为项目计划常常给代码编写安排了最少的时间。之所以这样,是由于人们常常相信他们的计划非常完善,因此编写代码也就很简单。不幸的是,实际情况往往并不是这样的。

你的选择:测试驱动的开发

测试驱动的开发(Test-driven development,TDD)提供了一些新特性。TDD认为测试是一个在开发代码过程中的主要工作之一,是一个需要连续执行的过程。TDD一直需要与单元测试打交道,直到开发者在单元测试中确信他(她)的代码工作良好且可以保持这种良好的工作状态为止。TDD本质上是一种不依赖于任何特定工具的思想。它当然并不局限于Java,这一概念也可以应用于其它编程语言。不过,TDD在Java中用的最为广泛,因此在下文中我将仅结合Java介绍TDD。

在开始开发之前需要创建测试计划,TDD和普通方法的根本区别就是TDD并不会像后者那样往往成为一份被遗忘的Word或者Excel文档。使用TDD,如果你开发一个包含有复杂逻辑的Java类,那么测试代码(开发者负责编写测试代码)并不会也变得复杂起来。开发者常常抱怨他们不得不与Word和Excel打交道,但是在测试Java的情况下,甚至最挑剔的开发者编写测试也没有问题。

Kent Beck在他的《测试驱动的开发:实例》一书中描述了下面的TDD步骤:

  • 添加测试。
  • 运行所有的测试,测试未通过。
  • 修改代码。
  • 运行所有的测试,测试全部通过。
  • 重构(refactor)代码,消除冗余。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134