官术网_书友最值得收藏!

1.4.4 等價(jià)類劃分

我們已經(jīng)知道,徹底的軟件測試是不現(xiàn)實(shí)的,也是不經(jīng)濟(jì)的,我們只能通過有限的測試來盡可能多地找出潛在的產(chǎn)品缺陷,要做到這一點(diǎn),測試的等價(jià)類劃分是一種可行的思路。

我們可以把所有可能的輸入進(jìn)行歸類劃分,每個(gè)類別中的輸入雖然不一樣,但是從軟件功能的角度看,它們在那個(gè)類別中是“等價(jià)”的,是沒有差別的。我們在每個(gè)類別中挑選一個(gè)代表進(jìn)行這個(gè)類別的測試,如果測試通過,我們可以基本確認(rèn)這一類輸入都可以通過測試,沒有必要在這個(gè)類別中選取更多候選輸入進(jìn)行測試。這個(gè)思路就是測試用例的等價(jià)類劃分(Equivalence partitioning)[2]。

假如,某個(gè)軟件程序的功能是根據(jù)用戶輸入的考試分?jǐn)?shù)來劃分成績等級(jí)的,如表1-2所示。

表1-2 考試分?jǐn)?shù)與成績等級(jí)

在不考慮“半分”的情況下,考試分?jǐn)?shù)有0~100這101個(gè)可能的值,大于100的值是無效值,小于0的值也是無效值。

101、102、200、5000……這些都是無效的考試分?jǐn)?shù)值,我們無法窮舉所有無效的值,但是可以把它們歸于一類,稱為“大于滿分的無效值”。在這個(gè)類別中,我們可以挑選其中一個(gè)值,比如101進(jìn)行測試。如果程序可以正確識(shí)別出這是無效值,我們可以認(rèn)為程序可以正確識(shí)別和處理所有“大于滿分的無效值”。

同理,我們可以用–1或者–888來代表“小于零分的無效值”進(jìn)行測試。

對于成績等級(jí)中的A等級(jí),它包含的分?jǐn)?shù)區(qū)間是一個(gè)有限閉區(qū)間,只有90~100這11個(gè)值。即使可以窮舉所有的可能輸入進(jìn)行測試,我們?nèi)匀粦?yīng)該用等價(jià)類劃分類進(jìn)行測試,從這11個(gè)數(shù)中挑選一個(gè)值(比如95),如果這個(gè)值可以被程序正確識(shí)別為A等級(jí),我們就可以認(rèn)為程序可以正確識(shí)別和處理所有的“A等級(jí)的分?jǐn)?shù)”。

通過等價(jià)類劃分,我們可以把測試用例的數(shù)量大幅減少到一個(gè)可控的范圍,用較少的測試用例覆蓋盡可能多的情況,極大地節(jié)省了成本。

主站蜘蛛池模板: 七台河市| 万州区| 万全县| 常州市| 永康市| 塔河县| 读书| 崇仁县| 全椒县| 固阳县| 麻栗坡县| 博罗县| 阜城县| 兰州市| 永善县| 丹阳市| 中宁县| 昭通市| 略阳县| 通州市| 淮安市| 盘锦市| 平顺县| 从江县| 师宗县| 泸定县| 岐山县| 镇雄县| 英吉沙县| 长丰县| 东乡族自治县| 沅陵县| 贡嘎县| 高雄市| 邢台县| 东山县| 化州市| 海南省| 临泽县| 乌什县| 丹阳市|