修改條件/判斷覆蓋(Modified condition/decisioncoverage)簡稱MC/DC,是用在飛航安全軟體檔案DO-178B的白箱測試方式,可以判斷A等級的軟體是否有經過適當的軟體測試。
基本介紹
- 中文名:修改條件判斷覆蓋
- 外文名:Modified condition/decision coverage
- 簡稱:MC/DC
- 領域:計算機
簡介
每一個判斷的所有可能結果都出現過;
每一個判斷中所有條件的所有可能結果都出現過;
每一個進入點及結束點都執行過;
判斷中每一個條件都可以獨立的影響判斷的結果。
DO-178B中指定會影響飛機起飛及降落安全性的軟體(A等級軟體),需滿足修改條件/判斷覆蓋的代碼覆蓋測試。
定義
- 條件覆蓋
程式中每一個判斷的所有條件的所有可能結果都至少出現一次。 - 判斷覆蓋
程式中每一個進入點及結束點都執行過一次,每一個判斷的所有可能結果都至少出現一次。 - 條件/判斷覆蓋
程式中每一個進入點及結束點都執行過一次,每一個判斷的所有條件的所有可能結果都至少出現一次,程式中判斷的所有可能結果都至少出現一次。 - 修改條件/判斷覆蓋
程式中每一個進入點及結束點都執行過一次,每一個判斷的所有條件的所有可能結果都至少出現一次,程式中判斷的所有可能結果都至少出現一次,而每一個條件都可以獨立的影響判斷的結果。
說明
條件/判斷覆蓋
int foo (int x, int y){ int z = 0; if ((x>0) && (y>0)) { z = x; } return z;}
- 用foo(1,1)及foo(0,1)進行測試,前者會使判斷成立,後者會使判斷不成立,因此判斷的所有可能結果都至少出現一次,滿足判斷覆蓋的條件。
- 用foo(1,1)及foo(0,0)進行測試,條件A及B的所有結果(0和1)都至少出現一次,滿足條件覆蓋的條件。前者會使判斷成立,後者會使判斷不成立,因此判斷的所有可能結果都至少出現一次,滿足判斷覆蓋的條件。因此上述測試滿足條件/判斷覆蓋的準則。
修改條件/判斷覆蓋
int foo (int x, int y, int z){ int a = 0; if (((x>0) || (y>0)) && (z>0)) { a = x; } return a;}
- foo(1,1,1)
- foo(0,0,0)
- foo(0,0,1)
- foo(1,0,1)
- foo(0,1,1)
- foo(1,1,0)