1.白盒測(cè)試
白盒測(cè)試,又稱結(jié)構(gòu)測(cè)試,主要用于單元測(cè)試階段。它的前提是可以把程序看成裝在一個(gè)透明的白箱子里,測(cè)試者完全知道程序的結(jié)構(gòu)和處理算法。這種方法按照程序內(nèi)部邏輯設(shè)計(jì)測(cè)試用例,檢測(cè)程序中的主要執(zhí)行通路是否都能按預(yù)定要求正常工作。
白盒測(cè)試根據(jù)軟件的內(nèi)部邏輯設(shè)計(jì)測(cè)試用例,常用的技術(shù)是邏輯覆蓋,主要的覆蓋標(biāo)準(zhǔn)有 6 種:語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合條件覆蓋和路徑覆蓋。
(1)語(yǔ)句覆蓋。語(yǔ)句覆蓋是指選擇足夠多的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),被測(cè)程序的每個(gè)語(yǔ)句至少執(zhí)行一次。 很顯然,語(yǔ)句覆蓋是一種很弱的覆蓋標(biāo)準(zhǔn)。
(2)判定覆蓋。判定覆蓋又稱分支覆蓋,它的含義是,不僅每個(gè)語(yǔ)句至少執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果(分支)都至少執(zhí)行一次。判定覆蓋比語(yǔ)句覆蓋強(qiáng),但對(duì)程序邏輯的覆蓋程度仍然不高。
(3)條件覆蓋。條件覆蓋的含義是,不僅每個(gè)語(yǔ)句至少執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取得各種可能的結(jié)果。條件覆蓋不一定包含判定覆蓋,判定覆蓋也不一定包含條件覆蓋。
(4)判定/條件覆蓋。同時(shí)滿足判定覆蓋和條件覆蓋的邏輯覆蓋稱為判定/條件覆蓋。
它的含義是,選取足夠的測(cè)試用例,使得判定表達(dá)式中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一
次,而且每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次。
(5)條件組合覆蓋。條件組合覆蓋的含義是,選取足夠的測(cè)試用例,使得每個(gè)判定表達(dá)式中條件結(jié)果的所有可能組合至少出現(xiàn)一次。
顯然,滿足條件組合覆蓋的測(cè)試用例,也一定滿足判定/條件覆蓋。因此,條件組合覆蓋是上述 5 種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的一種。然而,條件組合覆蓋還不能保證程序中所有可能的路徑都至少經(jīng)過(guò)一次。
(6)路徑覆蓋。路徑覆蓋的含義是,選取足夠的測(cè)試用例,使得程序的每條可能執(zhí)行到的路徑都至少經(jīng)過(guò)一次(如果程序中有環(huán)路,則要求每條環(huán)路路徑至少經(jīng)過(guò)一次)。
2.黑盒測(cè)試
黑盒測(cè)試,又稱功能測(cè)試,主要用于集成測(cè)試和確認(rèn)測(cè)試階段。它把軟件看作一個(gè)不透明的黑箱子白盒測(cè)試又稱邏輯,完全不考慮(或不了解)軟件的內(nèi)部結(jié)構(gòu)和處理算法,它只檢查軟件功能是否能按照軟件需求說(shuō)明書(shū)的要求正常使用,軟件是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)并產(chǎn)生正確的輸出信息,軟件運(yùn)行過(guò)程中能否保持外部信息(例如文件和數(shù)據(jù)庫(kù))的完整性等。
黑盒測(cè)試根據(jù)軟件需求說(shuō)明書(shū)所規(guī)定的功能來(lái)設(shè)計(jì)測(cè)試用例,它不考慮軟件的內(nèi)部結(jié)構(gòu)和處理算法。
常用的黑盒測(cè)試技術(shù)包括等價(jià)類劃分、邊值分析、錯(cuò)誤推測(cè)和因果圖等。
(1)等價(jià)類劃分
在設(shè)計(jì)測(cè)試用例時(shí),等價(jià)類劃分是用得最多的一種黑盒測(cè)試方法。
所謂等價(jià)類就是某個(gè)輸入域的集合,對(duì)于一個(gè)等價(jià)類中的輸入值來(lái)說(shuō),它們揭示程序中錯(cuò)誤
的作用是等效的。也就是說(shuō),如果等價(jià)類中的一個(gè)輸入數(shù)據(jù)能檢測(cè)出一個(gè)錯(cuò)誤,那么等價(jià)類
中的其他輸入數(shù)據(jù)也能檢測(cè)出同一個(gè)錯(cuò)誤;反之,如果等價(jià)類中的一個(gè)輸入數(shù)據(jù)不能檢測(cè)出
某個(gè)錯(cuò)誤,那么等價(jià)類中的其他輸入數(shù)據(jù)也不能檢測(cè)出這一錯(cuò)誤(除非這個(gè)等價(jià)類的某個(gè)子
集還屬于另一等價(jià)類)。
無(wú)效等價(jià)類是用來(lái)測(cè)試非正常的輸入數(shù)據(jù)的,因此每個(gè)無(wú)效等價(jià)類
都有可能查出軟件中的錯(cuò)誤白盒測(cè)試又稱邏輯,所以要為每個(gè)無(wú)效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例。
(2)邊值分析
經(jīng)驗(yàn)表明,軟件在處理邊界情況時(shí)最容易出錯(cuò)。設(shè)計(jì)一些測(cè)試用例,使軟件恰好運(yùn)行在邊界附近,暴露出軟件錯(cuò)誤的可能性會(huì)更大一些。
通常,每一個(gè)等價(jià)類的邊界,都應(yīng)該著重測(cè)試,選取的測(cè)試數(shù)據(jù)應(yīng)該恰好等于、稍小于或稍大于邊界值。
(3)錯(cuò)誤推測(cè)
錯(cuò)誤推測(cè)法主要依靠測(cè)試人員的經(jīng)驗(yàn)和直覺(jué),從各種可能的測(cè)試方案中選出一些最可能引起程序出錯(cuò)的方案。
(4)因果圖
因果圖法是根據(jù)輸入條件與輸出結(jié)果之間的因果關(guān)系來(lái)設(shè)計(jì)測(cè)試用例的,它首先檢查輸入條件的各種組合情況,并找出輸出結(jié)果對(duì)輸入條件的依賴關(guān)系,然后為每種輸出條件的組合設(shè)計(jì)測(cè)試用例。