2

コードを完全にカバーするためにいくつかのテスト ケースを作成する必要がある状況があります。特定のブランチで、次のような状況になりました if((A && B && C) || D)

if((A && B && C) || D)
{
  //perform task 1'
}
else
{
  //perform task 2;
}

しかし、これでは MCDC のテスト ケースの組み合わせを取得できません。

4

3 に答える 3

3

あなたの方法は、MCDCツールを使用して、 可能なテストケースを特定することです。

これを手動で行うと、可能なテスト ペアの組み合わせが多数あるため、非常に多くの作業が必要になる可能性があります。

申し訳ありませんが、私の研究のすべての詳細を共有することはできません。FAA (DOT/FAA/AR-01/18).

マスキングを含めて、52 の可能なテスト ペアがあります。ブーリアン ショートカット評価を含む適切な WhiteBox 分析を実行すると、63 個の MCDC テスト ペアが検出されます。セット カバー アルゴリズムを適用すると、3 つの最小テスト セットが得られます。

いくつかのヒューリスティックを実行すると、おそらく驚くべきテスト ベクトルが得られます。

 Test Pair for Condition 'a':    0  14   (Unique Cause)
 Test Pair for Condition 'b':    8  14   (Unique Cause)
 Test Pair for Condition 'c':   12  14   (Unique Cause)
 Test Pair for Condition 'd':    0   1   (Unique Cause)

テストベクター: 推奨結果: 0 1 8 12 14

0:   a=0  b=0  c=0  d=0    (0)
1:   a=0  b=0  c=0  d=1    (1)
8:   a=1  b=0  c=0  d=0    (0)
12:  a=1  b=1  c=0  d=0    (0)
14:  a=1  b=1  c=1  d=0    (1)
于 2019-05-04T09:56:21.917 に答える
-1

(A && B && C) のすべての誤った組み合わせについては D = 1 を維持し、(A && B && C) の真の組み合わせについては D = 0 を維持し、最後にすべての入力を 0 に維持することが 1 つの方法であると思います。ケースの組み合わせは次のとおりです。

a b c d
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
0 0 0 0
于 2016-06-07T08:24:27.040 に答える