技術分享 | 黑盒測試方法論—等價類
更多技術文章分享和免費資料領取
本文節選自霍格沃茲測試學院內部教材
等價類劃分是一種重要的、常用的黑盒測試方法,不需要考慮程序的內部結構,只需要考慮程序的輸入規格。它將不能窮舉的測試過程進行合理分類,從而保證設計出來的測試用例具有完整性和代表性。
需要把用戶所有可能輸入的數據,劃分成若干份(若干個子集),然后從每一個子集當中選取少數具有代表性的數據作為測試用例,這種方法被稱為——等價類劃分法。
在有限的測試資源的情況下,用少量有代表性的數據得到比較好的測試效果。
等價類劃分
等價類劃分的基本思想就是先把可能的數據劃分為不同的類別,然后再從每一類里面挑選有代表性的數據進行測試。這樣挑選出來的數據,就可以代表這一類里面的全部數據。通過這種方式,測試用例的數量就可以減少。
等價類分類
從已經劃分出來的這些范圍當中,又可以分為兩種情況:
有效等價類:指符合《需求文檔》,輸入合理的數據集合。
無效等價類:指不符合《需求文檔》,輸入不合理的數據集合。
因為軟件不僅要能夠接收合理的數據,不合理的數據也需要做出正確響應,所以在設計測試用例時,兩種等價類都需要考慮,這樣的測試才能確保軟件具有更高的可靠性。
所有的有效等價類和無效等價類合起來,就是整個的測試數據范圍。
等價類劃分原則
通常按照以下規則進行劃分等價類:
如果規定輸入的取值范圍或個數時,則劃分一個有效等價類和兩個無效等價類。如:注冊用戶名的長度限制 6~18 個字符,6~18 個字符是有效等價類,小于 6 個字符和大于 18 個字符則是兩個無效等價類。
如果規定了輸入的集合或規則必須要遵循的條件,則劃分一個有效等價類,和一個無效等價類。如:注冊用戶名的格式要求必須以字母開頭時,以字母開頭是有效等價類,非字母開頭是無效等價類。
如果輸入條件是一個布爾值,則劃分為一個有效等價類和一個無效等價類。如:在注冊用戶時需要遵循協議或條款是否接受時,“接受”是有效等價類,“不接受”則是無效等價類。
如果輸入條件時一組數據(枚舉值),并且程序對每一個輸入的值做不同的處理,則化為若干個有效等價類和一個無效等價類。如:網游中充值 VIP 等級(三個等級),對每個 VIP 的等級優惠不同,VIP1、VIP2、VIP3 不同等級是三個有效等價類,不是 VIP 用戶則是無效等價類。
如果輸入條件規定了必須要遵循的某些規則下,則劃分為一個有效等價類和若干個無效等價類(無效等價類需要從不同的角度去違反規則)。如:密碼要求首位必須是大寫字母的,首字母大寫時有效等價類,首位小寫字母的、首位為數字的或者首位為特殊字符的則是無效等價類。
不是所有的等價類都有無效等價類。如:性別的選擇只有男或女兩種。
等價類設計步驟
先劃分等價類:找出所有可能的分類。
確定有效等價類:需求中的條件。
確定無效等價類:與條件相反的情況,再找到特殊情況(中文、英文、符號、空格、空)。
從各個分類中挑選測試用例數據。
劃分等價類要點:文本框要求輸入的長度、輸入的類型、組成規則、是否為空、是否重復---區分大小寫、是否去除空格。
實例
等價類設計步驟的前3個步驟,可以通過等價類表這種方法來輔助進行分析。
例:計算 1---100 的整數之和(包括 1 和 100)
以上面的計算器來舉例,這次是計算1--100中的其中兩個整數之和。
在確立了等價類之后,可按下表的形式列出所有劃分出的等價類表。
等價類表可以幫助分析如何劃分等價類,是一個輔助工具,初學者可以這樣寫,等熟練之后可以直接快速的編寫出測試用例。
設計用例的時候需要注意,應該按照以下原則來覆蓋不同的等價類:
設計新的測試數據,盡可能多覆蓋尚未被覆蓋的有效等價類,重復這一步驟,直到將所有的有效等價類都被覆蓋完為止。
設計新的測試數據,只覆蓋一個無效等價類,重復這一步,直到將所有的無效等價類都被覆蓋完為止。
設計測試用例
先編寫一個很簡單的用例,只包含最關鍵的一些信息,比如用例編號,屬于的等價類,兩個輸入框中的測試數據,還有預期結果。
因為這里想要得到最終結果的話涉及到了多個元素,這里就需要輸入兩個值。
在這種情況下,要采用控制變量法,如果是要覆蓋無效等價類的話,設計測試用例的時候,當前元素覆蓋無效等價類,用例中涉及到的其他元素要保持有效。
每次一個單點無效輸入讓其他點有效輸入排除更多不確定和干擾。
等價類總結
等價類劃分法非常簡單,也很容易理解,是在用例設計中使用最廣泛的一種測試用例設計方法。
它的優點是考慮了單個輸入域,所有可能的取值情況,避免了在設計用例時盲目或隨機選取輸入測試不完整或不穩定的數據。
最大的缺點就是產生的測試用例比較多,而且在設計時,可能會產生一些無效的測試用例,也沒有對特殊點進行考慮,所以在設計時需要結合其他的設計方法進行補充。
獲取更多內容:
https://qrcode.testing-studio.com/f?from=hwyun&url=https://ceshiren.com/t/topic/16586
Bash 指令 Linux Shell TCP/IP 自動化測試
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。