-
邏輯覆蓋
鎖定
- 中文名
- 邏輯覆蓋
- 外文名
- Logic cover
- 術語拼音
- Luójí Fùgài
- 分 類
- 白盒測試
邏輯覆蓋術語概述
邏輯覆蓋術語分類
根據覆蓋目標的不同和覆蓋源程序語句的詳盡程度,邏輯覆蓋又可分為:
1.語句覆蓋(SC)
2. 判定覆蓋(DC)
3. 條件覆蓋(CC)
4. 條件/判定覆蓋(C/DC)
5. 條件組合覆蓋(MCC)
6.多條件覆蓋(MCC)
7.修正判定條件覆蓋(MCDC)
8. 點覆蓋
9. 邊覆蓋
幾種邏輯覆蓋標準發現錯誤的能力呈由弱至強的變化。
邏輯覆蓋舉例
public class Coverage
{
public void Main()
{
1 System.out.println("start main function:path a...");
2 int A,B,X;
3 if(A>1 and B==0){
4 X=X/A;
5 System.out.println("path c");
5 } else {
6 System.out.println("path b");
7 }
8 if(A==2 or X>1){
9 X=X+1;
10 System.out.println("path e");
11 } else {
12 System.out.println("path d");
13 }
14 System.out.println("end main function.");
}
邏輯覆蓋術語詳解與舉例
邏輯覆蓋語句覆蓋
語句覆蓋 SC(Statement Coverage),就是設計若干個測試用例,運行被測程序,使得程序中每一可執行語句至少執行一次。這裏的“若干個”,意味着使用測試用例越少越好。語句覆蓋在測試中主要發現缺陷或錯誤語句。
[1]
邏輯覆蓋判定覆蓋(分支覆蓋)
判定覆蓋DC(Decision coverage),有時也稱分支覆蓋,就是指設計若干測試用例,運行被測程序,使得每個判定的取真分支和取假分支至少評價一次。例如上邊的Coverage類代碼,path ace,path abd,path abe,path acd 四條路徑均是符合判定覆蓋要求的路徑。
[1]
邏輯覆蓋條件覆蓋
例如上邊的Coverage類代碼,判定語句有兩個,分別是第3行和第8行代碼。根據條件覆蓋的定義,則應考慮“(A>1 and B==0)”和“(A==2 or X>1)”兩個表達式中的變量取值。
[1]
邏輯覆蓋判定條件覆蓋
判定條件覆蓋CDC(Condition/ Decision Coverage),設計足夠多的測試用例,使得判定中的每個條件的所有可能(真/假)至少出現一次,並且每個判定本身的判定結果也至少出現一次。
[1]
例如上邊的Coverage類代碼,不僅考慮到path ace,path abd,path abe,path acd 四條分支路徑(判定覆蓋),也考慮到了“(A>1 and B==0)”和“(A==2 or X>1)”兩個條件中的每個表達式的取值(條件覆蓋)。
[1]
修正判定條件覆蓋單元的入口與出口必須至少被調用一次,程序中判斷的每一個分支必須至少被執行一次。對於程序中通過邏輯運算(AND,OR等)組成判斷的基本布爾條件,每個條件必須取遍所有可能的值且每一個條件對判斷的結果具有獨立的作用。
[1]
邏輯覆蓋條件組合覆蓋
條件組合覆蓋,也稱多條件覆蓋MCC (Multiple Condition Coverage),設計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少出現一次(以數軸形式劃分區域,提取交集,建立最少的測試用例)。這種方法包含了“分支覆蓋”和“條件覆蓋”的各種要求。滿足條件組合覆蓋一定滿足判定覆蓋、條件覆蓋、判定條件覆蓋。
條件組合覆蓋率的公式:條件組合覆蓋率=被評價到的條件取值組合的數量/條件取值組合的總數
邏輯覆蓋路徑覆蓋
路徑覆蓋率的公式:路徑覆蓋率=被執行到的路徑數/程序中總的路徑數。
路徑覆蓋測試步驟:
3. 生成路徑圖;
4. 進行路徑編碼;
5. 經過譯碼得到執行的路徑;