覆蓋率是用來度量 測試 完整性的壹個手段,現在有越來越多的測試工具能夠支持覆蓋率測試,但是它們本身並不包含 測試技術 ,只是測試技術有效性的壹個度量。 白盒測試 中經常用到的覆蓋率是邏輯覆蓋率。
二、覆蓋率的目的
覆蓋率對於 軟件測試 有著非常重要的作用,通過覆蓋率我們可以知道我們的測試是否充分,我們測試的弱點在哪些方面,進而指導我們設計能夠增加覆蓋率的 測試用例 ,有效的提高測試質量。
壹方面覆蓋率技術可以指導測試用例的設計;另壹方面,可以通過覆蓋率來衡量白盒測試的力度。
三、邏輯覆蓋率主要有以下六種:
(1)語句覆蓋;
(2)判定覆蓋;
(3)條件覆蓋;
(4)判定條件覆蓋;
(5)條件組合覆蓋;
(6)路徑覆蓋。
1、語句覆蓋(Statement Coverage)
語句覆蓋的含義是,在測試時,運行被測程序後,程序中被執行到的可執行語句的比率。
語句覆蓋=(至少被執行壹次的語句數量)/可執行的語句總數。
*語句覆蓋是最弱的壹種覆蓋方式。
2、判定覆蓋(Decision Coverage)
判定覆蓋也叫分支覆蓋(Branch Coverage),含義是:在測試時,運行被測程序後,程序中所有判斷語句的取真分支和取假分支被執行到的比率。
判定覆蓋=(判定結果被評價的次數)/判定結果的總數。
3、條件覆蓋(Condition Coverage)
條件覆蓋的含義是:在測試時,運行被測程序後,所有判斷語句中每個條件的可能取值(真值和假值)出現過的比率。
條件覆蓋=(條件操作數值至少被評價壹次的數量)/(條件操作數值得總數)
4、判定條件覆蓋(Decision Condition Coverage)
判定條件覆蓋也叫分支條件覆蓋(Branch Condition Coverage)它的含義是:在測試時,運行被測程序後,所有判斷語句中每個條件的所有可能值(為真為假)和每個判斷本身的判定結果(為真為假)出現的比率。
判定條件覆蓋=(條件操作數值或判定結果至少被評價壹次的數量)/(條件操作數值總數+判定結果總數)
*判定條件覆蓋率實際上就是判定覆蓋率和條件覆蓋率的組合。
5、條件組合覆蓋(Condition combination coverage)
條件組合覆蓋的含義是,在測試時,運行被測程序後,所有語句中子條件所有可能的取值結果組合出現過的比率。
條件組合覆蓋=(至少被執行到壹次的條件組合)/總的可能的條件組合數。
*條件組合覆蓋是除路徑覆蓋以外,最強的壹種覆蓋方式。
6、路徑覆蓋(Path Coverage)
路徑覆蓋的含義是:在測試時,運行被測程序後,程序中所有可能的路徑被執行過的比率。
路徑覆蓋=(至少被執行到壹次的路徑數)/總的路徑數。
四、總結五種邏輯覆蓋率。
1、語句覆蓋是最弱的壹種覆蓋方式。
2、條件組合覆蓋是除路徑覆蓋以外,最強的壹種覆蓋方式。
3、百分百的條件組合覆蓋壹定包含:百分百的語句覆蓋、百分百的判定覆蓋、百分百的條件覆蓋以及百分百的判定條件覆蓋;但不壹定包含百分百的路徑覆蓋。
4、百分百的判定覆蓋(分支覆蓋)壹定包含:百分百的語句覆蓋。
5、百分百的條件覆蓋不壹定包含:百分百的語句覆蓋。