测试驱动开发,是一种保证软件质量,提高研发效率的开发方法。

测试驱动开发的定义如下:

测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。

以上内容来自百度百科

百度百科很好的说明了这个问题,我们本文不再赘述,只讲关键问题。

基本流程

  1. 快速新增一个不能通过的测试
  2. 运行测试(运行一个测试,或者所有的测试)
  3. 尽可能少的改动,使测试通过
  4. 运行所有测试,并使其通过
  5. 重构代码,消除重复设计,优化结构
A: write a test 

B: make test pass 

C: refactor

A -> B -> C -> A

FAQ

功能测试应该怎么写?

功能测试,应该尽可能只使用本层的函数和接口。 例如,功能测试应尽可能调用 django app 的 URL 接口,而不是直接调用 app 中的业务逻辑。 当然,如果准备数据较为复杂,可以利用一些工具函数,将基础数据加载到系统中。 这些工具函数,我们同样建议在功能测试层实现,而不是直接调用最底层的函数。

不要忽视重构

重构是 TDD 的重要环节。可以通过 OOP 等方式尽可能的降低心智负担,从而使得代码简洁明了。 对于许多初学者,在执行一段时间的 TDD 后便无法推进了。很多程度上是因为无法简化程序逻辑。 TDD 能让你变得更好,发现问题。但是 TDD 无法解决原本就存在的设计问题。

WEB 前端如何采用TDD?

  1. 不测试样式。一般情况下,样式不是核心需求。
  2. 充分利用 HTML tag。例如:利用 class 定位元素
  3. 测试业务逻辑。针对历史 BUG 进行测试。
  4. 充分利用 Javascript 模块。写模块,而非脚本