資源描述:
《[計(jì)算機(jī)]白盒測(cè)試法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、7.6白盒測(cè)試技術(shù)測(cè)試方案包括具體的測(cè)試目的,應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。通常又把測(cè)試數(shù)據(jù)和預(yù)期的輸出結(jié)果稱為測(cè)試用例。設(shè)計(jì)測(cè)試方案的基本目標(biāo):確定一組最可能發(fā)現(xiàn)某個(gè)錯(cuò)誤或某類錯(cuò)誤的測(cè)試數(shù)據(jù)。白盒測(cè)試法按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程序中的主要執(zhí)行通路是否都能按預(yù)定要求正確工作。本節(jié)講述在用白盒方法測(cè)試軟件時(shí)設(shè)計(jì)測(cè)試數(shù)據(jù)的典型技術(shù)。學(xué)習(xí)內(nèi)容邏輯覆蓋的概念邏輯覆蓋的分類語(yǔ)句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋點(diǎn)覆蓋邊覆蓋路徑覆蓋覆蓋法之間的關(guān)系教學(xué)目標(biāo)理論環(huán)節(jié)學(xué)習(xí)理解白盒測(cè)試方法的基本概念學(xué)習(xí)理解白盒
2、測(cè)試的覆蓋理論實(shí)踐環(huán)節(jié)通過(guò)案例運(yùn)用學(xué)習(xí)掌握覆蓋問(wèn)題的解決方法邏輯覆蓋的概念邏輯覆蓋,是以程序內(nèi)在邏輯結(jié)構(gòu)為基礎(chǔ)的測(cè)試,是對(duì)一系列測(cè)試過(guò)程的總稱,這組測(cè)試過(guò)程逐漸進(jìn)行越來(lái)越完整的通路測(cè)試。7.6.1邏輯覆蓋邏輯覆蓋法的分類根據(jù)覆蓋目標(biāo)的不同,邏輯覆蓋又可分為:語(yǔ)句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋組合覆蓋路徑覆蓋voidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=sqrt(k);}//語(yǔ)句塊1if((x==4)
3、
4、(y>5)){j=x*y
5、+10;}//語(yǔ)句塊2j=j%3;//語(yǔ)句塊3}程序舉例程序流程圖X>3&&z<10執(zhí)行語(yǔ)句塊1執(zhí)行語(yǔ)句塊2X==4
6、
7、y>5執(zhí)行語(yǔ)句塊3FFTTabdcef語(yǔ)句覆蓋語(yǔ)句覆蓋:選擇足夠多的測(cè)試用例,使得程序中的每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。語(yǔ)句覆蓋要實(shí)現(xiàn)DoWork函數(shù)的語(yǔ)句覆蓋,只需設(shè)計(jì)一個(gè)測(cè)試用例就可以覆蓋程序中的所有可執(zhí)行語(yǔ)句。測(cè)試用例輸入為:{x=4、y=5、z=5}程序執(zhí)行的路徑是:abdfX>3&&z<10執(zhí)行語(yǔ)句塊1執(zhí)行語(yǔ)句塊2X==4
8、
9、y>5執(zhí)行語(yǔ)句塊3FFTTabdcef
10、
11、結(jié)果如何呢?(X>3&
12、&z<10)∩(X==4
13、
14、y>5)語(yǔ)句覆蓋分析:語(yǔ)句覆蓋可以保證程序中的每個(gè)語(yǔ)句都得到執(zhí)行,但發(fā)現(xiàn)不了判定中邏輯運(yùn)算的錯(cuò)誤,即它并不是一種充分的檢驗(yàn)方法。例如在第一個(gè)判定((x>3)&&(z<10))中把“&&”錯(cuò)誤地寫成了“
15、
16、”,這時(shí)仍使用該測(cè)試用例,則程序仍會(huì)按照流程圖上的路徑abdf執(zhí)行??梢哉f(shuō)語(yǔ)句覆蓋是最弱的邏輯覆蓋準(zhǔn)則。判定覆蓋判定覆蓋:通過(guò)執(zhí)行足夠多的測(cè)試用例,使得程序中的每個(gè)判定至少都獲得一次“真”值和“假”值,也就是使程序中的每個(gè)取“真”分支和取“假”分支至少均經(jīng)歷一次,也稱為“分支覆蓋”。判定
17、覆蓋要實(shí)現(xiàn)DoWork函數(shù)的判定覆蓋,需要設(shè)計(jì)兩個(gè)測(cè)試用例。測(cè)試用例的輸入為:{x=4、y=5、z=5};{x=2、y=5、z=5}程序執(zhí)行的路徑分別是:abdf;acefX>3&&z<10執(zhí)行語(yǔ)句塊1執(zhí)行語(yǔ)句塊2X==4
18、
19、y>5執(zhí)行語(yǔ)句塊3FFTTabdcefy<5結(jié)果如何呢?判定覆蓋分析:上述兩個(gè)測(cè)試用例不僅滿足了判定覆蓋,同時(shí)還做到語(yǔ)句覆蓋。從這點(diǎn)看似乎判定覆蓋比語(yǔ)句覆蓋更強(qiáng)一些,但仍然無(wú)法確定判定內(nèi)部條件的錯(cuò)誤。例如把第二個(gè)判定中的條件y>5錯(cuò)誤寫為y<5,使用上述測(cè)試用例,照樣能按原路徑執(zhí)行而不影響結(jié)果
20、。因此,需要有更強(qiáng)的邏輯覆蓋準(zhǔn)則去檢驗(yàn)判定內(nèi)的條件。條件覆蓋條件覆蓋:設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每個(gè)判定包含的每個(gè)條件的可能取值(真/假)都至少滿足一次。條件覆蓋在實(shí)際程序代碼中,一個(gè)判定中通常都包含若干條件。條件覆蓋的目的是設(shè)計(jì)若干測(cè)試用例,在執(zhí)行被測(cè)程序后,要使每個(gè)判定中每個(gè)條件的可能值至少滿足一次。對(duì)DoWork函數(shù)的各個(gè)判定的各種條件取值加以標(biāo)記。對(duì)于第一個(gè)判定((x>3)&&(z<10)):條件x>3取真值記為T1,取假值記為-T1條件z<10取真值記為T2,取假值記為-T2對(duì)于第二個(gè)判定((x==
21、4)
22、
23、(y>5)):條件x==4取真值記為T3,取假值記為-T3條件y>5取真值記為T4,取假值記為-T4條件覆蓋(續(xù))根據(jù)條件覆蓋的基本思想,要使上述4個(gè)條件可能產(chǎn)生的8種情況至少滿足一次,設(shè)計(jì)測(cè)試用例如下:測(cè)試用例執(zhí)行路徑覆蓋條件覆蓋分支x=4、y=6、z=5abdfT1、T2、T3、T4bdx=2、y=5、z=15acef-T1、-T2、-T3、-T4ce分析:上面這組測(cè)試用例不但覆蓋了4個(gè)條件的全部8種情況,而且將兩個(gè)判定的4個(gè)分支b、c、d、e也同時(shí)覆蓋了,即同時(shí)達(dá)到了條件覆蓋和判定覆蓋。條件覆蓋(續(xù))
24、說(shuō)明:雖然前面的一組測(cè)試用例同時(shí)達(dá)到了條件覆蓋和判定覆蓋,但是,并不是說(shuō)滿足條件覆蓋就一定能滿足判定覆蓋。如果設(shè)計(jì)了下表中的這組測(cè)試用例,則雖然滿足了條件覆蓋,但只是覆蓋了程序中第一個(gè)判定的取假分支c和第二個(gè)判定的取真分支d,不滿足判定覆蓋的要求。測(cè)試用例執(zhí)行路徑覆蓋條件覆蓋分支x=2、y=6、z=5acdf-T1、T2、-T3、T4cdx=4、y=5、z=