基于狀態模型的測試
在基于狀態模型的測試中,你把程序可見的行為模擬成一個狀態機,并驅動程序在各狀態之間轉變,檢測與預期模型的一致性。關于這種測試方法的深入討論在www.model-based-testing.org網站上。
一般而言,用自動測試把軟件行為比作模型,所以存在的失誤比較容易發現(易于評估)。
通常,基于模型的測試是可靠的、有激發性的、易于解決的?墒,因為有太多的狀態(El-Far 1995),基于模型的測試經常是被簡化的,它著眼于操作方式而不是狀態之間的轉變。有些抽象的操作方式是明顯的、可信的,而對一些相關者來說,其它的似乎是過于寬泛的或不固定的,從而簡化測試。另外,如果模型過于簡化,那么模型暴露出來的錯誤會難以解決(Houghtaling,2001)。
討論Harry Robinson(2001)在創建軟件狀態模型方面的經驗,他報告:在自動測試完成之前,在建模時就會產生很多缺陷。Elisabeth Hendrickson(2002)訓練測試人員把狀態模型當作探測測試工具來工作--她的模型不是自動測試產生的,其價值是指導測試人員進行分析。
El-Far,Thompson & Mottay(2001)和El-Far(2001)討論在構建一個優秀的基于模型的測試集合時需要考慮的事項。比如,權衡考慮其中的詳細程度(越詳細的模型找到的缺陷越多,但越難于閱讀和維護)。
更進一步的說明,請參考www.model-based-testing.com網站上的論文。
大批量的自動測試
大批量自動測試包括了大量的測試數據,把結果與一個或更多局部oracle數據庫進行比較。
最簡單的局部oracle數據庫進行反崩潰運轉,如果程序崩潰,那肯定存在BUG。詳盡描述及經驗報告請參見Nyman(1998,2002)。
如果停止規則是基于測試結果而不是覆蓋準則的,那么基于狀態模型的測試就是大批量的。關于隨機的基于狀態測試的概括性概念,請參見Whittaker(1997)。關于基于狀態模型的測試是以覆蓋規則結束的討論,請參見Al-Ghafees & Whittaker(2002)。
Jorgensen(2002)提供了大批量測試的另外一個例子。他的測試從一個有效文件的應用開始,然后他用各種方法在各種環境下毀掉它,把這個已經毀掉的文件供給應用程序。應用程序拒絕了大多數毀壞的文件并繼續毀掉了一部分。有時,有的應用程序在處理這些文件時會失去控制。緩沖超限或其它失誤允許測試人員來接管應用程序或運行應用程序的機器。如果測試人員能在獲取程序前修改數據流,那么任何讀取所有類型數據流的程序就都屬于這種類型的測試。
Kaner(2000)描述了其他幾個大批量自動測試方法的例子。一個常用的方法是:把隨機數據應用給要測試的應用程序和另外一個做參考的應用程序進行比較。另一個方法是:運行回歸測試,輸入一個任意長的隨機序列,測試程序能不能一個接一個的通過測試。內存泄露、堆棧毀壞、無用指針或其它無用的東西隨著時間不斷累積,最后在這個長序列中發生錯誤。然而另外一個方法是:用長序列動作和用戶探查(把測試作為程序的一部分,記錄警告和錯誤信息以響應發生的意外情形。)測試程序以暴露問題。
大批量測試是一個多變的組合。其本質是這類測試的結構是由人設計的,但每個測試用例的開發、執行、解析是有計算機進行的,它能夠為人們的復查標記出可疑錯誤。幾乎完全自動化使運行大量的測試成為可能。
單個測試通常是微弱的,但他們可以彌補大批量測試的不足。
因為這種測試不是手工的,所以一些測試暴露的問題不是特別可信或有價值的。一個熟練的測試人員通常把問題設想成在一個比較明顯的或重要的環境下出現的問題,然后用一個手工測試來證明它。
文章來源于領測軟件測試網 http://www.kjueaiud.com/