技術(shù)分享 | 黑盒測(cè)試方法論—等價(jià)類
等價(jià)類劃分是一種重要的、常用的黑盒測(cè)試方法,不需要考慮程序的內(nèi)部結(jié)構(gòu),只需要考慮程序的輸入規(guī)格。它將不能窮舉的測(cè)試過(guò)程進(jìn)行合理分類,從而保證設(shè)計(jì)出來(lái)的測(cè)試用例具有完整性和代表性。
需要把用戶所有可能輸入的數(shù)據(jù),劃分成若干份(若干個(gè)子集),然后從每一個(gè)子集當(dāng)中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例,這種方法被稱為——等價(jià)類劃分法。
在有限的測(cè)試資源的情況下,用少量有代表性的數(shù)據(jù)得到比較好的測(cè)試效果。
等價(jià)類劃分
等價(jià)類劃分的基本思想就是先把可能的數(shù)據(jù)劃分為不同的類別,然后再?gòu)拿恳活惱锩嫣暨x有代表性的數(shù)據(jù)進(jìn)行測(cè)試。這樣挑選出來(lái)的數(shù)據(jù),就可以代表這一類里面的全部數(shù)據(jù)。通過(guò)這種方式,測(cè)試用例的數(shù)量就可以減少。
等價(jià)類分類
從已經(jīng)劃分出來(lái)的這些范圍當(dāng)中,又可以分為兩種情況:
有效等價(jià)類:指符合《需求文檔》,輸入合理的數(shù)據(jù)集合。
無(wú)效等價(jià)類:指不符合《需求文檔》,輸入不合理的數(shù)據(jù)集合。

因?yàn)檐浖粌H要能夠接收合理的數(shù)據(jù),不合理的數(shù)據(jù)也需要做出正確響應(yīng),所以在設(shè)計(jì)測(cè)試用例時(shí),兩種等價(jià)類都需要考慮,這樣的測(cè)試才能確保軟件具有更高的可靠性。
所有的有效等價(jià)類和無(wú)效等價(jià)類合起來(lái),就是整個(gè)的測(cè)試數(shù)據(jù)范圍。
等價(jià)類劃分原則
通常按照以下規(guī)則進(jìn)行劃分等價(jià)類:
1.如果規(guī)定輸入的取值范圍或個(gè)數(shù)時(shí),則劃分一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。如:注冊(cè)用戶名的長(zhǎng)度限制 6~18 個(gè)字符,6~18 個(gè)字符是有效等價(jià)類,小于 6 個(gè)字符和大于 18 個(gè)字符則是兩個(gè)無(wú)效等價(jià)類。
2.如果規(guī)定了輸入的集合或規(guī)則必須要遵循的條件,則劃分一個(gè)有效等價(jià)類,和一個(gè)無(wú)效等價(jià)類。如:注冊(cè)用戶名的格式要求必須以字母開(kāi)頭時(shí),以字母開(kāi)頭是有效等價(jià)類,非字母開(kāi)頭是無(wú)效等價(jià)類。
3.如果輸入條件是一個(gè)布爾值,則劃分為一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。如:在注冊(cè)用戶時(shí)需要遵循協(xié)議或條款是否接受時(shí),“接受”是有效等價(jià)類,“不接受”則是無(wú)效等價(jià)類。
4.如果輸入條件時(shí)一組數(shù)據(jù)(枚舉值),并且程序?qū)γ恳粋€(gè)輸入的值做不同的處理,則化為若干個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。如:網(wǎng)游中充值 VIP 等級(jí)(三個(gè)等級(jí)),對(duì)每個(gè) VIP 的等級(jí)優(yōu)惠不同,VIP1、VIP2、VIP3 不同等級(jí)是三個(gè)有效等價(jià)類,不是 VIP 用戶則是無(wú)效等價(jià)類。
5.如果輸入條件規(guī)定了必須要遵循的某些規(guī)則下,則劃分為一個(gè)有效等價(jià)類和若干個(gè)無(wú)效等價(jià)類(無(wú)效等價(jià)類需要從不同的角度去違反規(guī)則)。如:密碼要求首位必須是大寫(xiě)字母的,首字母大寫(xiě)時(shí)有效等價(jià)類,首位小寫(xiě)字母的、首位為數(shù)字的或者首位為特殊字符的則是無(wú)效等價(jià)類。
6.不是所有的等價(jià)類都有無(wú)效等價(jià)類。如:性別的選擇只有男或女兩種。
等價(jià)類設(shè)計(jì)步驟
7.先劃分等價(jià)類:找出所有可能的分類。
8.確定有效等價(jià)類:需求中的條件。
9.確定無(wú)效等價(jià)類:與條件相反的情況,再找到特殊情況(中文、英文、符號(hào)、空格、空)。
10.從各個(gè)分類中挑選測(cè)試用例數(shù)據(jù)。
劃分等價(jià)類要點(diǎn):文本框要求輸入的長(zhǎng)度、輸入的類型、組成規(guī)則、是否為空、是否重復(fù)—區(qū)分大小寫(xiě)、是否去除空格。
實(shí)例
等價(jià)類設(shè)計(jì)步驟的前3個(gè)步驟,可以通過(guò)等價(jià)類表這種方法來(lái)輔助進(jìn)行分析。
例:計(jì)算 1—100 的整數(shù)之和(包括 1 和 100)
以上面的計(jì)算器來(lái)舉例,這次是計(jì)算1–100中的其中兩個(gè)整數(shù)之和。
創(chuàng)建等價(jià)類表
在確立了等價(jià)類之后,可按下表的形式列出所有劃分出的等價(jià)類表。

