釣魚和軟件測試

        讀者不禁要問,釣魚和軟件測試有何聯繫呢?嘿嘿,聯繫可大了,不妨看看?

        釣魚者利用魚餌從水庫和池塘中將魚釣上來,釣的越多越有成就。軟件測試者利用軟件測試技術從軟件中找到BUG,找到的BUG越多越好。還不僅如此......

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

我的叔叔弗蘭克是一個很棒的漁夫,他一輩子都在蒙大拿州的河流裏釣魚。他總是十分熟悉什麼樣的釣竿、釣線和魚餌一起使用能釣到魚,是朋友們當中公認的釣魚專家。然而,無論他對釣魚多在行,如果和裏屗魚,他也只能空手而歸。他明白有了好的裝備和誘餌還不行,他還知道如何觀察河流的深度和流向,利用這些信息來準確地預測魚兒在哪裏會出現。熟練的捕魚技術和對漁區的分析策略,兩者結合令他無往不勝。

        一些測試技術,比如邊界值分析和結對測試,可以有效地幫助我們在儘量少增加風險的同時,減少測試用例的數目。然而問題是,缺陷並不是平均分佈在代碼裏。在軟件裏,總有些組件比其它組件存在更多的缺陷。就象我叔叔用了很多不同的技術去預測魚兒在哪裏一樣,軟件測試的一個要的環節是預測哪個項目區域存在更多的缺陷,並有針對性地投入測試力量。

        我的父親也是個釣魚專家,這一點被村裏人所公認,我對他的釣魚技術佩服有加。在我很小的時候,一次父親急急忙忙地回家,臨時用一個大的鐵釘彎成一個魚勾,然後匆忙去池塘釣魚,不一會兒就釣上一條大草魚。事後,我問起父親,爲什麼那麼匆匆忙忙?他說他剛路過那個池塘,發現水面上有魚吐出的小泡泡,就知道那裏有魚,這種魚過一會兒可能就離開這裏,現在不及時去釣,就釣不到了。我又問他,爲什麼不用以前用過的鉤子,而要特製一個鉤子呢,他解釋道:那是大草魚,平常用的鉤子太小,只有用粗的大鐵釘彎成的鉤子才結實,才能釣上那條大魚。我愈加佩服父親對釣魚的學問了。更讓我驚歎得五體投地的是,他讓我隔壁的姨父也趕緊去釣,說是那裏還剩下一條。姨父將信將疑地去了,結果,果真也釣上一條大草魚。這件事在當時轟動了整個村子。事後想想,無非歸功於父親對魚習性的瞭解,並針對魚的特點採用了特殊的工具。

        在這一點上,測試和釣魚有類似之處。好的釣魚者要對魚的習性有所瞭解,根據魚的特點決定用什麼樣的工具和方法,並根據一定的現象判定魚的多少。測試者也要對軟件的特點有充分的理解,並不是使用相同的測試工具就一定能找到相同數量的軟件缺陷。

        和魚一樣,軟件BUG也是結伴而行的。《Software testing》一書的作者Ron Patton在書中說:“bug follows bug”.就是這個道理。

 

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