修正条件/决策覆盖率 (MCDC) 覆盖率
描述
决策是由条件组成的复合布尔语句,这些条件是简单的布尔表达式。在其他条件保持不变的前提下,如果改变一个条件会改变决策结果,则该条件会独立影响决策结果。要测试某个条件是否会独立影响决策,测试用例必须检查:
改变该条件的值是否使得决策结果为
true改变该条件的值是否使得决策结果为
false
MCDC 度量用于衡量测试用例检查多少条件有独立影响。MCDC 覆盖率为 50% 意味着测试用例仅检查一半的条件是否对决策有独立影响。要得到 100% MCDC 覆盖率,您可能需要重构决策语句。
Polyspace 实现
对于代码中的每个条件,Polyspace® Test™ 都会检查以下两个目标:
改变该条件的值是否使得决策结果为
true改变该条件的值是否使得决策结果为
false
如果测试用例检查这两个目标,则表示条件具有 MCDC 覆盖率。Polyspace Test 会将 MCDC 计算为被覆盖条件数与条件总数的比率。以下列代码为例:
int foo(int A, int B, int C)
{
if ((A||B)&&C)
{
return 1;
}
if ((A&&B)||C)
{
return 0;
}
return -1;
}三个条件包含在
((A||B)&&C)中三个条件包含在
((A&&B)||C)中
如果您使用以下测试用例测试 foo:
输入 = (1,1,0),输出 = 0
输入 = (1,1,1),输出=1
测试仅覆盖 ((A||B)&&C) 中 C 的 MCDC 目标,因此得到的 MCDC 值为 1/6 × 100 或 17%。
示例
版本历史记录
在 R2023b 中推出