Pros and Cons of Test Driven Development

TDD 开发模式其实就是先准备好测试脚本, 然后根据脚本驱动编码.

在这种情况下,只要能通过所有的测试即能代表模块编码任务完成.

优势

  1. 强制 Modularization, TDD 开发模式会强行让代码变得模块化, 可以让开发人员更容易理解系统的模块设计, 测试脚本也很适合新人进行学习
  2. 功能开发流程变得更高效,因为每一次修改都要运行一次测试,保证代码质量
  3. 可以立刻发现一些比较低端的错误. 比如一些完全是浪费时间的错误 (拼写错误,大小写问题等等)

劣势

  1. 强制 Modularization 的弊端: 很多部分用一个简单模块可以轻易写出, 如果强行要模块化那么很可能让代码变得复杂
    1. 比如 React 早期的 Class Component 文件, 每个文件需要写很多重复的模板代码
  2. 功能开发流程变得快速但是测试阶段会影响精度
    1. 一些 test case 进行了大量 mock 导致编写成本变高
    2. 测试一般希望尽可能涵盖各种边缘条件
    3. 想写一份非常好的测试脚本难度不小
    4. 每一个重构之后都需要修改测试代码
  3. 如果一个项目已经进行一半,很难中途突然开始引用 TDD 模式
  4. 测试人员很很可能对于测试 overconfident, 以至于无法发觉测试脚本中的错误