测试驱动开发

一种不同于传统软件开发流程的新型的开发方法
测试驱动开发(Test-Driven Development,简称TDD),是一种不同于传统软件开发流程的新型的开发方法,属于一种编程风格(或过程)。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。该技术应用领域包括新软件的开发,历史系统的维护。[1][2]
测试驱动开发由美国软件工程师K.贝克注(Kent Beck)倡导,在敏捷软件开发尤其是极限编程方法中得到了广泛认可和应用。贝克于2003年出版了“Test-Driven Development.By Example” 一书,详细描述了该技术。该技术的三个活动紧密交织在一起:编码、测试(以编写自动化单元测试的形式)和设计(重构形式)。[2][3]此外,测试驱动开发不是一种测试技术,它是一种分析技术、设计技术,更是一种组织所有开发活动的技术。但是测试驱动开发会导致单元测试的覆盖度不够,比如可能缺乏边界测试;在实际的操作中,和非测试驱动开发一样,当代码完成以后还是需要补充单元测试,提高测试的覆盖度。[1]

简介

TDD的基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。
TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。