软件测试——逻辑覆盖
1、語句覆蓋(Statement Coverage)
對程序的邏輯覆蓋很少,只關心判定表達式的值,是很弱的邏輯覆蓋標準。
- 【基本思想】:設計若干測試用例,運行被測程序,使程序中每個可執行語句至少執行一次。
- 【優點】:檢查所有語句、代碼覆蓋率高
- 【缺點】:無法檢查出條件、循環語句的錯誤
2、判定覆蓋(Decision Coverage)
判定覆蓋比語句覆蓋強一些,能發現一些語句覆蓋無法發現的問題。但是往往一些判定條件都是由多個邏輯條件組合而成的,進行分支判斷時相當于對整個組合的最終結果進行判斷,這樣就會忽略每個條件的取值情況,導致遺漏部分測試路徑。
- 【基本思想】:設計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次,即判斷真假值均曾被滿足。
- 【優點】:判定覆蓋具有比語句覆蓋更強的測試能力。
- 【缺點】:往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑,判定覆蓋仍是較弱的邏輯覆蓋。
3、條件覆蓋(Condition Coverage)
通常而言條件覆蓋比判定覆蓋強,因為條件覆蓋使得判定中的每一個條件都取到了不同的結果,這一點判定覆蓋則無法保證。但條件覆蓋也有缺陷,因為它只能保證每個條件都取到了不同結果,但沒有考慮到判定結果,因此有時候條件覆蓋并不能保證判定覆蓋。
- 【基本思想】:設計若干測試用例,執行被測程序以后要使每個判斷中每個條件的可能取值至少滿足一次。
- 【優點】:能夠檢查所有的條件錯誤。
- 【缺點】:不能保證所有的分支(判定)都能覆蓋,仍是較弱的覆蓋方式。
4、判定/條件覆蓋(Decision/Condition Coverage)
判定/條件覆蓋,說白了就是我們設計的測試用例可以使得判斷中每個條件所有的可能取值至少執行一次(條件覆蓋),同時每個判斷本身所有的結果也要至少執行一次(判定覆蓋)。不難發現判定條件覆蓋同時滿足判定覆蓋和條件覆蓋,彌補了兩者各自的不足,但是判定條件覆蓋并未考慮條件的組合情況。
- 【基本思想】:設計足夠的測試用例,使得判斷條件中的所有條件可能至少執行一次取值,同時所有判斷的可能結果至少執行一次。
- 【優點】:既考慮了每一個條件,又考慮了每一個分支,發現錯誤的能力強于分支覆蓋和條件覆蓋
- 【缺點】:仍然不能覆蓋所有的路徑,有進一步提升的空間
5、條件組合覆蓋(Branch Condition Combination Coverage)
條件組合覆蓋,測試用例應該使得每個判定中的各個條件的各種可能組合都至少出現一次。顯然,滿足條件組合覆蓋的測試用例一定是滿足判定覆蓋、條件覆蓋和判定條件覆蓋的。
- 【基本思想】:設計足夠的測試用例,使得所有可能的條件取值組合至少執行一次。
- 【優點】:能夠檢查所有的條件錯誤
- 【缺點】:不一定能使程序中的每條路徑都執行到,用例數明顯增加
6、路徑覆蓋(Path Coverage)
路徑覆蓋,意思是說我們設計的測試用例可以覆蓋程序中所有可能的執行路徑。這種覆蓋方法可以對程序進行徹底的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。
- 【基本思想】:要求設計足夠多的測試用例,使得程序中所有的路徑都至少執行一次 。
- 【優點】:這種測試方法可以對程序進行徹底的測試,比前面五種的覆蓋面都廣。
- 【缺點】:需要設計大量、復雜的測試用例,使得工作量呈指數級增長,不一定把所有的條件組合都覆蓋。
總結一下:
?
總結
以上是生活随笔為你收集整理的软件测试——逻辑覆盖的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 课上——HTML 表格 学生成绩表
- 下一篇: 2018 dota2 战队十杀分析