译释Dozen ways to find bugs(5)——Build safety Nets
Posted on 2009-02-28 10:35 Aaron Wu 阅读(187) 评论(0) 编辑 收藏 举报 英文原文名叫《A Dozen Ways to Get the Testing Bug in the New Year》,是Aaron在java.net上发现的文章。原文地址http://today.java.net/pub/a/today/2004/01/22/DozenWays.html,原文是在2004年1月22日发表的,按常理说一片早已经过了时效期的文章是没有多大用处的,但是Aaron却认为时至今日该文依然值得一阅。
不过这些话拿到现实中来则不那么有用了,除非你很幸运的正好碰到了一个新的项目,否则遗产代码——已经完成的陈旧的代码——是难以避免的话题,所以我们不得不面对这个现实。如果这些代码还是没有经过测试的,额,那么这些代码无疑是一捆定时炸弹,随时可能被引爆。作为一个刚接触这些代码的人来讲——无论你是新手还是老手——我们都不会轻易去改动这些代码,因为对于代码的不熟悉,我们的改动可能会造成原有的代码结构或功能行为被破坏掉。这怎么办呢,一方面我们的代码是陈旧的有着严重的腐朽味道甚至是发出了臭味了——布满了bug,如果不对这些代码进行改动的话,我们无法消除这些怪味道,我们也无法开展我们的测试,如此这般我们就陷入了两难的境地。
在某些极端情况下,我们发现如果不对这些陈旧的代码进行改动,我们连半个测试都写不出来,这个时侯我们可以使用一些其他的方法来代替,比如我们可以运行相关联的功能测试用例。
重构可以帮助我们预防代码腐烂,而我们构建的安全网则可以帮助我们保证重构对于原有的代码的改动没有造成伤害。当然,有些幸运的家伙一开始就加入到了一个新的项目中,什么都是新的,代码是自己写的,而且我们在开发的过程中坚持着测试先行的实践,那么,我想告诉你,你已经在不知不觉间构建了一张安全网了。如果在这个过程中,我们尝试重构我们的代码,这张安全网的意义则是非常重要的(还是那个原因,它可以告诉你你刚才的重构是否伤害到了代码,并且这种一开始就构建的安全网因为覆盖面大的优势,还可以帮助检查重构对于其他部分的代码是否造成了伤害,而不仅仅是修改过的那一小部分,Aaron注)。
前面已经提醒过大家了,构建安全网并不是一件十分轻松的事情,但是由于安全网的重要性,我认为这样做还是很有必要的,而且它也值得我们这样做。