测试驱动开发

2023 年 12 月 11 日

测试驱动开发 (TDD) 是一种通过编写测试来指导软件开发的软件构建技术。它是由 肯特·贝克 在 1990 年代后期作为极限编程的一部分开发的。本质上,我们反复遵循三个简单的步骤

  • 为要添加的下一个功能编写测试。
  • 编写功能代码,直到测试通过。
  • 重构新旧代码,使其结构良好。

虽然这三个步骤,通常简称为红 - 绿 - 重构,是该过程的核心,但还有一个重要的初始步骤,即我们首先列出测试用例。然后,我们选择其中一个测试,对其应用红 - 绿 - 重构,完成后再选择下一个测试。正确排序测试是一项技能,我们希望选择能快速引导我们进入设计关键点的测试。在此过程中,我们应该在想到新的测试时将其添加到我们的列表中。

首先编写测试,XPE2 称为测试优先编程,提供了两个主要好处。最明显的是,它是一种获得自测试代码 的方法,因为我们只能编写一些功能代码来响应通过测试。第二个好处是,首先考虑测试迫使我们首先考虑代码的接口。这种对接口和如何使用类的关注有助于我们分离接口和实现,这是许多程序员难以应对的良好设计的关键要素。

我听到的最常见的 TDD 失败方式是忽略第三步。重构代码以保持其清洁是该过程的关键部分,否则我们最终只会得到一堆杂乱无章的代码片段。(至少这些代码会有测试,所以结果比大多数设计失败要好。)

进一步阅读

肯特关于TDD 的规范方法 的总结是关键的在线总结。

要了解更多信息,请前往肯特·贝克的书籍测试驱动开发

詹姆斯·肖尔的敏捷开发艺术 中的相关章节是另一个可靠的描述,它还将 TDD 与有效的敏捷开发的其他方面联系起来。詹姆斯还制作了一系列名为让我们玩 TDD 的屏幕录像。

修订

我最初发布此页面的时间是 2005 年 3 月 5 日。受肯特的规范文章的启发,我在 2023 年 12 月 11 日对其进行了更新。