【轉載】使用“猴子”測試工具

 

        對於“猴子”的有效性,我們有着兩種矛盾的觀點。Boris Beizer 在《黑盒測試》中表示測試“猴子”對於今天的“專業構建”的軟件而言不是很有用。他的分析結論說:使用好的測試方法會比“狂敲鍵盤”(也叫“拉克曼尼諾夫測試”)找到更多的bug。但是James Tierney,微軟的前測試主管,在一個內部的演講中透露:一些微軟的開發組在他們的項目中使用“猴子”測試工具找到了10%到20%的bug。
 
        那一種對“猴子”測試的評價是正確的呢?也許兩者都對。
 
        沒有一種通用的測試工具可以找到任何軟件中的所有bug。每一個工具都有自己的作用,某些工具在某些項目會更有用些,或者在項目週期中的某個特定環節會更有用些。“測試猴子”也不例外。聰明地使用他們,那麼你就會找到一條發現bug的有效而低廉的渠道。不注意地使用它們,或者完全不使用它們,那麼你很可能會發佈一個充滿bug的產品。在這篇文章中,我們將會看看“猴子”測試工具,仔細地分析和研究我經常使用的幾類“猴子”,並提供指引,讓你能做出明智的選擇。
 
(注:“拉克曼尼諾夫測試”是指像拉克曼尼諾夫在鋼琴演奏時瘋狂地按鍵盤一樣地測試。)
 
測試猴子的家族測試工具

        本文使用“猴子”這個術語來泛指任何形式的,不需要任何人工干預的,隨機進行的自動化測試。把這種類型的工具稱之爲“猴子”,主要來源於下面這個流行的格言的變種:

        6個猴子隨機地敲擊6臺打字機,持續100萬年的時間,就能重新創作出艾薩克·阿西莫夫的所有作品。

(注:薩克·艾西摩夫(isaac asimov)是近代科學幻想小說中的巨擘,也是舉世知名的科學普及作家,他花了29年的時間寫出了一系列史詩般的科幻小說,例如基地系列。)

        有些人覺得“猴子”這個名字更吸引人,但是有些人則更喜歡聽起來更富技術性的“隨機”測試。不管怎樣,關鍵的元素是:

        “猴子”不管人如何使用產品。它不知道,例如,怎樣構建一個Web頁面或者創建一個分期償還的計算表格。

        “猴子”能隨機地從一個大範圍的輸入中選擇某些輸入進行測試,對於某些應用程序可能創建所有可能的輸入。

        我們將考慮兩種類型的“猴子”:聰明猴子和笨猴子。聰明猴子擁有一定的知識,知道如何訪問被測試產品的用戶界面。它們在基本的功能層次上知道什麼是可以做的,更重要的是,它們知道當進行這些操作時應該會出現什麼情況。例如,他們可能知道選擇“文件”菜單的“新建”項來創建一個新的文檔,它們知道新建的文檔會在新的窗口展示出來,窗口可以通過類名和文本來定位。如果沒有出現新的窗口,或者窗口的標題或類名不對,“猴子”能識別出問題並報告一個BUG。

        聰明猴子通常從一個狀態表或者模型獲取到關於產品的知識。通過隨機地遍歷這個狀態模型,它們選擇對於當前狀態有效的選項,從一個狀態轉移到另外一個狀態,然後驗證到達了下一個期待的狀態。如果模型包括錯誤處理狀態的話,你還可以添加非法的輸入到“猴子”的指令表。

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章