钓鱼和软件测试

        读者不禁要问,钓鱼和软件测试有何联系呢?嘿嘿,联系可大了,不妨看看?

        钓鱼者利用鱼饵从水库和池塘中将鱼钓上来,钓的越多越有成就。软件测试者利用软件测试技术从软件中找到BUG,找到的BUG越多越好。还不仅如此......

        How do we test software at Microsoft》一书的作者,阿伦.培智,在第七章中写道:

我的叔叔弗兰克是一个很棒的渔夫,他一辈子都在蒙大拿州的河流里钓鱼。他总是十分熟悉什么样的钓竿、钓线和鱼饵一起使用能钓到鱼,是朋友们当中公认的钓鱼专家。然而,无论他对钓鱼多在行,如果和里屗鱼,他也只能空手而归。他明白有了好的装备和诱饵还不行,他还知道如何观察河流的深度和流向,利用这些信息来准确地预测鱼儿在哪里会出现。熟练的捕鱼技术和对渔区的分析策略,两者结合令他无往不胜。

        一些测试技术,比如边界值分析和结对测试,可以有效地帮助我们在尽量少增加风险的同时,减少测试用例的数目。然而问题是,缺陷并不是平均分布在代码里。在软件里,总有些组件比其它组件存在更多的缺陷。就象我叔叔用了很多不同的技术去预测鱼儿在哪里一样,软件测试的一个要的环节是预测哪个项目区域存在更多的缺陷,并有针对性地投入测试力量。

        我的父亲也是个钓鱼专家,这一点被村里人所公认,我对他的钓鱼技术佩服有加。在我很小的时候,一次父亲急急忙忙地回家,临时用一个大的铁钉弯成一个鱼勾,然后匆忙去池塘钓鱼,不一会儿就钓上一条大草鱼。事后,我问起父亲,为什么那么匆匆忙忙?他说他刚路过那个池塘,发现水面上有鱼吐出的小泡泡,就知道那里有鱼,这种鱼过一会儿可能就离开这里,现在不及时去钓,就钓不到了。我又问他,为什么不用以前用过的钩子,而要特制一个钩子呢,他解释道:那是大草鱼,平常用的钩子太小,只有用粗的大铁钉弯成的钩子才结实,才能钓上那条大鱼。我愈加佩服父亲对钓鱼的学问了。更让我惊叹得五体投地的是,他让我隔壁的姨父也赶紧去钓,说是那里还剩下一条。姨父将信将疑地去了,结果,果真也钓上一条大草鱼。这件事在当时轰动了整个村子。事后想想,无非归功于父亲对鱼习性的了解,并针对鱼的特点采用了特殊的工具。

        在这一点上,测试和钓鱼有类似之处。好的钓鱼者要对鱼的习性有所了解,根据鱼的特点决定用什么样的工具和方法,并根据一定的现象判定鱼的多少。测试者也要对软件的特点有充分的理解,并不是使用相同的测试工具就一定能找到相同数量的软件缺陷。

        和鱼一样,软件BUG也是结伴而行的。《Software testing》一书的作者Ron Patton在书中说:“bug follows bug”.就是这个道理。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章