數據測試是功能測試的主要內容,或者說功能測試是主要的手段之一就是借助數據的輸入/輸出來判斷功能能否正常運行。在進行數據輸入測試時,如果需要證明數據輸入不會引起功能上的錯誤、或者其輸出結果在各種輸入條件下都是正確的,就需要將可輸入數據域內的值完全嘗試一遍(即窮舉法),這實際是不現實的。假如一個程序P有輸入量11和12及輸出量0,在字長為32位的計算機上運行。如果Il和12均取整數,則測試數據的最大司能數目為:2”×2”=2“。如果測試程序P,采用窮舉法力圖無遺漏地發現程序中的所有錯誤,且假定運行一組(11,12)數據需1毫秒, 天工作24小時,一年工作365天,則2“組測試數據需5億年。說明窮舉的黑盒測試通常是不能實現的,因此只能選取少量有代表性的輸入數據,以期用較小的代價暴露H{較多的錯誤。
為了解決這個問題,人們就設想是否叫以用一組有限的數據去代表近似無限的數
據,這就是等價類劃分法的基本思想。等價類劃分法選擇適當的數據子集來代表整個數據集,通過降低測試的數目實現“合理的”覆蓋,覆蓋了更多的可能數據,以發現更多的軟件缺陷。等價類劃分法基于對輸入或輸出情況的評估,然后劃分到兩個或更多子集來進行測試,即將所有可能的輸八數據(有效的或無效的)劃分成若干個等價類,從每個等價類中選擇一定的代表值進行測試。其中有一個假定:等價類·p的所有數據對于暴露程序中的錯誤是等效的,即如果用這個等價類中的代表值作為測試用例未發現程序錯誤,那么該類中其他
的測試用例也不會發現程序的錯誤。有時,在確定輸入數據的等價類時常要分析輸出數據的等價類,以便根據輸出數據的等價類導出對應的輸入數據等價類。這樣就將漫無邊際的隨機測試變為具有針對性的有效測試,極大地提高了測試效率。先舉一個抽象并能完全描述等價類劃分法的例子,假設函數需要3個參數(A、B、c),
每個參數的輸入域分別在以下的子集里(參見圖6—2):
A=Al uA2UA3: B=B1 UB2uB3: C=C1 UC2
C=C1 UC2
文章來源于領測軟件測試網 http://www.kjueaiud.com/