测试帮助我们捕捉错误
使用自动化测试不仅是为了保证代码的期望行为,而且是帮助设计。
从而改善生产力,保证开发速度。
Google 曾估算出程序员引入 bug 后修复的成本是 5 美元。同样的缺陷,如果在运行了整个构建之后发现它, 则要花费 50 美元来修复。如果在集成测试后发现这个 bug ,成本飙升至 500 美元。到了系统测试阶段,成本高达 5000 美元。
所以说 bug 发现的越早越好,而自动化测试将会是一种有效,且能轻易的捕捉大部分错误的手段。
测试帮助我们针对实际使用来塑造设计
测试大多数取决于代码的上下文。
- 通常意义的优秀测试在特定条件下可能很糟糕
- 一般认为糟糕的应当避免的想法有时候却是正确的做法
当我们在阅读别人代码的时候(不仅是测试),不免有时候会觉得:“是谁写的这么臭的代码?”,等到后面明白工作原理及环境才认识到:这原来是个设计模式。
这样的例子在我们,我们经常会遇到。
同理在测试时不要盲目编写测试,优秀的测试可以使我们的设计更完善。
通过明确的指出所需的行为,测试帮助我们避免镀金
如果没有明确的行为,测试也就是没有意义的,可能会出现为了测试而测试,追求新技术,追求复杂的方法来测试。
- 测试不仅是保障我们避免 bug,我们将测试也表达为代码思考的过程。
所以明确需求的重要性不言而喻
编写测试的最大价值不在于结果,而在于在编程的学习
- 测试并不仅仅是一个质量保证工具,我们还要认识测试也是一种编程工具(一种设计工具)