忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【ソフトウェア開発技術】処理の流れ(分岐・反復)を網羅!「制御フローテスト」|情報処理問題1000本ノック

プログラム内部のソースコードや構造に着目して行うホワイトボックステスト。処理の実行経路(制御フロー)に沿って網羅的に検証を行う「制御フローテスト」の概念とカバレッジ(網羅率)を攻略しましょう。

1. 【 問題 】:ソフトウェア開発技術(テスト設計技法・ホワイトボックステスト)

【 問題 】 ソフトウェア開発技術におけるホワイトボックステストの設計技法に関する記述です。プログラムの内部構造を分析し、処理の実行順序や条件分岐、繰り返し処理などの「制御の流れ(制御フローグラフ)」に基づいてテスト経路を決定し、そのルートを正しく通過するかを確認するテスト技法を何と呼ぶでしょうか?

(ア)制御フローテスト(Control Flow Testing)
(イ)データフローテスト(Data Flow Testing)
(ウ)境界値分析(Boundary Value Analysis)
(エ)状態遷移テスト(State Transition Testing)

2. 正解:

正解:(ア)制御フローテスト(Control Flow Testing)

3. 解説:「プログラムの迷路」をすり抜けるルート決め!

制御フローテスト(Control Flow Testing)は、プログラムのソースコード内に存在する「if文(分岐)」や「for/while文(繰り返し)」といった処理の流れ(制御フロー)に注目し、あらかじめ作成した**制御フローグラフ(フローチャートのような図)**をもとにテストケースを作成する手法です。
どれだけのルートを通過させたかを表す指標として「網羅率(カバレッジ)」が用いられます。

【制御フローテストで問われる「3大カバレッジ基準」】 ← ココが試験の超重要ポイント!

カバレッジ名網羅する対象(目指すゴール)
命令網羅(C0:ステートメントカバレッジ) すべての「命令(処理文)」を少なくとも1回は実行させる。
分岐網羅(C1:ブランチカバレッジ) すべての「分岐(真/偽の両方の矢印)」を少なくとも1回は通過させる。
条件網羅(C2:ディシジョンカバレッジ) 分岐条件の中にある「個々のサブ条件式(A>0 や B==1 など)」の真・偽の組み合わせをすべて網羅する。

1. 理解のコツ: 「ダンジョンの地図(迷路)の探索」に例えてみましょう。
・プログラムはスタートからゴールまでの迷路です。途中には「右へ進むか、左へ進むか」の分岐(if文)や「同じ場所をぐるぐる回る」ループ(for文)があります。
制御フローテストは、このダンジョンの地図を開き、「すべての宝箱(命令)を回収できる最短ルートはどこか」「右の道も左の道(分岐)も両方一度は歩いたか」と、道順(フロー)に注目して探索計画を立てるテスト手法です。

2. 試験対策の視点: ソフトウェア開発技術分野のホワイトボックステストにおいて超基本となる重要ワードです。
問題文の中に「内部構造」「制御の流れ」「フローグラフ」「命令網羅・分岐網羅」といったキーワードがあれば、即座に制御フローテストを選べるようにしておきましょう。
※選択肢の(イ)データフローテストは「変数の定義と参照の追跡」、(エ)状態遷移テストは「状態の変化(ステート)」に着目する手法であり、明確に区別できます。


4. まとめ

「プログラム内部の処理順序や分岐などの『制御の流れ』に着目し、命令網羅や分岐網羅といった基準でルートをテストする技法」。これが制御フローテストです。ホワイトボックステストの王道手法として、各カバレッジの定義とセットでしっかり記憶しておきましょう!


PR