白盒测试中的六种覆盖方法
一、語句覆蓋
概念:語句覆蓋是一個(gè)比較弱的測試標(biāo)準(zhǔn),它的含義是:選擇足夠的測試用例,使得程序中每個(gè)語句至少都能被執(zhí)行一次
if ((A > 1)&&( B == 0))
{
X = X / A;
}
if ((A == 2) || ( X > 1))
{
X = X + 1;
}
測試用例:A=2,B=0,X=3
缺陷:如果代碼中第一個(gè)if條件中,“A>1&&B=0”錯(cuò)寫成“ A>1 || B=0”。該錯(cuò)誤語句覆蓋是測試不出問題
二、判定覆蓋
概念:程序中的每一個(gè)分支至少都通過一次
判定覆蓋只關(guān)心判定表達(dá)式的值(真/假)
if ((A > 1)&&( B == 0))
{
X = X / A;
}
if ((A == 2) || ( X > 1))
{
X = X + 1;
}
舉例:
(1)A=3, B=0, X=1
(2)A=2, B=1, X=3
缺陷:如果異常是必須兩個(gè)if里都為真的情況下才會(huì)出現(xiàn),那么判定覆蓋就沒有測試到該情況
三、條件覆蓋
定義:判定中的每個(gè)條件獲得各種可能的結(jié)果
if ((A > 1)&&( B == 0))
{
X = X / A;
}
if ((A == 2) || ( X > 1))
{
X = X + 1;
}
舉例:
(1)A=2, B=1, X=4
(2)A=1, B=0, X=1
缺陷:雖然4個(gè)條件的真假都出現(xiàn)了一次,滿足條件覆蓋100%。但其中X=X/A語句并未測試到
四、判定/條件覆蓋
定義:判定中每個(gè)條件取到各種可能的值,并使每個(gè)判定取到各種可能的結(jié)果
if ((A > 1)&&( B == 0))
{
X = X / A;
}
if ((A == 2) || ( X > 1))
{
X = X + 1;
}
舉例:
(1)A=2,B=0,X=4,
(2)A=1,B=1,X=1
缺陷:“判定/條件覆蓋”似乎是比較合理的,但事實(shí)并非如此,因?yàn)榇蠖鄶?shù)計(jì)算機(jī)不能用一條指令對多個(gè)條件作出判定,
而必須將源程序中對多個(gè)條件的判定分解成幾個(gè)簡單判定,所以較徹底的測試應(yīng)使每一個(gè)簡單判定都真正取到各種可能的結(jié)果
五、條件組合覆蓋
定義:每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次
if ((A > 1)&&( B == 0))
{
X = X / A;
}
if ((A == 2) || ( X > 1))
{
X = X + 1;
}
舉例:
(1)A>1, B=0
(2)A>1, B!=0
(3)A≤1, B=0
(4)A≤1, B≠0
(5)A=2, X>1
(6)A=2,X≤1
(7)A≠2, X>1
(8)A≠2, X≤1
缺陷:雖然8種組合都出現(xiàn)了,但最基本的第一個(gè)if為真,第二個(gè)if為假的情況并未出現(xiàn)
六、路徑覆蓋
定義:程序中每條路徑都需要覆蓋
缺陷:路徑覆蓋也是一種比較強(qiáng)的覆蓋,但未必考慮判定條件結(jié)果的組合,并不能代替條件覆蓋和條件組合覆蓋
總結(jié)
以上是生活随笔為你收集整理的白盒测试中的六种覆盖方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目总结——机房收费系统合作版
- 下一篇: 提交MTBF eservice以及log