更新時間:2022-08-26 來源:黑馬程序員 瀏覽量:
等價類劃分法是一種常用的黑盒測試方法,它主張從大量數(shù)據(jù)中選擇一部分數(shù)據(jù)用于測試,即盡可能使用最少的測試用例覆蓋最多的數(shù)據(jù),以發(fā)現(xiàn)更多的軟件缺陷。
一個程序可以有多個輸入,等價類劃分就是將這些數(shù)據(jù)按照輸入需求進行分類,將它們劃分為若干個子集,這些子集即為等價類,在每個等價類中選擇有代表性的數(shù)據(jù)設(shè)計測試用例。這種方法類似于學(xué)生站隊,男生站左邊,女生站右邊,老師站中間,這樣就把師生群體劃分成了3個等價類。
使用等價類劃分法測試程序需要經(jīng)過劃分等價類和設(shè)計測試用例2個步驟,具體介紹如下。
1.劃分等價類
等價類可分為有效等價類與無效等價類,其含義如下所示。
(1)有效等價類:有效等價類就是有效值的集合,它們是符合程序要求、合理且有意義的輸入數(shù)據(jù)。
(2)無效等價類:無效等價類就是無效值的集合,它們是不符合程序要求、不合理或無意義的輸入數(shù)據(jù)。
了解了有效等價類與無效等價類,那么如何劃分等價類呢?一般在劃分等價類時需要遵守以下原則。
(1)如果程序要求輸入值是一個有限區(qū)間的值,則可以將輸入數(shù)據(jù)劃分為1個有效等價類和2個無效等價類,有效等價類為指定的取值區(qū)間,兩個無效等價類分別為有限區(qū)間兩邊的值。例如,某程序要求輸入值x的范圍為[1,100],則有效等價類為1≤x≤100,無效等價類為x<1和x>100。
(2)如果程序要求輸入的值是一個“必須成立”的情況,則可以將輸入數(shù)據(jù)劃分為1個有效等價類和1個無效等價類。例如,某程序要求密碼正確,則正確的密碼為有效等價類,錯誤的密碼為無效等價類。
(3)如果程序要求輸入數(shù)據(jù)是一組可能的值,或者要求輸入值必須符合某個條件,則可以將輸入數(shù)據(jù)劃分為1個有效等價類和1個無效等價類。例如,某程序要求輸入數(shù)據(jù)必須是以數(shù)字開頭的字符串,則以數(shù)字開頭的字符串是有效等價類,不是以數(shù)字開頭的字符串是無效等價類。
(4)如果在某一個等價類中,每個輸入數(shù)據(jù)在程序中的處理方式都不相同,則應(yīng)將該等價類劃分成更小的等價類,并建立等價表。
同一個等價類中的數(shù)據(jù)發(fā)現(xiàn)程序缺陷的能力是相同的,如果使用等價類中的一個數(shù)據(jù)不能捕獲缺陷,那么使用等價類中的其他數(shù)據(jù)也不能捕獲缺陷;同樣,如果等價類中的一個數(shù)據(jù)能夠捕獲缺陷,那么該等價類中的其他數(shù)據(jù)也能捕獲缺陷,即等價類中的所有輸入數(shù)據(jù)都是等效的。
正確地劃分等價類可以極大地降低測試用例的數(shù)量,測試會更準確有效。劃分等價類時不但要考慮有效等價類,還要考慮無效等價類,對于等價類要認真分析、審查劃分,過于粗略的劃分可能會漏掉軟件缺陷,如果錯誤地將兩個不同的等價類當作一個等價類,則會遺漏測試情況。例如,某程序要求輸入取值范圍在1~100之間的整數(shù),若一個測試用例輸入了數(shù)據(jù)0.6,則在測試中很可能只檢測出非整數(shù)錯誤,而檢測不出取值范圍的錯誤。
2.設(shè)計測試用例
確立了等價類之后,需要建立等價類表列出所有劃分出的等價類,用以設(shè)計測試用例?;诘葍r類劃分法的測試用例設(shè)計步驟如下所示。
(1)確定測試對象,保證非測試對象的正確性。
(2)為每個等價類規(guī)定一個唯一編號。
(3)設(shè)計有效等價類的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,直到測試用例覆蓋了所有的有效等價類。
(4)設(shè)計無效等價類的測試用例,使其覆蓋所有的無效等價類。