在編寫測試用例後,我們經常會發現一些用例實際上是重複的,這導致了大量的重複工作。那麼我們應該如何移除這些重複的用例呢?
尤其是使用等價類劃分和邊界值分析編寫用例時,很容易造成用例重複。
舉例
下面我們透過一個例子來具體分析一下。
首先選擇一個場景,後臺維護前臺賬號,主要有以下幾個欄位(欄位太多,這裡只列舉三個欄位進行分析)。
- 賬號:4~8位字母和數字組合
- 密碼:8~16位字母數字組合
- 姓名:字母、數字、特殊字元和漢字組合,長度4~20
下面我們對他們的等價類和邊界值進行分析。
賬號
有效等價類:6位數字和字母組合,5位純數字組合,7位純字母組合。
無效等價類:3位字元,9位字元,漢字,空。
邊界值:4位字元,8位字元。
密碼
有效等價類:9位數字和字母組合,10位純數字組合,11位純字母組合。
無效等價類:7位字元,17位字元,漢字,空。
邊界值:8位字元,16位字元。
姓名
有效等價類:字母、數字特殊字元和漢字組合,長度10;純字母,長度11;純數字,長度12;純特殊字元,長度13;純漢字,長度14。
無效等價類:長度3,長度21,空。
邊界值:長度4,長度10。
如果只通過等價類劃分來分析邊界值,可以統計出有多少用例——總共28個用例。
然而,在測試過程中,我們會發現有很多重複。比如我們先測試賬號輸入框,輸入6位純數字,然後另外兩個輸入框需要輸入有效的等價類。
事實上,在我們的一個用例中,賬號、密碼和名字都涵蓋了一個測試用例。在測試這個輸入框中的密碼時,這個用例是重複執行的,那麼如何避免這種情況呢?
首先將所有的輸入都列到一列,如下圖:
我們的用例組合的原則是一個用例可以包含多個有效的等價類,並且它們都必須是有效的等價類。
一個用例只能包含一個無效的等價類,這個用例中的有效等價類不能作為驗證條件。比如賬號中輸入了漢字,密碼和名稱輸入正確,此時提示賬號輸入錯誤,這個用例就通過了,這只是意味著無效等價類的這個條件通過了,而不是這個用例中另外兩個有效等價類。
因此,有效的等價類不能與無效的等價類一起驗證。
接下來我們在上邊的表格裡標註一下哪些等價類可以組合到一起,數字相同的表示可在一條用例裡覆蓋。
我們可以發現,用例1、2、3、4、5都可以在一條用例裡覆蓋多條有效等價類,用例6和7是比其他兩個輸入框多出來的有效等價類。
由於另外兩個輸入框的有效等價類已經被覆蓋,在執行這兩個用例時,可以任意從另外兩個輸入框中選擇有效等價類進行測試,用例8~18為無效等價類,只能單獨驗證。
這樣,只有18個用例,比原來的28個少了10個,這樣我們的用例就可以更加簡潔,避免用例的冗餘,同時保證用例的全覆蓋。
End