1 背景
MC/DC是在机载软件等安全关键领域被广泛接受、应用的结构覆盖准则。作为一种面向工程应用的准则,MC/DC虽然由来已久,但其解释并非一成不变。当我们将MC/DC应用到基于需求的测试中时,会与相关方对MC/DC本身进行讨论。我们发现,有必要对MC/DC进行一些解释。
作为一种覆盖准则,MC/DC的目的是确保验证过程具有充分性,即能够表明每个条件至少一次正确影响了系统的行为。从这个目的出发,MC/DC可以有多种规则。
实际上,我们一般讨论的MC/DC,是唯一原因(Unique Cause)MC/DC,也即DO-178B中采用的MC/DC。在DO-178C中,MC/DC的定义发生了改变,除唯一原因MC/DC之外,允许采用屏蔽(Masking)MC/DC和短路(Short Circuit)MC/DC。
不同的MC/DC具有不同的适用性。DO-178C的MC/DC定义,极大程度上解决了DO-178B MC/DC不适用于耦合条件的问题。
本文对唯一原因(Unique Cause)、屏蔽(Masking)、短路(Short Circuit)这三类MC/DC进行简要讨论。
2 基本说明
MC/DC(Modified Condition / Decision Coverage),即修改条件/判定覆盖,是一种结构覆盖准则。
DO-178C要求A级软件满足MC/DC结构覆盖,如下图所示。

图1 DO-178C对MC/DC的要求
在DO-178C中定义了如下相关术语:
条件(Condition):不包含布尔运算符(除Not外)的布尔表达式;
判定(Decision):由条件和零个或多个布尔运算符组成的布尔表达式。如果一个条件在一个判定中出现多次,则每次出现都认为是不同的条件。
MC/DC:程序中的每个入口和出口点都至少被调用过一次,一个判定中每个条件的所有可能结果都至少产生过一次,每个判定的所有可能结果都至少产生过一次,并且一个判定中的每个条件都独立地影响了该判定的结果。一个条件可以通过以下方式独立影响判定结果:(1)保持所有其他可能的条件不变,改变该条件,或者(2)保持所有其他可能影响结果的条件不变,改变该条件。
对耦合条件(coupled condition)说明如下:
弱耦合条件:当一个条件变化可能(也可能不)导致其他条件变化的,相关条件为弱耦合的。例如:对判定A && B,其中A := (x>10), B := (x<20),则A、B为弱耦合条件。
强耦合条件:当一个条件变化必然导致其他条件变化的,相关条件为强耦合的。例如,令A := (x>10), B := (x<=10),则A、B为强耦合条件。
3 唯一原因MC/DC
DO-178B中采用唯一原因MC/DC。所谓唯一原因MC/DC,指构成判定的n个条件中,指定一个条件c作为独立条件,其他所有条件保持不变,条件c的变化(即作为唯一原因)导致判定结果变化。
考虑如下语句:
if A or (B and C)then …,其中A、B、C为布尔变量且相互独立
上述条件语句中,逻辑表达式“Aor (B and C)”为判定,A、B、C为条件。针对该判定,一个可能的MC/DC用例集如下表所示:
表1:A or (B and C)的唯一原因MC/DC用例表
用例编号 |
A |
B |
C |
判定 |