介绍
测试先行就是我们常说的测试驱动开发(TDD)
测试先行的实践方式
测试先行的实践方式是在接到一个新功能的时候,先写一个测试,这个测试一定会失败,然后编写代码使得测试成功,然后再写下一个测试,有点像是填坑的方式进行开发。
传统的开发方式是:设计-开发-测试 如此往复
测试先行的开发方式是:测试-代码-重构 如此往复
下图指示了设计先行的开发方法:
我们在实际开发中,通常会犯的两个错误就是:
- 只使用最少的代码实现正向的逻辑,漏掉或完全不考虑异常情况
- 再开发完主要功能之后,考虑到太多的异常情况,使得异常情况的处理变成补窟窿,最终得到的结果与原设计差别巨大。
使用测试先行的方法,在编写测试的过程中,就通过用户故事设计出各种异常情况的测试,“强迫”开发人员在编码的时候考虑异常情况,再者,将异常情况代入整体的设计,一定可以让代码更加简洁,降低代码的复杂性。
测试先行的作用
- 这种开发方式会潜移默化的改变我们的编程风格,本质上说:测试帮助我们针对实际使用来塑造设计
- 测试先行的单元测试不仅是在保护回归,而且是在帮助设计。在编写代码之前就指出代码的期望行为,从而在验证实现之前先验