條件覆蓋,語句覆蓋,分支覆蓋有啥區別
舉個例子吧
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。
不論那種覆蓋方法,都不能保證程序的正確性。
軟件測試中的路徑覆蓋和語句覆蓋的區別,最好舉個例子說明,謝謝啦
語句覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,被測程序的每一個語句至少執行一次,其覆蓋標準無法發現判定中邏輯運算的錯誤;路徑覆蓋是每條可能執行到的路徑至少執行一次;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=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。
語句覆蓋和路徑覆蓋的區別
區別:
1、度量對象
語句覆蓋:程序中每一可執行語句
路徑覆蓋:程序中每條路徑
2、覆蓋程度
語句覆蓋:語句覆蓋常常被人指責為“最弱的覆蓋”,它只管覆蓋代碼中的執行語句,卻不考慮各種分支的組合等等。假如只要求達到語句覆蓋,那么換來的確實測試效果不明顯,很難更多地發現代碼中的問題。
路徑覆蓋:在白盒測試法中,覆蓋程度最高的就是路徑覆蓋,因為其覆蓋程序中所有可能的路徑。
擴展資料
邏輯覆蓋是通過對程序邏輯結構的遍歷實現程序的覆蓋。它是一系列測試過程的總稱,這組測試過程逐漸進行越來越完整的通路測試。
根據覆蓋目標的不同和覆蓋源程序語句的詳盡程度,邏輯覆蓋又可分為:語句覆蓋,判定覆蓋,條件覆蓋,條件/判定覆蓋,條件組合覆蓋,路徑覆蓋。
語句覆蓋(StatementCoverage) 又稱行覆蓋(LineCoverage),段覆蓋(SegmentCoverage),基本塊覆蓋(BasicBlockCoverage),這是最常用也是最常見的一種覆蓋方式,就是度量被測代碼中每個可執行語句是否被執行到了。
這里說的是“可執行語句”,因此就不會包括像C++的頭文件聲明,代碼注釋,空行,等等。非常好理解,只統計能夠執行的代碼被執行了多少行。需要注意的是,單獨一行的花括號{} 也常常被統計進去。
參考資料:搜狗百科 - 語句覆蓋
語句覆蓋和路徑覆蓋的區別
首先,路徑覆蓋很明確,就是從流程的一端到達另一端所有可以經過的路徑。
語句覆蓋,簡單理解上和上面差不多,就是覆蓋所有需要執行的語句,但是,還是有區別的,比如在流程中從A到Z的過程成,需要經過從M->N,并且M-N只有一條路徑可以到達,但是其中卻可能有很多語句;如果是路徑覆蓋式,這時只有一個 測試點,而如果是語句覆蓋就可以有多個測試點。
其實用圖表大更清楚。
語句覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,被測程序的每一個語句至少執行一次,其覆蓋標準無法發現判定中邏輯運算的錯誤;判定覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,每個判定的所有可能結果至少出現一次,但若程序中的判定是有幾個條件聯合構成時,它未必能發現每個條件的錯誤;條件覆蓋是指選擇足夠的測試用例,使得運行這些測試用例時,判定中每個條件的所有可能結果至少出現一次,但未必能覆蓋全部分支;判定/條件覆蓋是使判定中每個條件的所有可能結果至少出現一次,并且每個判定本身的所有可能結果也至少出現一次;條件組合覆蓋是使每個判定中條件結果的所有可能組合至少出現一次,因此判定本身的所有可能解說也至少出現一次,同時也是每個條件的所有可能結果至少出現一次;路徑覆蓋是每條可能執行到的路徑至少執行一次;其中語句覆蓋是一種最弱的覆蓋,判定覆蓋和條件覆蓋比語句覆蓋強,滿足判定/條件覆蓋標準的測試用例一定也滿足判定覆蓋、條件覆蓋和語句覆蓋,條件組合覆蓋是除路徑覆蓋外最強的,路徑覆蓋也是一種比較強的覆蓋,但未必考慮判定條件結果的組合,并不能代替條件覆蓋和條件組合覆蓋。