目前在功能測試中。常用的黑盒測試方法有等價類劃分法、邊界值劃分法、錯誤推測法、剛果圖法和組合分析法。下面將一一給予簡單介紹,關于其測試用例毆計,請參考第14章。
1等價類劃分法
數據測試是功能測試的主要內容,或者說功能測試是主要的手段之一就是借助數據的輸入/輸出來判斷功能能否正常運行。在進行數據輸入測試時,如果需要證明數據輸入不會引起功能上的錯誤、或者其輸出結果在各種輸入條件下都是正確的,就需要將可輸入數據域內的值完全嘗試一遍(即窮舉法),這實際是不現實的。假如一個程序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
表6_2等價類劃分法分析
下面再舉一個例子來說明等價類劃分法的具體意義。例如,有一報表處理系統,要求用戶輸入處理報表的日期。假設日期限制在2000年1月至2020年12月,即系統只能對該段時期內的報表進行處理。如果用戶輸入的日期不在這個范圍內,則顯示錯誤信息。并且此系統規定日期由年月的6位數字組成,前4位代表年,后2位代表月,則檢查日期時,可用表6_3進行等價類劃分和編號。
表6-3等價類劃分的~個實例
┏━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┓
┃ 輸入 ┃ 合理等價類 ┃ 不合理等價類 ┃
┣━━━━━━━╋━━━━━━━━━━╋━━━━━━━━━━━┫
┃ ┃ ┃ 2有非數字字符 ┃
┃ 報表目期 ┃ l 6位數字字符 ┃ 3少于6個數字字符 ┃
┃ ┃ ┃ 4多于6個數字字符 ┃
┣━━━━━━━╋━━━━━━━━━━╋━━━━━━━━━━━┫
┃ ┃ ┃ 6小于2000 ┃
┃ 年份范圍 ┃ 5在200(}~2020 ┃ ┃
┃ ┃ ┃ 7大于2020 ┃
┣━━━━━━━╋━━━━━━━━━━╋━━━━━━━━━━━┫
┃ ┃ ┃ 9等于0 ┃
┃ 月份范圍 ┃ 8在1~12 ┃ ┃
┃ ┃ ┃ 10大于12 ┃
┗━━━━━━━┻━━━━━━━━━━┻━━━━━━━━━━━┛
在進行功能測試時,只要對臺理等價類和不合理等價類測試進行測試,覆蓋1,5,8三個臺理等價類測試,只要用一個值201006即可;對不合理等價類的測試則要分別輸入7個非法數據,如200aOb、20102、1012012、198802、203011、200000、202013。合起來只要完成8個數據的輸入就司以了。如果不用等價類劃分法,其測試的輸入值是幾百、L干個,可見等價類劃分法提高了測試效率,等價類劃分法優點是基了:相對較少的測試案例,就能夠進行完整覆蓋,很大程度上減少了重復性;缺點是缺乏特殊案例的考慮。同時需要深入的系統知識,才能做到有效地處理。
2邊界值分析法
實踐證明,程序往往在輸入輸出的處理邊界情況下發生錯誤。邊界情況指輸入等價類
和輸出等價類邊界上的情況,檢查邊界情況的測試用例是比較高效的,-,J以蟄出更多的錯誤。如上面介紹的處理報表日期的例子,等價類劃分法就忽略了幾個邊界條件,如200001(邊界有效最小值)、202012(邊界有效最大值)以及邊界無效值199901、199912、202101、202112等,而程序往往會在這些地方出錯。這就是下面要討論的邊界值分析法的優點。邊界值分析法就是在某個變量范圍的邊界上,驗證獨立的輸入/輸出是否正確的測試方法。邊界值分析法取決于變量的范圍和范圍的類型,確認所有輸入的邊界條件或臨界值,然后選擇這些邊界條件/臨界值及其附近的值來進行相關功能的測試。邊界值分析法處理技巧有:
· 如果輸入條件規定了值的范圍,則取剛達到這個范圍的邊界值(如上述200001、
202012),以及剛剛超過這個范圍邊界的值(如上述199912、202101)a
· 如果輸八條件規定了值的個數,則用最大個數、最小個數、比最大個數多1個、比最小個數少1個的數等作為測試數據。
· 根據規格說明的每一個輸出條件,分別使用以上兩個規則。
原文轉自:http://www.anti-gravitydesign.com