Pros and Cons of Test Driven Development
TDD 开发模式其实就是先准备好测试脚本, 然后根据脚本驱动编码.
在这种情况下,只要能通过所有的测试即能代表模块编码任务完成.
- 强制 Modularization, TDD 开发模式会强行让代码变得模块化, 可以让开发人员更容易理解系统的模块设计, 测试脚本也很适合新人进行学习
- 功能开发流程变得更高效,因为每一次修改都要运行一次测试,保证代码质量
- 可以立刻发现一些比较低端的错误. 比如一些完全是浪费时间的错误 (拼写错误,大小写问题等等)
- 强制 Modularization 的弊端: 很多部分用一个简单模块可以轻易写出, 如果强行要模块化那么很可能让代码变得复杂
- 比如 React 早期的 Class Component 文件, 每个文件需要写很多重复的模板代码
- 功能开发流程变得快速但是测试阶段会影响精度
- 一些 test case 进行了大量 mock 导致编写成本变高
- 测试一般希望尽可能涵盖各种边缘条件
- 想写一份非常好的测试脚本难度不小
- 每一个重构之后都需要修改测试代码
- 如果一个项目已经进行一半,很难中途突然开始引用 TDD 模式
- 测试人员很很可能对于测试 overconfident, 以至于无法发觉测试脚本中的错误