Blues Brothers的歌曲“Everybody Need Somebody”中有这样几句话:请人们记住,无论你是谁,无论你靠什么生活,总有一些事情我们是一样的……”pbielicki在他的博客中认为,对于软件开发者而言,相同的一些事情应当包括“单元测试”。本文作者的某些观点虽然有些化,但确实介绍了单元测试的优越性,并借此来极力推荐单元测试给每个软件工程师/程序员/开发者。

不论是是不是敏捷开发的fans,也许你会说这种开发方法很傻、很不成熟,对软件开发没有任何帮助。也许你不会用也不喜欢Scrum,你会觉得XP很讨厌,你这么说没问题,因为这是个人口味的问题。但是忘掉敏捷吧,忘掉那些程序和编程方法??单元测试你的代码吧!

我刚回顾了另外一个很复杂的程序但是里面没有任何的单元测试,而且没有任何的说明文件。也许你读得懂代码也明白其意思,但我怎么知道它的功能是它应该具备的功能呢?我怎么知道开发他的人没有写出错误呢?

单元测试不仅可以作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。也许你会觉得这很麻烦,但虽然单元测试是由程序员自己来完成,终受益的也还是程序员自己。可以这样理解,程序员有责任编写功能代码,同时也有责任为自己的代码编写单元测试。

单元测试可以作为规格说明来工作,测试能够以规格说明为基础。代码能够针对它的规格说明,而不是针对自身进行测试。这样的测试不仅能够抓住编译器的Bug,同时也能找到更多的编码错误,甚至是一些规格说明中的错误,因为好的规格说明可以使测试的质量更高 。

在这里,我概要地说一下单元测试的好处:

1、单元测试记录软件系统内部和外部的结构;

2、单元测试帮助你和其他开发者迅速地看到是否“升级”的代码打乱了已有的代码;

3、单元测试是你的软件原理bug?所有的问题都会在编写测试时解决掉;

4、单元测试结合“code coverage”会让提升你软件的质量;

5、单元测试可以在开发过程中显著提高团队信心??如果所有的测试通过了,则意味着所有的特性顺利运行,每个人都工作得很出色

6、单元测试提高了效率??你不再需要恼人的手工测试,而且代码变动后,你只需要开启单元测试并且查看红/绿栏即可。

7、还有很重要的一点是:单元测试可以作为DOCUMENTATION(无论是辅助的还是主要的)

所以我希望每个人都开始使用单元测试,我甚至认为单元测试是现代软件开发人员的必备技能。当然,你做单元测试并不意味着你是一个的开发人员,但如果你不用单元测试,那么你一定不是。