等價分類法
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
等價分類法是指一種典型的、重要的黑盒測試方法,它將程式所有可能的輸入數據劃分為若幹個等價類。然後從每個部分中選取具有代表性的數據當做測試用例。測試用例由有效等價類和無效等價類的代表數據組成,從而保證測試用例具有完整性和代表性。
換句話說,如果從某一等價類中任意選出一個測試用例未能發現程式的錯誤,就可以合理地認為在該類中的其他測試用例也不會發現程式的錯誤。這樣,就把漫無邊際的隨機測試變成有針對性的等價類測試,有可能用少量有代表性的例子來代替大量內容相似的測試,藉以實現測試的經濟性。
一個程式結構的所有輸入中,總可以找到一些有代表性的數據。這些有代表性的測試數據應包括對程式有效的輸入,以及極端的、正常的和特殊的數據元素。
如果能把程式輸入數據的可能值劃分成若幹“等價類”,在每一類中選定一組有代表性的數據,等價於其他數據,使這組數據能發現的錯誤,該類中的其他數據也可以發現;該組數據發現不了的錯誤,該類中其他數據也發現不了(除非該類例子中的某些數據也屬於其他類)。這種測試用例設計方法就稱為等價分類法。
用等價分類法設計測試用例可分兩步進行:劃分等價類和選定測試用例。
1、劃分等價類
劃分等價類的基本方法是:從程式的功能說明中找出各個輸入條件,然後為每個輸入條件劃分等價類。
等價類分為兩種:有效等價類和無效等價類。有效等價類是指屬於程式的合理輸入範圍的那些數據,無效等價類是指非法的輸入數據。等價類的劃分取決於程式的功能要求和定義域,也取決於測試人員對問題的理解力和創造力,帶有很大的試探性。下麵幾條可以作為劃分等價類的參考準則:
(1)如果某個輸入條件規定了值的範圍,即可為它確定一個有效等價類和兩個無效等價類;
(2)如果一個輸入條件規定了輸入的一組可能值,而且認為程式是用不同的方式處理每一種值的,則可為每一種值確定一個有效等價類,同時可以為它劃分一個無效等價類;
(3)如果一個輸入條件說明瞭一個“必須”的情況,則可為它確定一個有效等價類和一個無效等價類;
(4)如果某一等價類別中的元素有不同的處理方式,就應該把這個等價類劃分成更小的等價類。
劃分等價類在很大程度上是試探性的,下麵幾點可供參考:
(1)如果某個輸入條件說明瞭輸入值的範圍 (如“數據值”是從 1到 999 ),則可劃分一個合理等價類(大於等於 1而小於等於 999的數)和兩個不合理等價類(小於 1的數,以及大於999的數)。
(2)如果某個輸入條件說明瞭輸入數據的個數(如每個學生可以選修 1至 3門課程),則可劃分一個合理等價類(選修 1—3門課程)和兩個不合理等價類(沒選修課程,以及超過3門課程)。
(3)如果一個輸入條件說明瞭一個“必須成立”的情況(如標識符的第一個字元必須是字母),則可劃分一個合理等價類(第一字元是字母),和一個不合理等價類(第一字元不是字母)。
(4)如果某個輸入條件說明瞭輸入數據的一組可能的值,而且認為程式是用不同的方式處理每一種值的(如職稱的輸入值可以是助教、講師、副教授和教授 4種),則可為每一種值劃分一個合理等價類(如助教、講師、副教授和教授 4種),並劃分一個不合理等價類(上述 4種職稱之外的任意值)。
(5)如果認為程式將按不同的方式來處理某個等價類中的各種測試用例,則應將這個等價類再分成幾個更小的等價類。如上面第 4)點就是將一個合理等價類又分成助教、講師等 4個等價類。
2、選定測試用例
(1)為每個等價類編號。
(2)設計一個新的測試用例,使它能包括儘可能多的尚未被包括的合理等價類;重覆做這一步,直至這些測試用例已包括所有的合理等價類。
(3)設計一個新的測試用例,使它包括一個(而且僅僅一個)尚未被包括的不合理等價類,重覆做這一步,直至測試用例已包括所有的不合理等價類。
必須註意的是:這一步應使每個例子僅包括一個不合理等價類。這樣做的原因是;程式中的某些錯誤檢測往往會抑制其他的錯誤檢測,例如某個程式的功能說明中指出,輸入數據是書的“類型”(它可以是“精裝”、“平裝”和“線裝)和書的“數量”(其允許值是 1~999),如果某個測試用例中,書的“類型”是“活頁”,書的“數量”是0,他包括了兩個不合理的條件(“類型”和“數量”都不合理),程式在發現“類型”不合理之後,可能不會再去檢查“數量”是否合理,因此這一部分程式實際上並沒有測試到。
1、劃分等價類不僅要考慮代表“有效”輸入值的有效等價類,還須考慮代表“無效”輸入值得無效等價類;
2、每一個無效等價類至少要用一個測試用例,不然就可能漏掉某一類錯誤,但允許若幹有效等價類合用同一個測試用例,以便進一步減少測試的次數。
sf