條件覆蓋,路徑覆蓋,語句覆蓋,分支覆蓋


轉自http://hi.baidu.com/%D2%D7%B1%D8%BA%C6/blog/item/f016729f4fbeaebbc9eaf4df.html

語句覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,被測程序的每一個語句至少執行一次,其覆蓋標准無法發現判定中邏輯運算的錯誤;判定覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,每個判定的所有可能結果至少出現一次,但若程序中的判定是有幾個條件聯合構成時,它未必能發現每個條件的錯誤; 條件覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,判定中每個條件的所有可能結果至少出現一次,但未必能覆蓋全部分支;判定/條件覆蓋是使判定中每個條件的所有可能結果至少出現一次,並且每個判定本身的所有可能結果也至少出現一次;條件組合覆蓋是使每個判定中條件結果的所有可能組合至少出現一次,因此判定本身的所有可能解說也至少出現一次,同時也是每個條件的所有可能結果至少出現一次;路徑覆蓋是每條可能執行到的路徑至少執行一次;其中語句覆蓋是一種最弱的覆蓋,判定覆蓋和條件覆蓋比語句覆蓋強,滿足判定/條件覆蓋標准的測試用例一定也滿足判定覆蓋、條件覆蓋和語句覆蓋,條件組合覆蓋是除路徑覆蓋外最強的,路徑覆蓋也是一種比較強的覆蓋,但未必考慮判定條件結果的組合,並不能代替條件覆蓋和條件組合覆蓋。 

舉個例子吧 
if A and B then Action1 
if C or D then Action2 

語句覆蓋最弱,只需要讓程序中的語句都執行一遍即可 。上例中只需設計測試用例使得A=true B=true C=true 即可。 

分支覆蓋又稱判定覆蓋:使得程序中每個判斷的取真分支和取假分支至少經歷一次,即判斷的真假均曾被滿足。上例需要設計測試用例使其分別滿足下列條件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。 

條件覆蓋:要使得每個判斷中的每個條件的可能取值至少滿足一次。上例中第一個判斷應考慮到A=true,A=false,B=true,B=false第二個判斷應考慮到C=true,C=false,D=true,D=false,所以上例中可以設計測試用例滿足下列條件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。 

路徑覆蓋:要求覆蓋程序中所有可能的路徑。所以可以設計測試用例滿足下列條件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。 

不論那種覆蓋方法,都不能保證程序的正確性。 
一般測試書中講白盒測試的邏輯覆蓋部分時都會對這幾種覆蓋作比較,而且都給出了例子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM