1.什么是白盒測(cè)試
白盒測(cè)試也稱(chēng)結(jié)構(gòu)測(cè)試,透明盒測(cè)試。主要用于單元測(cè)試階段,代碼和邏輯的測(cè)試,重點(diǎn)復(fù)雜的測(cè)試,是一種測(cè)試用例設(shè)計(jì)方法,不同于黑盒測(cè)試,白盒測(cè)試是可以看到內(nèi)部代碼如何運(yùn)作的,可通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部是否符合規(guī)定正常運(yùn)行。
1.1 白盒測(cè)試優(yōu)缺點(diǎn)
優(yōu)點(diǎn):代碼覆蓋率高
缺點(diǎn):覆蓋所有代碼路徑難度大
業(yè)務(wù)功能可能覆蓋不全
測(cè)試開(kāi)銷(xiāo)大
2.白盒測(cè)試方法
2.1 (先)靜態(tài)
桌面檢查、代碼審查、代碼走查、代碼掃描工具
2.2 動(dòng)態(tài)
邏輯覆蓋法:通過(guò)對(duì)程序邏輯結(jié)構(gòu)的遍歷實(shí)現(xiàn)程序的覆蓋
下方都以這個(gè)案例為練習(xí)
首先:要畫(huà)出流程圖,比較好理解
2.2.1 語(yǔ)句覆蓋
語(yǔ)句覆蓋:設(shè)計(jì)測(cè)試用例,使得程序中每條語(yǔ)句至少被執(zhí)行一次
語(yǔ)句覆蓋率 = 被執(zhí)行過(guò)的語(yǔ)句數(shù)量/可執(zhí)行的語(yǔ)句總數(shù)
舉個(gè)案例:
這個(gè)案例語(yǔ)句覆蓋率是百分百的。
但是當(dāng)把判斷條件從if(x>0 && y>0)變成if(x>0 || y>0)時(shí),
會(huì)發(fā)現(xiàn)這個(gè)數(shù)據(jù)同樣適合邏輯覆蓋標(biāo)準(zhǔn),但顯然,這樣是不正確的。
2.2.2 判斷覆蓋
判斷覆蓋:也叫分支覆蓋,設(shè)計(jì)測(cè)試用例,使得程序中的每個(gè)判斷的”真“和”假“都至少被執(zhí)行一次
判斷覆蓋率 = 每個(gè)判定的真假值至少出現(xiàn)一次/判斷結(jié)果的總數(shù)
舉個(gè)案例:
將兩個(gè)判定 if(x>0 && y>0)和if(magic<0) 分別定義為P1、P2
這個(gè)案例判斷覆蓋率是百分百的。
但是當(dāng)把判斷條件從if(x>0 && y>0)變成if(x>0 || y>0)時(shí),
也會(huì)發(fā)現(xiàn)這個(gè)數(shù)據(jù)同樣適合邏輯覆蓋標(biāo)準(zhǔn),但顯然,這樣也是不正確的。
2.2.3 條件覆蓋
條件覆蓋:設(shè)計(jì)測(cè)試用例,使得判定中的每個(gè)條件至少有一次取真值,有一次取假值
條件覆蓋率 = 每個(gè)條件的真價(jià)值至少出現(xiàn)一次/條件結(jié)果的總數(shù)(條件結(jié)果 = 判斷數(shù) * 條件數(shù))
舉個(gè)案例:
將if(x>0 && y>0)和if(magic<0) 分別定義為P1、P2
將x>0、y>0、magic<0 分別定義為C1、C2、C3
這個(gè)案例條件覆蓋率是百分百的。
但是會(huì)發(fā)現(xiàn),P1都是F、F,P1為真是沒(méi)有被覆蓋到的
所以條件覆蓋不能保證判定覆蓋
2.2.4 判定條件覆蓋
判定條件覆蓋:設(shè)計(jì)測(cè)試用例,使得被測(cè)程序中的每個(gè)判斷本身的判定結(jié)果(真假)至少滿(mǎn)足一次,每個(gè)邏輯條件的可能值也至少被滿(mǎn)足一次。就是既滿(mǎn)足判斷覆蓋,也滿(mǎn)足條件覆蓋。
判斷條件覆蓋率 =每個(gè)判斷真假值和條件真假值至少出現(xiàn)一次/(判斷結(jié)果的總數(shù) 條件結(jié)果的總數(shù))
舉個(gè)案例:
將if(x>0 && y>0)和if(magic<0) 分別定義為P1、P2
將x>0、y>0、magic<0 分別定義為C1、C2、C3
這個(gè)案例判斷條件覆蓋率是百分百的。
但是當(dāng)把判斷條件從if(x>0 && y>0)變成if(x>0 || y>0)時(shí),
也會(huì)發(fā)現(xiàn)這個(gè)數(shù)據(jù)同樣適合邏輯覆蓋標(biāo)準(zhǔn),但顯然,這樣是不正確的。
2.2.5 條件組合覆蓋
條件組合覆蓋:設(shè)計(jì)測(cè)試用例,使得被測(cè)程序中的每個(gè)判定中條件結(jié)果的所有可能組合至少執(zhí)行一次
條件組合覆蓋率 = 條件組合至少出現(xiàn)一次的數(shù)量/條件組合的總數(shù)
舉個(gè)案例:
將if(x>0 && y>0)和if(magic<0) 分別定義為P1、P2
將x>0、y>0、magic<0 分別定義為C1、C2、C3
條件組合覆蓋能夠滿(mǎn)足語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋
但是條件組合覆蓋不能保證所有路徑被執(zhí)行。
2.2.6 路徑覆蓋
路徑覆蓋:設(shè)計(jì)測(cè)試用例,覆蓋程序中所有可能的路徑
路徑覆蓋率 = 至少被執(zhí)行過(guò)一次的路徑數(shù)/總的路徑數(shù)
舉個(gè)案例:
將if(x>0 && y>0)和if(magic<0) 分別定義為P1、P2
將x>0、y>0、magic<0 分別定義為C1、C2、C3
仔細(xì)看出C2為假是沒(méi)有被覆蓋的
路徑覆蓋可以對(duì)程序進(jìn)行徹底的測(cè)試,比前面五種覆蓋更廣。
但是滿(mǎn)足路徑覆蓋,并不一定能滿(mǎn)足條件覆蓋,也就不能滿(mǎn)足條件組合覆蓋
2.2.7 基本路徑測(cè)試法(最常使用)
基本路徑測(cè)試法:在程序控制流圖的基礎(chǔ)上,通過(guò)分析程序的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。