打开主菜单

求真百科

测试驱动开发

测试驱动开发英语Test-driven development,缩写为TDD)是一种软件开发过程中的应用方法,由极限编程(Extrame Programming)中倡导,以其倡导先写测试程序,然后编码实现其功能得名。

测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。测试测试驱动开发始于20世纪90年代。测试驱动开发的目的是取得快速反馈并使用“illustrate the main line”方法来构建程序。

测试驱动开发的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD是 XP(Extreme Programming)的核心实践。它的主要推动者是 Kent Beck。

TDD process with functional test and unit test [1]

目录

什么是测试驱动开发

测试驱动开发是戴两顶帽子思考的开发方式:先戴上实现功能的帽子,在测试的辅助下,快速实现其功能;再戴上重构的帽子,在测试的保护下,通过去除冗余的代码,提高代码质量。测试驱动着整个开发过程:首先,驱动代码的设计和功能的实现;其后,驱动代码的再设计和重构。

测试驱动开发有广义和狭义之分,常说的是狭义的 TDD,也就是 UTDD(Unit Test Driven Development)。广义的 TDD 是 ATDD(Acceptance Test Driven Development),包括 BDD(Behavior Driven Development)和 Consumer-Driven Contracts Development 等。

本文所说的测试驱动开发(TDD)指狭义上的 TDD,也就是“单元测试驱动开发”。

为什么需要测试驱动开发

传统编码方式

盖房子的时候,一个新手或菜鸟级的小师傅,却可能不知道拉线,而是直接把砖往上垒,垒了一些之后再看是否笔直,这时候可能会用一根线,量一下砌好的墙是否笔直,如果不直再进行校正,敲敲打打。

测试驱动编码方式

工人师傅砌墙,会先用桩子拉上线,以使砖能够垒的笔直,因为垒砖的时候都是以这根线为基准的。测试驱动编码的方式就像老师傅砌墙,先写测试代码,就像工人师傅先用桩子拉上线,然后编码的时候以此为基准,只编写符合这个测试的功能代码。

测试驱动开发的主要环节

测试驱动开发主要有一下几个环节[2]

  1. 添加一个测试
  2. 运行所有的测试并查看是否有新的测试失败
  3. 编写功能代码
  4. 再次运行测试
  5. 重构代码

参考文献

  1. Harry J.W. Percival. Test-Driven Development with Python Second Edition,. 美国 : O'Reilly Media, Inc. August, 2017. ISBN 978-1-491-95870-4 (英文). 
  2. Kant Beck. Test-Driven Development By Example. 美国 : Addison Wesley. November 08, 2002. ISBN 0-321-14653-0 (英文).