Test Driven Delelop
“测试驱动开发”是一个比较有意思的软件工程上的概念,一直都想找个机会看看。刚好最近在重构工作中用到的 CI/CD + Test Infra,所以借此机会来看一下《测试驱动开发》这本书。
这本书分成三个大模块,前两个模块可以跳过,直接来到第三模块:测试驱动开发的模式。
测试驱动开发的模式
- 测试驱动开发模式
- 相互独立的测试
- 测试尽可能快
- 如果有两个测试失败了,应该是不同的两个问题,而不是环境问题
- 先写测试
- 先写断言
- 编写测试数据
- mock data 尽量简单直观,使用常量字符串表明含义
- 真实数据要有实用场景支撑
- 不可运行状态模式
- 启动测试
- 选择尽量简单的测试目标作为第一步
- 测试规范
- 拆分较大的测试
- 对于昂贵/复杂(时间/金钱意义上)的测试对象,采用 Mock 的方式进行测试
- risk: 保证 mock object 与实际对象的行为一致
- 可运行模式
- 失败的测试比不能运行的测试要好
- example: 不能运行的测试有时候甚至会从测试报告中遗漏
- 利用测试推动抽象:当你有两个以上的例子时候才能进行进一步抽象
- 设计模式
- 常用的设计模式同样对编写测试代码有指导作用
- 掌握 TDD
- Smell: 过长或者冗余的对象初始化脚手架代码,过长的测试运行时间,测试经常 transient 地失败
- 需要编写多少测试:考虑平均无故障时间,不必要为用不着的极限情况写测试
- 如何中途转向 TDD:不推荐直接完全重构。的确是比较困难。
整本书读下来的整体感觉还是过于 high level 了,希望以后能常读常新吧。