写到这里,使得我回想起当年做网络系统。当时的局域网络都是采用环状网络,还没有现在的交换机来组星形网络。环状网络的传输网络采用同轴细缆线,网络中的所有节点都在一条主干线上,网络的两端都会加上一个电阻来形成一个环(如下图)。
环状网络的最大的缺点就是当任意一个节点有固障时,整个网络都不能连通。维护这种网络是非常麻烦的。通常采用得比较多的方法就是“切香肠”法。把最后一个电阻取下来,接到第二台电脑的网络节点的末端,检查两条线是否能连通。连通后再把电阻取下来到第三台电脑的网络节点的末端,连上第三台电脑。这样来依次检查整个网络的线路。
后来就发展了星形网络,也是现在局域网普遍采用的。有一台交换机,每一台电脑连接到交换机,任意一个节点网络故障不会影响到其它节点,检查起来就非常方便了。没有单元测试的代码就像是环状网络,而有测试的代码就像星形网络。
其次,有可能我们第一次编写的代码是没有问题的,但是到后来需求改变而修改了其中某些类的代码,把它发布到了应用服务器去测试,所要修改的内容已经测试通过了。但是因为某些类的代码的修改导致了其它类不能正常的工作。这种bug往往隐藏得非常深,因为只要不触动它,它就不会出现。可能会程序发布到生产环境之后才会被业务人员发现。如果每个类都有测试代码,我们在打包之前运行所有测试代码,就可以很容易的发现因为代码修改带来的连带性错误。
最后,在离bug产生越近,修正bug就越容易;在bug产生越远,修正bug的代价就越昂贵。假设我们去集成一个星期(甚至更长时间)前编写的代码,当发现问题时,我们已经忘掉了很多重要的实现细节,所以修改变得困难重重。
编写单元测试,并不会加重程序员的负担,反而提高了程序员对程序的信心,大大的减少了重复打包、发布、纠错误的时间。这些花费的时间远远要比编写单元测试花费的时候多几个数量级。编写单元测试,可以让你更容易和更放心地去修改代码,增加功能从而加快了项目的开发进度。
为什么我们总是要主观的去认为编写单元测试会延缓项目进度呢?与其痛苦的挣扎,还不如去尝试一下好的实践。
文章来源于领测软件测试网 https://www.ltesting.net/