軟件測試覆蓋包括分支覆蓋,語句覆蓋以及條件覆蓋,這是白盒測試中一個很基本的測試概念,但是最近和幾位搞了多年測試的朋友談及此事,大家都搞不大清楚。下面我通過一個例子來深入探討一下這個問題:
我們首先來看一下這幾些測試覆蓋的定義:
定義一、語句覆蓋:它要求被測程序的每一可執行語句在測試中盡可能都檢驗過;
定義二、分支覆蓋:要求程序中所有判定的分支盡可能得到檢驗;
定義三、條件覆蓋:當判定式中含有多個條件時,要求每個條件的取值均得到檢驗;
從這些定義我們可以很容易理解到語句覆蓋是把程序中的所有的語句都給覆蓋到;分支覆蓋是把程序中每個分支都給覆蓋到;條件覆蓋是把判斷條件中所有的條件都給覆蓋到。
下面我們通過一個簡單的例子來描述一下
0:
1: if ((a<150)||(b<200)){
2: for (i=a;i<100;i++)
3: {
4: println(“A”);}
5: else{
6: println (“B”);
7: }
分支覆蓋:
1)在0處設置a=120,b 任意
將執行1,2,5
2)在0處設置a=200,b=400
將執行1,5,6,7
這里所有的分支都走到,也就是說要達到分支覆蓋率100%,要設計2組測試用例
a b
120 任意
200 400
語句覆蓋:
1)在0處設置a=40,b 任意
將執行1,2,3,4,5
2)在0處設置a=200,b=400
將執行1,5,6,7
這里所有的語句都走到了,也就是說要達到語句覆蓋率100%,要設計2組測試用例
a b
40 任意
200 400
而在分支覆蓋中語句3,4沒有走到
條件覆蓋:
由于第一個條件是if ((a<150)||(b<200)) 所以需要設計測試用例
a b 備注
40 50 全都滿足
160 150 a 不滿足,b滿足
0 250 a滿足,b不滿足
150 250 a,b都不滿足
條件覆蓋只要求把所有的條件都覆蓋就可以了。
這樣一來我們就把這幾個概念搞得很清楚了。
順便我在這里想說一句心里話,我們現在的不管是書籍還是網站上的文章都太傾向于理論了,而到實際運用上來就說不清楚了,我希望能夠有更多又講理論又講實踐的文章和書籍能夠出現。
原文轉自:http://www.anti-gravitydesign.com