- 效益三,自动回归
修改代码很可能引入新的错误,回归就是回复到原有的正确状态,也就是原有的功能没有受到破坏。单元测试目标最小,运行最快,最容易实现自动回归测试。
如果没有单元测试,会怎么样呢?系统测试发现了错误后,修改代码,为了检测修改是否引入新的错误,又要进行下一轮的系统测试,这样就可能陷入循环。
如果有了单元测试,代码修改后可以立即运行回归测试,检查是否引入新的错误。回归测试也使开发过程自动趋于敏捷,也就是可以适应需求的经常变更,也正因为这个原因,单元测试是敏捷开发的基础和核心。
- 效益四,促进开发
如果边开发边测试,那么,单元测试的结果可以完整地描述程序的行为。程序的行为是什么呢?在什么输入下,会执行哪些代码,会产生什么输出,这就是程序行为。如果写代码时能随时察看程序行为,那么,就比较容易想明白思路对不对,接下来应该怎么写。已经写的有没有错误也随时可以发现,不但效率高得多,而且也没那么累。
只要做了单元测试,反映程序行为的数据就一定会存在,只要使用工具将这些数据捕获并显示出来,就可以一边编程一边察看程序行为,这就是可视编程,可视是指程序行为可视。
可视编程所付出的,是设定测试数据的时间,这个所花的时间不会很多,因为编程时本来就要考虑清楚程序会有哪些输入,如何处理,列出来就是了,得到的是编写效率的提高,并且基本上不需要调试。调试是最花时间的。可视编程使开发和测试同步完成,所用的时间一般比传统方式更短,代码单元功能越复杂,节约的时间越多。