等價類劃分

黑盒測試方法之一

等價類劃分,指的是一種典型的、重要的黑盒測試方法。其就是解決如何選擇適當的數據子集來代表整個數據集的問題,通過降低測試的數目去實現“合理的”覆蓋,以此來發現更多的軟體缺陷,統計好數據後由此對軟體進行改進升級。

概述


等價類劃分法將程序所有可能的輸入數據(有效的和無效的)劃分成若干個等價類。然後從每個部分中選取具有代表性的數據當做測試用例進行合理的分類,測試用例由有效等價類和無效等價類的代表組成,從而保證測試用例具有完整性和代表性。利用這一方法設計測試用例可以不考慮程序的內部結構,以需求規格說明書為依據,選擇適當的典型子集,認真分析和推敲說明書的各項需求,特別是功能需求,儘可能多地發現錯誤。等價類劃分法是一種系統性的確定要輸入的測試條件的方法。
由於等價類是在需求規格說明書的基礎上進行劃分的,並且等價類劃分不僅可以用來確定測試用例中的數據的輸入輸出的精確取值範圍,也可以用來準備中間值、狀態和與時間相關的數據以及介面參數等,所以等價類可以用在系統測試、集成測試和組件測試中,在有明確的條件和限制的情況下,利用等價類劃分技術可以設計出完備的測試用例。這種方法可以減少設計一些不必要的測試用例,因為這種測試用例一般使用相同的等價類數據,從而使測試對象得到同樣的反映行為。對於等價類我們從以下幾個方面討論它的劃分方法。等價類劃分的方法分為兩個主要的步驟,劃分等價類型和設計測試用例。

有效等價類


有效等價類指對於程序規格說明來說,是合理的、有意義的輸入數據構成的集合。利用有效等價類可以檢驗程序是否實現了規格說明預先規定的功能和性能。有效等價類可以是一個,也可以是多個,根據系統的輸入域劃分若干部分,然後從每個部分中選取少數有代表性數據當做數據測試的測試用例,等價類是輸入域的集合。以下是對有效等價類數據集的一些例子。
終端用戶輸入的命令
與最終用戶交互的系統提示
接受相關的用戶文件的名稱
提供初始化值和邊界等
提供格式化輸出數據的命令
在圖形模式(比如滑鼠點擊時)提供的數據
失敗時顯示的回應消息

無效等價類


無效等價類和有效等價類相反,無效等價類是指對於軟體規格說明而言,沒有意義的、不合理的輸入數據集合。利用無效等價類,可以找出程序異常說明情況,檢查程序的功能和性能的實現是否有不符合規格說明要求的地方。以下是無效等價類數據集的一些例子。
在一個不正確的地方提供適當的值。
驗證邊界值
驗證外部邊界的值
用戶輸入的命令
最終用戶與系統交互的提示
驗證與邊界和外部邊界值的數值數據

劃分方法


按區間劃分。
按數值劃分。
按數值集合劃分。
按限制條件或規劃劃分。
按處理方式劃分。

劃分原則


在輸入條件規定的取值範圍或值的個數的情況下,可以確定一個有效等價類和兩個無效等價類。
在規定了輸入數據的一組值中(假定有n個值),並且程序要對每個輸入值分別處理的情況下,可以確定n個有效等價類和一個無效等價類。
在規定輸入數據必須遵守的規則的情況下,可以確定一個有效等價類和若干個無效等價類。
在輸入條件規定了輸入值的集合或規定了“必須如何”的條件下,可以確定一個有效等價類和一個無效等價類。
在確定已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應將該等價類進一步地劃分為更小的等價類。

等價類表


等價類表的建立如表3-1所示。
表3-1是等價類表的基礎,可依據表3-1確定測試用例。測試用例可按下列步驟來確定:
表3-1 等價類表
1)在分析需求規格說明的基礎上劃分等價類,列出等價類表,為每一個等價類規定一個唯一的編號。
2)將程序可能的輸入數據分成若干個子集,從每個子集中選取一個有代表性的數據作為測試用例。等價類是某個輸入域的子集,在該子集中的每個輸入數據的作用都是等效的。
3)設計新的測試用例,使其儘可能多地覆蓋未覆蓋的有效等價類,按照這一步驟重複進行,直到所有的有效等價類都被覆蓋為止。
4)設計新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,按照這一步驟重複進行,直到所有的無效等價類都被覆蓋為止。
等價類表與測試用例的關係
等價類表與測試用例的關係如表3-2所示。
表3-2等價類表與測試用例的關係表