軟件測試 | 黑盒測試方法—等價類劃分法
等價劃分法是一種不需要考慮程序的內部結構,只需要考慮程序輸入數據的黑盒測試方法,它將不能窮舉的測試過程進行合理分類,從而保證設計出來的測試用例具有完整性和代表性。
需要把用戶所有可能輸入的數據劃分成若干份(若干個子集),然后從每一個子集中選取少數并且具有代表性的數據作為測試用例的數據,這種方法被稱為等價類劃分法。
在有限的測試資源的情況下,用少量且有代表性的數據進行測試會得到比較好的測試效果。
1.等價類劃分
等價類劃分的基本思想是首先把可能用到的數據劃分為不同的類別,然后再從每一類別里面挑選有代表性的數據用以數據。這樣挑選出來的數據就可以代表這一類里面的全部數據。通過這種方式,可以減少測試用例的數量。
2.等價類分類
根據不同類別劃分出來的范圍中,又可以分為一下兩種情況。
(1)有效等價類:指符合范圍文檔描述,輸入合理的數據集合。
(2)無效等價類:指不符合需求文檔描述,輸入不合理的數據集合。
所以等價類可以等同于有效等價類和無效等價類的組合
用戶的軟件不僅要能夠接受合理的數據輸入,對輸入不合理的數據也需要做出正確的響應,因此在對系統(tǒng)設計用例時,兩種等價類都需要考慮,這樣的測試才能確保軟件具有更高的可靠性。
所有的有效等價類和無效等價類所用的數據合起來,就是整個的測試數據。
3.等價類劃分原則
通常按照以下原則劃分等價類。
(1)如果規(guī)定輸入的取值范圍或個數,則劃分一個有效等價類和兩個無效等價類。例如,注冊用戶名的長度限制為6~18個字符,6~18個字符是有效等價類,小于6個字符和大于18個字符則是兩個無效等價類。
(2)如果規(guī)定了輸入的集合或規(guī)則必須要遵循的條件,則劃分一個有效等價類和一個無效等價類。例如,注冊用戶名的格式要求必須以字母開頭,以字母開頭是有效等價類,非字母開頭是無效等價類。
(3)如果輸入條件是一個布爾值,則劃分為一個有效等價類和一個無效等價類。例如,在注冊用戶時需要遵循協議或條款是否接受時,“接受”是有效等價類,“不接受”則是無效等價類。
(4)如果輸入條件是一組數據(枚舉值),并且程序對每一個輸入的值做不同的處理,則劃分若干個有效等價類和一個無效等價類。例如,網游中充值VIP等級(3個等級),對每個VIP的等級優(yōu)惠不同,VIP1、VIP2、VIP3不同等級是3個有效等價類,不是VIP用戶則是無效等價類。
(5)如果輸入條件規(guī)定了必須要遵循某些規(guī)則,則劃分為一個有效等價類和若干個無效等價類(無效等價類需要從不同的角度去違反規(guī)則)。例如,密碼設置要求首位必須是大寫字母的首字母大寫是有效等價類。
(6)不是所有的等價類都是無效等價類。例如,性別的選擇只有男或女兩種。
4.等價類設計步驟
(1)先劃分等價類:找出所有可能的分類。
(2)確定有效等價類:需求文檔中提出的條件。
(3)確定無效等價類:與條件相反的情況,再找到特殊情況(中文、英文、符號、空格、空等)。
(4)從各個分類中挑選測試用例數據。
劃分等價類要點:文本框要求輸入數據的長度、類型、組成規(guī)則、是否為空、是否重復、區(qū)分大小寫、是否去除空格。
5.實例
等價類設計步驟的前3個步驟,可以通過等價類表這種方式來輔助進行分析。
例:還是以計算器為例,這一次的計算范圍是1~100中的兩個整數之和。
(1)創(chuàng)建等價類表
在確立了等價類之后,可按表1-2所示的內容列出所有劃分出的等價類。
輸入條件有效等價類無效等價類1~100的整數(包括1和100)[1,100]整數<1整數>100整數小數字母漢字特殊字符
等價類表可以幫助分析和劃分等價類,這是一個輔助工具,初學者可以借助這種方式快速地編寫測試用例。
設計測試用例的時候需要注意,應該按照以下原則來覆蓋不同的等價類。
1)設計新的測試數據,盡可能多覆蓋尚未被覆蓋的有效等價類,重復這一步驟,知道將所有的有效等價類都覆蓋完為止。
2)設計新的測試數據,只覆蓋一個無效等價類,重復這一步,直到將所有的無效等價類都覆蓋完為止。
(2)設計測試用例
我們先編寫一個很簡單的測試用例,只包含最關鍵的一些信息,如測試用例編號、所屬的等價類,兩個輸入框中的測試數據,還有預期結果。
因為在這個加法的例子中,想要得到最終計算結果需要在兩個輸入框中都輸入數據,所以這個已經涉及了多個元素,就需要輸入兩個值。
在涉及多個元素的情況下,要采用控制變量法,如果要覆蓋無效等價類,設計測試用例的時候,當前元素覆蓋無效等價類的同時測試用例中涉及的其他元素要保持有效,如表1-3所示。
用例編號所屬等價類輸入框1輸入框2預期結果1有效等價類3060902無效等價類-240給出錯誤提示3無效等價類40-2給出錯誤提示4無效等價類1102給出錯誤提示5無效等價類2100給出錯誤提示6無效等價類10.53給出錯誤提示7無效等價類110.5給出錯誤提示8無效等價類a5給出錯誤提示9無效等價類人20給出錯誤提示10無效等價類20人給出錯誤提示11無效等價類5a給出錯誤提示12無效等價類!5給出錯誤提示13無效等價類5!給出錯誤提示14無效等價類空格5給出錯誤提示15無效等價類5空格給出錯誤提示16無效等價類為空5給出錯誤提示17無效等價類5為空給出錯誤提示
表格中 每一條測試用例都遵循了控制變量法(只驗證一個輸入框中的無效等價類),這樣可以排除更多不確定因素和干擾因素。
(3)等價類總結
等價類劃分法非常簡單,也很容易理解,是在設計測試用例中使用最廣泛的一種方法。
它的優(yōu)點是考慮了單個輸入域、所有可能的取值情況,避免了在設計測試用例時盲目或隨機選取輸入測試不完整或不穩(wěn)定的數據。
最大的缺點是產生的測試用例比較多,而且在設計時,可能會產生一些無效的測試用例,也沒有對特殊點進行考慮,所以在設計測試用例時需要結合其他的方法進行完善。