**
語句覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,被測程式的每乙個語句至少執行一次,其覆蓋標準無法發現判定中邏輯運算的錯 誤;判定覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,每個判定的所有可能結果至少出現一次,但若程式中的判定是有幾個條件聯合構成時,它未必能 發現每個條件的錯誤; 條件覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,判定中每個條件的所有可能結果至少出現一次,但未必能覆蓋全部分支;判定/條件覆蓋是使判定中 每個條件的所有可能結果至少出現一次,並且每個判定本身的所有可能結果也至少出現一次;條件組合覆蓋是使每個判定中條件結果的所有可能組合至少出現一次, 因此判定本身的所有可能解說也至少出現一次,同時也是每個條件的所有可能結果至少出現一次;路徑覆蓋是每條可能執行到的路徑至少執行一次;其中語句覆蓋是 一種最弱的覆蓋,判定覆蓋和條件覆蓋比語句覆蓋強,滿足判定/條件覆蓋標準的測試用例一定也滿足判定覆蓋、條件覆蓋和語句覆蓋,條件組合覆蓋是除路徑覆蓋 外最強的,路徑覆蓋也是一種比較強的覆蓋,但未必考慮判定條件結果的組合,並不能代替條件覆蓋和條件組合覆蓋。
舉個例子吧
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=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。
不論那種覆蓋方法,都不能保證程式的正確性。
一般測試書中講白盒測試的邏輯覆蓋部分時都會對這幾種覆蓋作比較,而且都給出了例子。
條件覆蓋,路徑覆蓋,語句覆蓋,分支覆蓋
語句覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,被測程式的每乙個語句至少執行一次,其覆蓋標準無法發現判定中邏輯運算的錯誤 判定覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,每個判定的所有可能結果至少出現一次,但若程式中的判定是有幾個條件聯合構成時,它未必能發現每個條件的錯誤 條件覆蓋是...
條件覆蓋,路徑覆蓋,語句覆蓋,分支覆蓋解釋
語句覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,被測程式的每乙個語句至少執行一次,其覆蓋標準無法發現判定中邏輯運算的錯誤 判定覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,每個判定的所有可能結果至少出現一次,但若程式中的判定是有幾個條件聯合構成時,它未必能發現每個條件的錯誤 條件覆蓋是...
白盒測試技術 語句覆蓋 判定覆蓋 條件覆蓋
結合乙個例子說 畫出相應的程式流程圖,更方便分析 首先我們要明確一點 測試用例要盡可能少。1 語句覆蓋 被測程式中每個語句至少執行一次 路徑 s a b c d e a 2,b 0,預計輸出結果x 2 2 判定覆蓋 不僅每個語句必須至少執行一次,而且每個判定的每種可能的結果都應該至少執行一次 至少兩...