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