1

我试图了解如何设计测试用例以涵盖以下表达式:Z := (A and not B) or (C xor D);

以下组合是涵盖 MC/DC 的唯一最小解决方案吗?

   testCaseNO  1 2 3 4 5
      Input A  T T F F F 
      Input B  T F T T T 
      Input C  F F F F T 
      Input D  F F F T F 
     Output Z  F T F T T 

或者下面给出的也适用于 MCDC 吗?

   testCaseNO  1 2 3 4 5
      Input A  T T T F F 
      Input B  T F T T F 
      Input C  F F T F T 
      Input D  F F T T T 
     Output Z  F T F T F
4

2 回答 2

2

您的两个示例都不满足 MC/DC。

要评估测试用例是否满足 MC/DC,一个好的方法是将测试用例配对,以便每一对:

  • 仅在一个值上不同
  • 给出不同的结果

每个条件都应该有一对这样的对。所以,对于第一个例子:

  • 案例 1 和案例 3 切换 A,但不会产生不同的结果
  • 案例 1 和案例 2 切换 B,产生不同的结果
  • 案例 3 和案例 5 切换 C,产生不同的结果
  • 案例 3 和案例 4 切换 D,产生不同的结果

在第二个示例中,唯一更改单个输入值的对是情况 1 和 2。所有其他对更改两个或多个值。

在这种情况下提供完整 MC/DC 的测试集是:

test case No 1 2 3 4 5
Input A      T T F F F
Input B      T F F F F
Input C      F F F T F
Input D      F F F F T
Output Z     F T F T T
  • A 满足 2 和 3
  • B满足1和2
  • C满足3和4
  • D满足3和5
于 2015-10-06T08:35:23.257 回答
1

我认为第二个不适用于 MCDC。您没有证明输入 A 独立地影响输出。在测试用例 1 中,A 为 T,输出 Z 为 F。在测试用例 4 中,A 为 F,输入 D 也发生了变化。所以你不知道是哪一个将输出更改为 T。

于 2013-08-02T13:43:37.387 回答