判定分岐網羅テスト(Decision Coverage / Branch Coverage)
概要と特徴
- 判定条件の網羅 プログラム内の各判定条件(Decision)において、真(True)と偽(False)の両方の結果を少なくとも1回は実行させるテスト手法。
- ホワイトボックステストの一種 内部構造を分析し、制御フローに基づいてテストケースを作成する手法(White Box Testing)。
- 論理的な分岐の確認 if文やswitch文などの分岐点において、すべての経路が正しく動作することを確認。
分類
- コード網羅率(Code Coverage) ソフトウェアテストにおける網羅性の指標の一つ。
- 制御フローテスト プログラムの実行順序に注目したテストカテゴリ。
上位概念・下位概念
- 上位概念:命令網羅(Statement Coverage / C0) すべてのコード行を1回以上実行すること。判定分岐網羅は命令網羅を包含。
- 下位概念:条件網羅(Condition Coverage / C2) 判定条件内の個々の論理式(個別の条件)が真偽の両方を取ることを重視する概念。
メリット
- 未実行ルートの検出 命令網羅では見逃される「else句がない場合の偽のルート」などの確認が可能。
- バグ発見率の向上 条件分岐に伴う論理的な誤りを発見しやすい。
- 標準的な指標 業界内で広く普及しており、ツールのサポートも豊富。
デメリット
- 複合条件の不完全性 「A かつ B」のような複合条件において、個々の組み合わせ(A=T, B=Fなど)までは保証不可。
- テストケース増大 命令網羅と比較して、作成すべきテストケース数が増加。
既存との比較
- 命令網羅(C0)との比較 C0は「通る道」に注目。判定分岐網羅(C1)は「分岐の出口」に注目。C1の方が網羅性が高い。
- 複合条件網羅(MCC)との比較 MCCは全組み合わせを網羅するため、C1よりも厳格だがコストが極めて高い。
導入ポイント
- カバレッジツールの活用 JaCoCoやgcovなどのツールを用い、自動で網羅率を算出。
- 目標値の設定 クリティカルなモジュールでは100%を目標とし、それ以外はコストとのバランスで調整。
注意点
- 到達不能コード 論理的に実行不可能なコード(Dead Code)がある場合、網羅率100%の達成は不可能。
- 過信の禁物 網羅率が高いことは「テストが十分であること」の必要条件であり、十分条件ではない。
今後
- AIによる自動生成 AIがソースコードを解析し、最適な判定分岐網羅テストケースを自動生成する技術の普及。
- 高信頼性システムでの必須化 車載ソフトウェアや医療機器など、安全性が重視される分野での厳格な適用。
関連キーワード
- ホワイトボックステスト (White Box Testing)
- 命令網羅 (Statement Coverage)
- 条件網羅 (Condition Coverage)
- 改良条件判定網羅 (MC/DC)
- 制御フローグラフ (Control Flow Graph)
- ソフトウェア品質保証 (Software Quality Assurance)