2018-09-10代碼覆蓋率

在做單元測(cè)試時(shí),代碼覆蓋率常常被拿來(lái)作為衡量測(cè)試好壞的指標(biāo)。需要注意的是,覆蓋率只能用來(lái)做參考,不能當(dāng)做測(cè)試的法寶。

代碼覆蓋率 = 代碼的覆蓋程度,一種度量方式。

以下面的代碼來(lái)分析

1、????if (A>0 && B==0)

2、????x = X / A;

3、????(A==2 || X>1)

4、????x = X+1;

從覆蓋源程序語(yǔ)句的詳細(xì)程度的不同,有以下一些覆蓋標(biāo)準(zhǔn)。

1、語(yǔ)句覆蓋:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語(yǔ)句至少執(zhí)行一次。

測(cè)試用例:A=2,B=0,X=4,執(zhí)行了所有語(yǔ)句,但不能保證程序無(wú)錯(cuò),比如 A==2 || A>1 寫(xiě)成 A==2 || X<1.。

2、判定覆蓋:又叫分支覆蓋,不僅每個(gè)語(yǔ)句必須至少執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次,即每個(gè)判定的每個(gè)分支都至少執(zhí)行一次。

測(cè)試用例:A=3,B=0,X=3;A=2,B=1,X=1

判定覆蓋比語(yǔ)句覆蓋強(qiáng),但是對(duì)程序邏輯的覆蓋程度仍然不高,比如上面的測(cè)試用例就只覆蓋了程序全部路徑的一半。

3、條件覆蓋:不僅每個(gè)語(yǔ)句至少執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。

上面的代碼共兩個(gè)判定表達(dá)式,每個(gè)表達(dá)式中有兩個(gè)條件,在第一行代碼處,有幾種情況:A>1,A≤=1,B=0,B≠0;在第3行代碼處,有幾種情況:A=2,A≠2,X>1,X≤1。

測(cè)試用例:A=2,B=0,X=4(滿(mǎn)足A>1,B=0,A=2,X>1的條件);A=1,B=1,X=1(滿(mǎn)足A≤1,B≠0,X≤1的條件)

條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗古卸ū磉_(dá)式中每個(gè)條件都取到了兩個(gè)不同的結(jié)果,判定覆蓋卻只關(guān)系整個(gè)判定表達(dá)式的值。

滿(mǎn)足條件覆蓋不一定滿(mǎn)足判定覆蓋,條件覆蓋也不一定包含判定覆蓋。如:A=2,B=0,X=1;A=1,B=1,X=2,滿(mǎn)足條件覆蓋,但不滿(mǎn)足判定覆蓋。

4、判定/條件覆蓋:使判定表達(dá)式中的每個(gè)條件都取得各種可能的值,且每個(gè)判斷表達(dá)式也取到各種可能值。

上面的代碼共兩個(gè)判定表達(dá)式,每個(gè)表達(dá)式中有兩個(gè)條件,在第一行代碼處,有幾種情況:A>1,A≤1,B=0,B≠0;在第3行代碼處,有幾種情況:A=2,A≠2,X>1,X≤1。

測(cè)試用例:A=2,B=0,X=4(滿(mǎn)足A>1,A=2,,B=0,X>1,不滿(mǎn)足A=2 || X>1,滿(mǎn)足A>1&&B==0);A=1,B=1,X=1(滿(mǎn)足A=2。A≠2,B≠1,X≤1,滿(mǎn)足A=2 || X>1,不滿(mǎn)足A>1&&B==0)。與條件覆蓋用例相同,說(shuō)明判定/條件覆蓋并一定不比條件覆蓋更強(qiáng)。

5、條件組合覆蓋:每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。

上面的例子有8種組合:1、A>1,B=0;2、A>1,B≠0;3、A≤1,B=0;4、A≤1,B≠;5、A=2,X>1;6、A=2,X≤1;7、A≠2,X>1;8、A≠2,X≤1。

測(cè)試用例:A=2,B=0,X=4,針對(duì)1和5;A=2,B=1,X=1,針對(duì)2和6;A=1,B=0,X=2,針對(duì)3和7;A=1,B=1,X=1,針對(duì)4和8。

條件組合覆蓋是上面幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的,滿(mǎn)足條件組合覆蓋的一定滿(mǎn)足判定覆蓋、條件覆蓋、判定/條件覆蓋。但是滿(mǎn)足條件組合覆蓋的不一定使程序中的每條路徑都執(zhí)行到。

6、路徑覆蓋:使程序的每條可能路徑都至少執(zhí)行一次。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容