制御フローテスト(Control Flow Testing)について

制御フローテストとは

制御フローテストとは

制御フローテストとは、プログラムの制御の流れを検証するテスト技法です。
特に、ソースコード上でifやswitchなどの分岐を用いている部分に注目して、実行される処理フローを重点的に確認します。

制御フローテストは、ホワイトボックステスト技法のひとつです。


制御フローテストの実施手順

1.制御フローグラフ(Control Flow Graph)を作成する。
2.網羅基準(Coverage target)を決める。
3.テストケースを作成する。
4.テストを実施する。


制御フローグラフ(Control Flow Graph:CFG)とは

制御フローグラフとは、プログラムを実行したときに通る可能性のある全経路を表したグラフです。
フローチャート図と似た図であり、プログラムの論理を表現します。


網羅基準(Coverage target)とは

網羅率(カバレッジ)とは、テスト対象全体のうち、実際にテストした部分がどのくらいの割合であるかを示す指標です。
つまり、網羅基準とは、すべての制御パスから実際にテストを実施する制御パスを選定する際に適用する基準のことを意味します。
全ての制御パスをテストすることは現実的には難しいため、効果的な網羅基準を定めてテストを実施します。


網羅基準(Coverage target)

ステートメントカバレッジ(statement coverage)

ステートメントカバレッジとは、ソースコード中の実行可能な行のうち、何行を実行したかで測るカバレッジです。
言い換えると、全ての命令を少なくとも1回は通すという基準ということになります。

制御フローテストの中では一番粒度が粗く、最も基本的な基準と言えます。
命令網羅、C0カバレッジ(シーゼロ)、C0網羅などとも呼ばれます。


ステートメントカバレッジの網羅率 = 実行した行 ÷ 実行可能な行 × 100

カバレッジの対象は実行可能な行であり、空行やコメント行は含みません。


デシジョンカバレッジ(decision coverage)

デシジョンカバレッジとは、ソースコード中の判定の真偽によるフローの分岐をどれだけ網羅したかで測るカバレッジです。
つまり、プログラム上の全ての条件分岐を、少なくとも1回は実行するという基準です。

粒度が細かいため、この基準を採用すればテストの品質も向上します。
判定網羅、判定条件網羅、分岐網羅(branch coverage)、C1カバレッジ、C1網羅とも呼ばれます。


デシジョンカバレッジの網羅率 = 判定の真・偽 ÷ 全ての判定の真・偽 × 100

コンディションカバレッジ(condition coverage)

コンディションカバレッジとは、条件分岐における個々の条件が真あるい偽になる場合を少なくとも一回は含むことを測るカバレッジです。
つまり、条件分岐が発生する箇所で、各条件のYes/Noを全て一度は確認するという基準です。

ステートメントカバレッジやブランチカバレッジに比べて、非常に強いカバレッジ基準です。
条件網羅、C2網羅、C2カバレッジとも呼ばれます。


マルチコンディション・カバレッジ(multiple condition coverage)

マルチコンディション・カバレッジとは、個々の条件式の真偽を、全ての組み合わせ通りテストするカバレッジです。
つまり、条件分岐が発生する箇所で、取り得るすべてのパターンを確認するという基準です。

複合条件網羅、全パス網羅とも呼ばれます。
全ての組み合わせ通りテストするため最も強いカバレッジ基準となりますが、その分テストケースが膨大になります。


MC/DC(modified condition / decision coverage)

MC/DCとは、国際技術標準 DO-178B(RTCA)に準拠したカバレッジです。
米国の航空無線技術委員会で航空機ソフトウェアのテスト時に使用するテスト網羅度となります。

MC/DCの網羅率100%の定義は以下の4つです。
1.プログラムの全入口/出口を少なくとも一回はテストすること
2.プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること
3.プログラムの全判定は可能な値を少なくとも一回はテストすること
4.プログラムの判定の全条件は判定の出力に独立に影響することを示すこと

複合条件をカバーしつつ、C2カバレッジよりもテストケースを絞ることが可能なため、より効率的にテスト設計を行うことができます。
改良条件判定、改良条件判断網羅とも呼ばれます。


関連ページ