测试驱动开发(Test Driven Development,简称TDD) 是一种软件开发过程中,先编写测试再编写代码的开发方法。通过不断测试,在保证代码质量的同时,也增强了代码可维护性和可复用性。
1.什么是TDD
TDD 的基本思想是测试首先被编写,然后才编写与之相应的产品代码。测试定义了一项验证功能是否正常的自动化测试用例,这些用例能够自动化地运行。此时,由于并没有任何代码实现该功能,所以相应的测试是不能通过的。接下来,程序员根据测试要求编写足够的代码来使测试通过。代码如此编写:只实现刚好使得为完成的测试得以通过。当测试能够通过之后,程序员便可以对新编写的代码进行重构来消除不必要的冗余。这个过程不断循环,直至代码达到所有需求都已经满足、易于维护。TDD 需要程序员全面理解整个应用场景功能,并能够通过测试来精确、高效地实现自己对需求的理解。
2.TDD的优点
1) 良好的代码质量:TDD 强制要求开发者先写测试用例,然后才加入新功能。这样做充分保证了软件的正确性和可靠性,并避免了不必要的BUG。
2) 功能持续交付:因为每次只完成一个小功能,所以可以更快地发布软件并由最终用户测试新的功能。
3) 局部调试而非全局调试:使用 TDD 方法开发的程序,在出现故障时,很容易找到问题发生的位置,不需要整个程序重新运行。
4) 提高代码的可维护性与复用性:使用 TDD 编写代码会让程序员在思考中快速清楚应用场景及其需求,从而编写出简洁且易于复用的代码,提高代码质量,便于维护。
3.TDD的缺点
1) 编写代码的效率降低:因为需要编写测试代码,所以相比其他方法,使用 TDD 需要更多的时间投入。
2) 前期准备不足可能造成较大的困难:因为需要构思出每一个测试用例,如果前期没能设计好,则后续的编码过程会比较困难。
3) 需要准确了解系统需求:使用 TDD 需要准确地理解需求,这对程序员的精神状态和素质有不小的考验。