コードを完全にカバーするためにいくつかのテスト ケースを作成する必要がある状況があります。特定のブランチで、次のような状況になりました if((A && B && C) || D)
if((A && B && C) || D)
{
//perform task 1'
}
else
{
//perform task 2;
}
しかし、これでは MCDC のテスト ケースの組み合わせを取得できません。
コードを完全にカバーするためにいくつかのテスト ケースを作成する必要がある状況があります。特定のブランチで、次のような状況になりました if((A && B && C) || D)
if((A && B && C) || D)
{
//perform task 1'
}
else
{
//perform task 2;
}
しかし、これでは MCDC のテスト ケースの組み合わせを取得できません。
あなたの方法は、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)
(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