はじめに
この記事では、ISTQB Automotive Tester シラバス(4章:Automotive Specific Test Techniques) の中から、
「4.2.1 条件テスト(Condition Testing)、多条件テスト(Multiple Condition Testing)、MCDC(Modified Condition Decision Coverage)」
について解説します。
この章では、動的テスト技法(Dynamic Test Techniques) の一部として、ソフトウェアコードやロジック条件に基づいたホワイトボックステスト手法を扱います。
特に自動車ソフトウェアでは、制御ロジックや安全関連条件分岐が多いため、MCDCなどの手法が非常に重要です。
1. 動的テスト技法とは?
「動的テスト技法」とは、実際にソフトウェアを実行しながら動作を確認するテスト手法のことです。
(これに対し、レビューやコード解析のように実行しないものは「静的テスト技法」と呼びます。)
動的テスト技法の中で、4.2.1では以下の3つを学びます。
|
技法名 |
日本語訳 |
略称 |
|---|---|---|
|
Condition Testing |
条件テスト |
CT |
|
Multiple Condition Testing |
多条件テスト |
MCT |
|
Modified Condition Decision Coverage |
修正条件/判定カバレッジ |
MCDC |
2. 各テスト技法の概要と違い
2.1 条件テスト(Condition Testing)
条件テストでは、個々の条件(True / False)をすべて評価することを目的とします。
例えば、次のようなIF文を考えます。
if (A && B)
この文の中には2つの条件(AとB)が存在します。
それぞれがTrue / Falseをとることで、条件テストでは以下のように少なくとも各条件の真偽を1回ずつテストすれば良いとされます。
|
テストケース |
A |
B |
結果(A && B) |
|---|---|---|---|
|
TC1 |
True |
False |
False |
|
TC2 |
False |
True |
False |
これで、AのTrue/False・BのTrue/Falseをそれぞれ1回ずつ評価できるため、条件テストの基準を満たします。
ただし、この場合、判定結果(全体のTrue/False)を完全にカバーしていないという欠点があります。
2.2 多条件テスト(Multiple Condition Testing)
多条件テストでは、全ての条件の組み合わせをテストします。
つまり、2条件なら「2² = 4通り」すべてを実施します。
|
テストケース |
A |
B |
結果(A && B) |
|---|---|---|---|
|
TC1 |
True |
True |
True |
|
TC2 |
True |
False |
False |
|
TC3 |
False |
True |
False |
|
TC4 |
False |
False |
False |
これで、AとBの全組み合わせを網羅します。
判定結果のTrue/Falseもすべて確認できるため、より完全なカバレッジが得られます。
しかし、条件が3つ、4つと増えるとテスト数は指数的に増えます。
-
3条件 → 2³ = 8通り
-
4条件 → 2⁴ = 16通り
-
10条件 → 1024通り(!)
つまり、全組み合わせテストは現実的に不可能になることが多いのです。
2.3 MCDC(Modified Condition Decision Coverage:修正条件/判定カバレッジ)
MCDCは、多条件テストの「無駄を省いた」アプローチです。
各条件が独立して判定結果に影響を与えることを確認するだけでよい、というルールです。
MCDCの目的:
各条件が、他の条件の値に依存せず、単独で判定結果(True/False)を変えることを確認する。
✅ 例題:MCDCでのテストケース設計
再び、条件が2つの場合(A && B)を考えます。
|
テストケース |
A |
B |
結果(A && B) |
説明 |
|---|---|---|---|---|
|
TC1 |
True |
False |
False |
Bの影響を確認 |
|
TC2 |
False |
True |
False |
Aの影響を確認 |
|
TC3 |
True |
True |
True |
両方Trueで結果が変化 |
-
TC1とTC3を比較すると、Bの値の変化(False→True)が結果をFalse→Trueに変えている。
-
TC2とTC3を比較すると、Aの値の変化が結果を変えている。
したがって、3ケースでMCDCを達成できます。
(多条件テストの4ケースより少ない)
3. 3つの技法の比較表
|
項目 |
条件テスト (CT) |
多条件テスト (MCT) |
MCDC |
|---|---|---|---|
|
カバレッジ対象 |
各条件のTrue/False |
全ての組み合わせ |
各条件の独立影響 |
|
テスト数 |
少ない |
非常に多い |
少ない(効率的) |
|
判定結果のカバー |
不完全 |
完全 |
完全 |
|
自動車開発での推奨度 |
中 |
低(非効率) |
高(ISO 26262などで推奨) |
MCDCは**DO-178C(航空機)やISO 26262(自動車機能安全)**などでも推奨されています。
4. 実務での使いどころ
自動車ソフトウェアでは、以下のような制御ロジックが頻出します。
if (speed > 60 && brake == ON)
このような条件では、速度やブレーキ状態など複数の変数が組み合わされます。
そのため、すべての条件を単独にテストする必要があります。
MCDCは、安全関連システム(例:ABS、ESC、ADAS)などで特に重視されます。
5. まとめ
|
技法 |
特徴 |
利点 |
欠点 |
|---|---|---|---|
|
条件テスト |
各条件の真偽を確認 |
シンプル |
判定全体は網羅できない |
|
多条件テスト |
全組み合わせを確認 |
網羅的 |
組み合わせ爆発が発生 |
|
MCDC |
各条件の独立影響を確認 |
効率的で高精度 |
設計がやや複雑 |
MCDCは、少ないテスト数で高い安全性を確保できる最も効率的な方法です。
自動車ソフトウェアテストにおいては、MCDCが最も実用的かつ推奨されるカバレッジ基準です。
💡 まとめポイント
-
条件テスト:各条件をTrue/Falseで評価
-
多条件テスト:すべての組み合わせを評価(テスト数が多くなる)
-
MCDC:各条件が独立して結果に影響することを確認(効率的)
-
MCDCはISO 26262などの安全基準で推奨
🔍 例題(ISTQB Automotive Tester Sample)
問題:
次の条件式 if (A && B) に対して、MCDCを達成する最小テストケース数はいくつか?
選択肢:
A. 2
B. 3
C. 4
D. 8
正解: B(3ケース)
理由:
AとBがそれぞれ独立して判定結果を変えることを確認できる3パターン(True/Falseの変化)で十分。


コメント