演化架构与紧急设计: 测试驱动设计,第 1 部分
2009-11-05 00:00:00 来源:WEB开发网核心提示:常见的一种敏捷开发实践就是 TDD,TDD 是一种编写软件的模式,演化架构与紧急设计: 测试驱动设计,第 1 部分,它使用测试帮助您了解需求阶段的最后步骤,先写测试,并让它来提示如何编写可以让测试通过的代码,为了演示这个重要区别,再编写代码,这样可以巩固您对代码所需执行的操作的理解
常见的一种敏捷开发实践就是 TDD。TDD 是一种编写软件的模式,它使用测试帮助您了解需求阶段的最后步骤。先写测试,再编写代码,这样可以巩固您对代码所需执行的操作的理解。
大多数开发人员认为 TDD 带来的主要好处是最终得到的综合单元测试集。但是,如果正确执行的话,TDD 可以改进代码的整体设计,因为它将决策推迟到最后责任时刻(last responsible moment)。由于您没有预先做出任何设计决定,因此它让您随时可以采用更好的设计选择或者重构为更好的设计。本文将介绍一个示例,用于演示根据单元测试的结果进行设计的强大之处。
TDD 工作流程
测试驱动开发 术语中的关键词是驱动,表示测试将驱动开发流程。图 1 显示了 TDD 工作流程:
图 1. TDD 工作流程
图 1 中的工作流程是:
编写一个失败的测试。
编写代码以使测试通过。
重复第 1 步和第 2 步。
在此过程中积极地重构。
当您无法再想到任何测试时,那么就必须做决策了。
TDD 与先开发后测试的比较
测试驱动 开发强调首先进行测试。只有在编写了测试(并失败)后,您才可以编写测试中的代码。许多开发人员使用称为后测试开发(test-after development,TAD)的各种测试,您将首先编写代码,然后编写单元测试。在这种情况下,您仍然进行了测试,但是没有涉及到 TDD 的紧急设计方面。您可以很轻松地编写一些非常恶劣的代码,然后费劲脑筋地想办法测试。通过先编写代码,您在代码中嵌入了有关代码如何工作的想法,然后测试这些代码。TDD 要求您反过来做:先编写测试,并让它来提示如何编写可以让测试通过的代码。为了演示这个重要区别,我将着手实现一个扩展示例。
更多精彩
赞助商链接