定義
是把所有的輸入數(shù)據(jù),即程序的輸入域劃分為若干部分(子集),然后從每一個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。是一種非常重要的、常用的黑盒測試用例設(shè)計方法。劃分等價類
等價類是指某一個輸入域的子集合。在該子集合中, 各個輸入數(shù)據(jù)對于揭露程序中的錯誤是等效的,并合理地假定:測試某等價類的代表值就等于對這一類其他值的測試。因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價類,在每一個等價類中取一個數(shù)據(jù)作為測試的輸入就可以用少量的代表性的測試數(shù)據(jù)取得較好的測試結(jié)果。等價類劃分有兩種不同的情況:有效等價類和無效等價類。
(1)有效等價類
是指對于程序的規(guī)格說明來說是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價類可檢驗程序是否實現(xiàn)了規(guī)格說明所規(guī)定的功能和性能。
(2)無效等價類
指對程序的規(guī)格說明是不合理的或者無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對于具體的問題,無效等價類至少有一個,也可能多個。
設(shè)計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗,這樣的測試才能確保軟件具有更高的可靠性。劃分等價類的標準
- 完備測試、避免冗余
- 劃分等價類重要的是:集合的劃分、劃分為互不相交的一組子集,而子集的并是整個集合
- 并是整個集合:備性
- 子集互不相交:保證一種形式的無冗余性
- 同一類中標識(選擇)一個測試用例,同一等價類中,往往處理相同,相同處理映射到“相同的執(zhí)行路徑”。
- 劃分等價類的方法
- 在輸入條件規(guī)定了
取值范圍或值的個數(shù)的情況下,則可以確立一個有效等價類和兩個無效等價類。如:輸入值是學生成績,范圍是0~100;
Paste_Image.png
2) 在輸入條件規(guī)定了輸入值的集合或者規(guī)定了必須如何的條件的情況下,可確立一個有效等價類和一個無效等價類;
3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。
4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。例:輸入條件說明學歷可為:專科、本科、碩士、博士四種之一,則分別取這四種的四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類。
5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則情況下,可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則);
6)在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應(yīng)在將該等價類進一步的劃分為更小的等價類。
- 設(shè)計測試用例
在確立了等價類之后, 可建立等價類表,列出所有劃分出的等價類輸入條件:有效等價類、無效等價類, 然后劃分出的等價類中按一下三個原則設(shè)計測試用例:
1)為每一個等價類規(guī)定一個唯一的編號;
2)設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復(fù)這一步,直到所有的有效等價類都被覆蓋為止;
3)設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止。
二、實戰(zhàn)演習
<b>1、三角形問題</b>
1、某程序規(guī)定:“輸入三個整數(shù)a、b、c分別作為三邊的邊長構(gòu)成三角形。通過程序判定所構(gòu)成的三角形的類型,當此三角形為一般三角形、等腰三角形、等邊三角形時,分別做計算。。?!庇玫葍r類劃分方法為該程序進行測試用例設(shè)計。(三角形問題的復(fù)雜之處在于輸入與輸出之間的關(guān)系比較復(fù)雜。)
