摘要: 英文原文名叫《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却认为时至今日该文依然值得一阅。
测试先行是一个需要不断实践的编程技巧,而且需要大量的实践,它不是一朝一夕就可以练就的。有专家说过,一个好习惯的养成可能需要21天的时间,但是要将这个习惯转换成自身的特质则需要更久的时间——六个月?因此,如果你感觉自己好像在退步,不要太在意,我们还是应该坚持下去。我们应该继续将我们大脑中对于应用程序的各种设想转化成测试代码,这样我们才能渐渐适应并喜欢上这种做法。
像学习其他的新东西一样,实践出真知,而且更多的实践只会帮助我们更好地掌握所学习的知识。我们可以从一个很简单的很小的点出发,比如我们在开始阶段只是每天写一小段自动化测试,但是我们应该尽量保证这段代码是(当前自己能写出的)最好的。当然,如果我们写得更多一点,好处也会多一点。这样做下去,第二天早上起来,我们就多了一段可以运行通过的测试代码。一个星期过去之后,我们就有了至少五段可以运行通过的测试代码。在我们每次改变源代码的时候运行一下测试,即使是你认为你的改动不可能破坏任何地方的时候也要坚持这样做。这可以帮助你养成经常运行测试的习惯,而这可以逐步帮你建立起对于代码的信心。(坚持这个实践,)用不了多久时间,你就拥有一个包含了众多测试代码的套件了,而这个时候你可能已经养成了在修改代码之后立即运行所有测试并以此获得对于自己代码的信心。这个时候(表示测试通过的)绿色条将是对于你的进步的最好的犒赏。
总结
测试先行并没有想象中的那么难而且也不会耗费你很多很多的时间,我们需要逐渐学会利用计算机来帮助我们自动检查我们的代码而不是像以前那样依靠自己的双手和双眼。在写新代码之前,我们先要明确我们对于应用程序或者模块有什么样的期望并将这些期望转化成测试代码的形式,然后利用这些测试来帮助我们检验我们的代码是否满足了我们的设计思路。我们应该将测试先行的实践加入到开发的过程中,并让它成为一个开发中的一个重要的部分;另外我们还应该保证项目组中的其他成员在任何时候可以很容易的访问和运行我们自己写下的测试代码,而不要自己一个人孤独的实践这种方法。
我希望我所讲到的这些技术可以帮助你找到更多的bug(或者更好地保证代码以及软件的质量,译者注)。我肯定它们能帮助你提高设计和测试的技能;你很快会发现我们确实是有时间(而且也应该)测试自己的代码的。