等價(jià)類表可以幫助分析如何劃分等價(jià)類,是一個(gè)輔助工具,初學(xué)者可以這樣寫(xiě),等熟練之后可以直接快速的編寫(xiě)出測(cè)試用例。
設(shè)計(jì)用例的時(shí)候需要注意,應(yīng)該按照以下原則來(lái)覆蓋不同的等價(jià)類:
設(shè)計(jì)新的測(cè)試數(shù)據(jù),盡可能多覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟,直到將所有的有效等價(jià)類都被覆蓋完為止。
設(shè)計(jì)新的測(cè)試數(shù)據(jù),只覆蓋一個(gè)無(wú)效等價(jià)類,重復(fù)這一步,直到將所有的無(wú)效等價(jià)類都被覆蓋完為止。
設(shè)計(jì)測(cè)試用例
先編寫(xiě)一個(gè)很簡(jiǎn)單的用例,只包含最關(guān)鍵的一些信息,比如用例編號(hào),屬于的等價(jià)類,兩個(gè)輸入框中的測(cè)試數(shù)據(jù),還有預(yù)期結(jié)果。
因?yàn)檫@里想要得到最終結(jié)果的話涉及到了多個(gè)元素,這里就需要輸入兩個(gè)值。
在這種情況下,要采用控制變量法,如果是要覆蓋無(wú)效等價(jià)類的話,設(shè)計(jì)測(cè)試用例的時(shí)候,當(dāng)前元素覆蓋無(wú)效等價(jià)類,用例中涉及到的其他元素要保持有效。

每次一個(gè)單點(diǎn)無(wú)效輸入讓其他點(diǎn)有效輸入排除更多不確定和干擾。
等價(jià)類總結(jié)
等價(jià)類劃分法非常簡(jiǎn)單,也很容易理解,是在用例設(shè)計(jì)中使用最廣泛的一種測(cè)試用例設(shè)計(jì)方法。
它的優(yōu)點(diǎn)是考慮了單個(gè)輸入域,所有可能的取值情況,避免了在設(shè)計(jì)用例時(shí)盲目或隨機(jī)選取輸入測(cè)試不完整或不穩(wěn)定的數(shù)據(jù)。
最大的缺點(diǎn)就是產(chǎn)生的測(cè)試用例比較多,而且在設(shè)計(jì)時(shí),可能會(huì)產(chǎn)生一些無(wú)效的測(cè)試用例,也沒(méi)有對(duì)特殊點(diǎn)進(jìn)行考慮,所以在設(shè)計(jì)時(shí)需要結(jié)合其他的設(shè)計(jì)方法進(jìn)行補(bǔ)充。
關(guān)注我公眾號(hào)TestingStudio,霍格沃茲的干貨都很硬