1.3 单元测试能产生哪些效益?
单元测试的效益已经得到广泛的认同,现在的问题已经不是有没有必要做,值不值得做,而是如何多快好省地做好单元测试,所以,关于效益,这里只是简单的介绍一下。
效益一,保证代码质量
只有单元测试才能完整检测代码单元的功能逻辑,使代码单元的质量得到保证,只有代码单元的质量得到保证,软件的整体质量才有可能得到保证。
效益二,排错成本最小
单元测试通常是最早阶段的测试,早到什么程度?可以一边写代码一边测试。排错成本越到后面就越高,单元测试的排错成本可能只是系统测试的几分之一甚至几十分之一。
效益三,自动回归
修改代码很可能引入新的错误,回归就是回复到原有的正确状态,也就是原有的功能没有受到破坏。单元测试目标最小,运行最快,最容易实现自动回归测试。
如果没有单元测试,会怎么样呢?系统测试发现了错误后,修改代码,为了检测修改是否引入新的错误,又要进行下一轮的系统测试,这样就可能陷入循环。
如果有了单元测试,代码修改后可以立即运行回归测试,检查是否引入新的错误。回归测试也使开发过程自动趋于敏捷,也就是可以适应需求的经常变更,也正因为这个原因,单元测试是敏捷开发的基础和核心。
效益四,促进开发
如果边开发边测试,那么,单元测试的结果可以完整地描述程序的行为。程序的行为是什么呢?在什么输入下,会执行哪些代码,会产生什么输出,这就是程序行为。如果写代码时能随时察看程序行为,那么,就比较容易想明白思路对不对,接下来应该怎么写。已经写的有没有错误也随时可以发现,不但效率高得多,而且也没那么累。
只要做了单元测试,反映程序行为的数据就一定会存在,只要使用工具将这些数据捕获并显示出来,就可以一边编程一边察看程序行为,这就是可视编程,可视是指程序行为可视。
可视编程所付出的,是设定测试数据的时间,这个所花的时间不会很多,因为编程时本来就要考虑清楚程序会有哪些输入,如何处理,列出来就是了,得到的是编写效率的提高,并且基本上不需要调试。调试是最花时间的。可视编程使开发和测试同步完成,所用的时间一般比传统方式更短,代码单元功能越复杂,节约的时间越多。
说明
本系列文章根据《单元测试与VU2.6应用》视频讲座的理论部分整理而成,PPT及视频下载:
PPT下载:http://download.csdn.net/source/2246006
视频part1: http://download.csdn.net/source/2246273
视频part2: http://download.csdn.net/source/2246345
视频part3: http://download.csdn.net/source/2246364
本系列文章及视频讲座介绍的是单元测试理论的精要部分,详细内容请阅读《C/C++单元测试实用教程》(电子版将于2010年5月份发表,本播客将连载)。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dellfox/archive/2010/04/14/5484405.aspx