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