TDD介绍

一、概念

TDD是测试驱动开发(Test-Driven Development)的简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。其主要确保以下两件事:

  • 确保所有的需求都能被照顾到。
  • 在代码不断增加和重构的过程中,可以检查所有的功能是否正确。

TDD具有以下优点:

  • 在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能和能够发布的产品。
  • 保障代码的正确性,能够迅速发现、定位bug。针对关键代码的测试集,以及不断完善的测试用例,为迅速发现、定位bug提供了条件。

其缺点是:

  • 增加代码量。测试代码是系统代码的两倍或更多,但是同时节省了调试程序及挑错时间。

二、步骤

TDD的步骤如下图所示:

TDD

文字描述如下:

  1. 先写测试代码,并执行,得到失败结果。

  2. 写实现代码让测试通过。

  3. 重构代码,并保证测试通过。

  4. 反复实行这个步骤 测试失败 -> 测试成功 -> 重构。

三、原则

  • 测试隔离。不同代码的测试应该相互隔离。对一块代码的测试只考虑此代码的测试,不要考虑其实现细节。
  • 及时重构。无论是功能代码还是测试代码,对结构不合理,重复的代码等情况,在测试通过后,及时进行重构。
  • 可测试性。功能代码设计、开发时应该具有较强的可测试性。其实遵循比较好的设计原则的代码都具备较好的测试性。比如比较高的内聚性,尽量依赖于接口等。
  • 先写断言。测试代码编写时,应该首先编写对功能代码的判断用的断言语句,然后编写相应的辅助语句。
  • 测试驱动。这个比较核心。完成某个功能,某个类,首先编写测试代码,考虑其如何使用、如何测试。然后在对其进行设计、编码。
  • 测试列表。需要测试的功能点很多。应该在任何阶段想添加功能需求问题时,把相关功能点加到测试列表中,然后继续手头工作。然后不断的完成对应的测试用例、功能代码、重构。一是避免疏漏,也避免干扰当前进行的工作。
  • 小步前进。把所有的规模大、复杂性高的工作,分解成小的任务来完成,每个功能的完成就走测试代码-功能代码-测试-重构的循环。通过分解降低整个系统开发的复杂性。
  • 一顶帽子。开发人员完成对应的工作时应该保持注意力集中在当前工作上,而不要过多的考虑其他方面的细节,保证头上只有一顶帽子。避免考虑无关细节过多,无谓地增加复杂度。

Guess you like

Origin blog.csdn.net/qingyunhuohuo1/article/details/111224769
TDD