知道为什么程序员都应当做单元测试?
Blues Brothers的歌曲“Everybody Need Somebody”中有这样几句话:请人们记住,无论你是谁,无论你靠什么生活,总有一些事情我们是一样的……”pbielicki在他的博客中认为,对于软件开发者而言,相同的一些事情就应当包括“单元测试”。本文作者的某些观点虽然有些绝对化,但确实介绍了单元测试的优越性,并借此来极力推荐单元测试给每个软件工程师/程序员/开发者。
不论是是不是敏捷开发的fans,也许你会说这种开发方法很傻、很不成熟,对软件开发没有任何帮助。也许你不会用也不喜欢Scrum,你会觉得XP很讨厌,你这么说没问题,因为这是个人口味的问题。但是忘掉敏捷吧,忘掉那些程序和编程方法——单元测试你的代码吧!
我刚回顾了另外一个很复杂的程序但是里面没有任何的单元测试,而且没有任何的说明文件。也许你读得懂代码也明白其意思,但我怎么知道它的功能就是它应该具备的功能呢?我怎么知道开发他的人没有写出错误呢?
单元测试不仅可以作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。也许你会觉得这很麻烦,但虽然单元测试是由程序员自己来完成,最终受益的也还是程序员自己。可以这样理解,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。
单元测试可以作为规格说明来工作,测试能够以规格说明为基础。代码就能够针对它的规格说明,而不是针对自身进行测试。这样的测试不仅能够抓住编译器的Bug,同时也能找到更多的编码错误,甚至是一些规格说明中的错误,因为好的规格说明可以使测试的质量更高。
在这里,我概要地说一下单元测试的好处:
1、单元测试记录软件系统内部和外部的结构;
2、单元测试帮助你和其他开发者迅速地看到是否“升级”的代码打乱了已有的代码;
3、单元测试是你的软件原理bug—所有的问题都会在编写测试时解决掉;
4、单元测试结合“code coverage”会让提升你软件的质量;
5、单元测试可以在开发过程中显著提高团队信心——如果所有的测试通过了,则意味着所有的特性顺利运行,每个人都工作得很出色
6、单元测试提高了效率——你不再需要恼人的手工测试,而且代码变动后,你只需要开启单元测试并且查看红/绿栏即可。
7、还有很重要的一点是:单元测试可以作为DOCUMENTATION(无论是辅助的还是主要的)
所以我希望每个人都开始使用单元测试,我甚至认为单元测试是现代软件开发人员的常用技能。当然,你做单元测试并不意味着你就是一个优秀的开发人员,但如果你不用单元测试,那么你一定不是。
希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。