符號說明:
^ 代表邏輯運算符 && 或者 ||
T 代表 True F 代表 False
A / B 代表條件表達式
六種邏輯覆蓋的強弱關系:
在外面很多的教程都認為這六種邏輯覆蓋從弱到強的排列順序是:
語句覆蓋->判定覆蓋->條件覆蓋->判定-條件覆蓋->條件組合覆蓋->路徑覆蓋
但經過上面的分析,它們之間的關系實際上可以用下圖表示
語句覆蓋
每條語句至少執行一次。
測試用例條件: A ^ B = T
判定覆蓋(分支覆蓋)
分支執行一致
測試用例條件:
A ^ B = T
A ^ B = F
條件覆蓋
每個條件取到各種可能的值
測試用例條件:
A=T A=F
B=T B=F
判定/條件覆蓋
判定覆蓋、條件覆蓋
測試用例條件:
A ^ B = T A ^ B = F
A=T A=F
B=T B=F
條件組合
每個判斷語句中條件結果的所有可能組合至少出現一次
測試用例條件:
A= T B= T
A= T B= F
A= F B= T
A= F B= F
路徑覆蓋
覆蓋程序中所有可能的執行路徑
優點:這種覆蓋方法可以對程序進行徹底的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。
缺點:於路徑覆蓋需要對所有可能的路徑進行測試(包括循環、條件組合、分支選擇等),那么需要設計大量、復雜的測試用例,使得工作量呈指數級增長。路徑覆蓋雖然是一種比較強的覆蓋,但未必考慮判斷語句中條件表達式結果的組合,並不能代替條件覆蓋和條件組合覆蓋。
實例:
https://blog.csdn.net/hanjing_1995/article/details/52444162
https://www.cnblogs.com/shuhaoz/p/4419193.html
(1)語句覆蓋
使程序中的每個可執行語句都能執行一次的測試用例
測試用例條件: A ^ B = T
(2)判定覆蓋(分支覆蓋)
對於判斷語句,在設計用例的時候,要設計判斷語句結果為True和False的兩種情況
測試用例條件:
A ^ B = T
A ^ B = F
(3)條件覆蓋
設計用例時針對判斷語句里面每個條件表達式true 和 false各取值一次,不考判斷語句的計算結果
測試用例條件:
A=T A=F
B=T B=F
(4)判定條件覆蓋(分支條件覆蓋)
設計測試用例時,使得判斷語句中每個條件表達式的所有可能結果至少出現一次,每個判斷語句本身所有可能結果也至少出現一次。
測試用例條件:
A ^ B = T A ^ B = F
A=T A=F
B=T B=F
(5)條件組合覆蓋
設計測試用例時,使得每個判斷語句中條件結果的所有可能組合至少出現一次
測試用例條件:
A= T B= T
A= T B= F
A= F B= T
A= F B= F
(6)路徑覆蓋
設計測試用例時,覆蓋程序中所有可能的執行路徑
優點:這種覆蓋方法可以對程序進行徹底的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。
缺點:於路徑覆蓋需要對所有可能的路徑進行測試(包括循環、條件組合、分支選擇等),那么需要設計大量、復雜的測試用例,使得工作量呈指數級增長。路徑覆蓋雖然是一種比較強的覆蓋,但未必考慮判斷語句中條件表達式結果的組合,並不能代替條件覆蓋和條件組合覆蓋。

白盒測試中的六種覆蓋方法
03-27白盒測試---六種覆蓋方法 - write6的專欄 - CSDN博客
9-14
白盒測試的6種覆蓋方法 - 上善若水,水善利萬物而不爭。 - CSDN博客
6-25
白盒測試中的六種覆蓋方法及案例分析 - Dancinglikelink - CSDN博客
6-22
白盒測試中邏輯覆蓋的六種方法 - hellofeiya的專欄 - CSDN博客
7-6
軟件測試-白盒測試(六種覆蓋准則) - weixin_40975029的..._CSDN博客
5-9
白盒測試中的六種覆蓋方法案例分析 - weixin_34273479的博客 - ...
5-31
軟件測試-白盒測試(六種覆蓋准則) - zgege的博客 - CSDN博客
7-9
白盒測試的6種覆蓋方法 - thewebcode - CSDN博客
4-19
白盒測試中的幾種覆蓋方法 - weixin_34279246的博客 - CSDN博客
6-24