Blues Brothers的歌曲“Everybody Need Somebody”中有这样几句话:请人们记住,无论你是谁,无论你靠什么生活,总有一些事情我们是一样的……”pbielicki在他的博客中认为,对于软件开发者而言,相同的一些事情就应该蕴含“单元测试”。本文作者的某些观点只管有些绝对化,但确实介绍了单元测试的优越性,并借此来极力推荐单元测试给每个软件工程师÷次序员÷开发者。
不论是是不是迅速开发的fans,也许你会说这种开发方法很傻、很不成熟,对软件开发没有任何资助。也许你不会用也不喜欢Scrum,你会认为XP很讨厌,你这么说没问题,因为这是个人口味的问题。但是忘掉迅速吧,忘掉那些次序和编程方法——单元测试你的代码吧!
我刚回想了另外一个很复杂的次序但是里面没有任何的单元测试,而且没有任何的说明文件。也许你读得懂代码也清晰其意思,但我怎么知道它的功能就是它应该具备的功能呢?我怎么知道开发他的人没有写出伙伴呢?
单元测试不仅能够作为无错编码一种辅助手段在一次性的开发过程中应用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行掩护。也许你会认为这很麻烦,但只管单元测试是由次序员自己来完成,最终受益的也还是次序员自己。能够这样理解,次序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。
单元测试能够作为规格说明来责任,测试能够以规格说明为基础。代码就能够针对它的规格说明,而不是针对自身进行测试。这样的测试不仅能够抓住编译器的Bug,同时也能找到更多的编码伙伴,甚至是一些规格说明中的伙伴,因为好的规格说明能够使测试的质量更高 。
在这里,我概要地说一下单元测试的好处:
1、单元测试记录软件系统外部和外部的结构;
2、单元测试资助你和其他开发者迅速地看到是否“升级”的代码打乱了已有的代码;
3、单元测试是你的软件原理bug—所有的问题都会在编写测试时解决掉;
4、单元测试结合“code coverage”会让提升你软件的质量;
5、单元测试能够在开发过程中显著提高团队自自负心——如果所有的测试通过了,则意味着所有的特性顺利运行,每个人都责任得很卓著
6、单元测试提高了效率——你不再需要恼人的手工测试,而且代码变更后,你只需要开启单元测试并且检讨红÷绿栏即可。
7、还有很主要的一点是:单元测试能够作为DOCUMENTATION(无论是辅助的还是主要的)
所以我欲望每个人都起头应用单元测试,我甚至认为单元测试是现代软件开发人员的必备技能。当然,你做单元测试并不意味着你就是一个优异的开发人员,但如果你不用单元测试,那么你一定不是。