我正在阅读以下关于 MC/DC 的论文: http: //shemesh.larc.nasa.gov/fm/papers/Hayhurst-2001-tm210876-MCDC.pdf。
我有源代码:Z := (A or B) and (C or D)
和以下测试用例:
-----------------
| A | F F T F T |
| B | F T F T F |
| C | T F F T T |
| D | F T F F F |
| Z | F T F T T |
-----------------
我想证明上述测试用例符合唯一原因定义。
我从消除蒙面测试开始:
A or B = F T T T T
,这意味着它将第一个测试用例从C or D
as中屏蔽掉F and (C or D) = F
。C or D = T T F T T
A or B
,这意味着它从as中屏蔽了第三个测试用例(A or B) and F = F
。
然后我确定MC/DC
:
所需的测试用例A or B
:
F F
(第一种情况)T F
(第五种情况)F T
(第二种或第四种情况)
所需的测试用例C or D
:
F F
(第三种情况)T F
(第四或第五种情况)F T
(第二种情况)
所需的测试用例(A or B) and (C or D)
:
T T
(第二、第四或第五种情况)F T
(第一种情况)T F
(第三种情况)
根据论文,这个例子不符合唯一原因定义。相反,他们建议将第二个测试用例从 更改F T F T
为T F F T
。
-----------------
| A | F T T F T |
| B | F F F T F |
| C | T F F T T |
| D | F T F F F |
| Z | F T F T T |
-----------------
我再次下定决心MC/DC
:A or B
F F
(第一种情况)T F
(第五种情况)F T
(第四种情况)
然后,他们介绍了以下独立性对表,显示了两个示例之间的差异(第 38 页):
我知道对于第一个示例,它们显示的独立对更改了两个变量而不是一个,但是我不明白他们如何计算独立对。
在A
列中,我可以推断它们F F T F
从测试用例表的A
行中获取,并且它们将独立对计算为相同的测试用例,仅A
更改 ( T F T F
)。
然而,在B
's 列中,他们F F T F
再次选择。根据我的想法,这应该等于B
' 列:F T F T
而不是。
其余的字母显示了同样的困境。
同样对于D
的第一个示例列,他们表明独立对F T F T
是T F F F
,这破坏了我的理论,即他们正在从第一个值计算独立对,并证明他们是从其他地方挑选的。
有人可以更好地解释他们如何(以及从哪里)构建这样的独立配对表吗?