ITパスポート 2013年 春期 問37
問題文
ホワイトボックステストのテストケース作成に関する記述のうち、適切なものはどれか。
選択肢
ア:入力条件が数値である項目に対して、文字データを設定してテストケースを作成する。
イ:入力データと出力データを関係グラフで表現し、その有効な組合せをテストケースとして作成する。
ウ:人の体重を入力するテストで、上限値を300kg、下限値を500gと設定してテストケースを作成する。
エ:プログラムの全ての分岐経路を少なくとも1回実行するようにテストケースを作成する。(正解)
🔒 解説は解答すると表示されます
ホワイトボックステストのテストケース作成に関する記述【ITパスポート 解説】
正解の理由
ホワイトボックステストは、プログラムの内部構造(ソースコードや制御の流れ)を基にテストケースを作成する手法です。つまり「どの分岐(if文やループなど)の経路を通るか」を意識してテストを設計します。選択肢のうち、プログラムの全ての分岐経路を少なくとも1回実行するようにテストケースを作成する、という考え方はまさにホワイトボックステストの目的の一つです。ここで正答の選択肢は エ です。
(補足)「全ての分岐経路を1回実行する」は「経路網羅(path coverage)」や「分岐網羅(branch coverage)」と呼ばれる考え方に対応します。ホワイトボックスでは、このようにプログラム内部の分岐を基準にテストケースを作ります。
解法ステップ
- 「ホワイトボックステスト」の定義を確認する
- 内部構造・制御フロー(分岐やループ)を基にテストを設計する手法。
- 各選択肢が「内部構造に基づくか」「外部仕様(入力や出力)に基づくか」を判定する
- 内部構造に基づく→ホワイトボックス向き
- 入力値や出力の組合せに基づく→ブラックボックス向き(外部仕様)
- 「分岐を網羅する」考えがホワイトボックスの代表的な目的であることから、該当する選択肢を選ぶ
この手順で見れば、プログラムの分岐を網羅することを述べる エ が適切と判断できます。
選択肢別の誤答解説
-
ア: 入力条件が数値である項目に対して、文字データを設定してテストケースを作成する。
→ これは「異常入力(不正値)を入れて挙動を見る」テストで、主にブラックボックス的な入力検証や境界外の扱いを確認する手法です。ホワイトボックスの「コードの分岐や内部ロジックを参照して設計する」という性質とは直接一致しません。よって不適切です。 -
イ: 入力データと出力データを関係グラフで表現し、その有効な組合せをテストケースとして作成する。
→ これは「原因結果グラフ(cause-effect graph)」など、入力と出力の関係に基づくブラックボックステストの手法に近い記述です。入力→出力の組合せを中心に考えるため、ホワイトボックスの定義とは異なります。 -
ウ: 人の体重を入力するテストで、上限値を300kg、下限値を500gと設定してテストケースを作成する。
→ これは「境界値分析(boundary value analysis)」というブラックボックス的な手法の例です(境界値を決めてテストする)。また、実際の妥当性(例えば単位や現実的範囲)にも疑問が残ります。ホワイトボックスの「コードの分岐経路を基にする」という観点からは不適切です。
よくある誤解
- ホワイトボックステストは「不正入力を調べるだけ」と思う誤解
- 不正入力のテストは重要ですが、それは主にブラックボックス的な観点(仕様に基づく)です。ホワイトボックスは内部の分岐や条件式を基に設計する点が特徴です。
- 「全ての経路を必ず網羅すればよい」と考える誤解
- 理想的には全経路を網羅するのは良いですが、ループや条件の組合せで経路数が爆発的に増え、現実的に不可能な場合があります。実務では分岐網羅(各分岐の真/偽を通す)や条件網羅など現実的な基準を使います。
- 分岐網羅と経路網羅を混同する誤解
- 分岐網羅(branch coverage)は各分岐を少なくとも一度は真・偽の両方で実行することを目標にする場合が多く、経路網羅(path coverage)は可能なすべての実行経路を網羅することを指します。後者の方が厳密で難しいです。
補足コラム
- 用語メモ(初出でかみ砕き説明)
- ホワイトボックステスト(white-box test:内部構造を見て行うテスト) — ソースコードを参考に分岐や条件をチェックします。
- ブラックボックステスト(black-box test:仕様や入出力だけを見て行うテスト) — 実際の入力と期待される出力の組合せを中心にします。
- 分岐網羅(branch coverage) — if文などの分岐ごとに、各分岐の結果(真/偽)を実行することを目指すカバレッジ。
- 経路網羅(path coverage) — プログラムのすべての実行経路を網羅すること。組合せで増えやすく現実的に難しい。
- 実務のヒント:現実的には「文(statement)カバレッジ」→「分岐カバレッジ」→必要に応じて「条件カバレッジ」や「MC/DC(Modified Condition/Decision Coverage:修飾条件決定網羅)」など段階的に深めることが多いです。
- 簡単な例(if文の分岐を考える):
def fee(age):
if age < 18:
return 0 # 子どもは無料
else:
return 1000
このコードなら「age < 18 が True の場合」と「False の場合」をそれぞれ実行するテストケースを用意するのがホワイトボックス的です(例:age=10, age=20)。
FAQ
Q1: ホワイトボックスで異常系(文字列を数値に入れるなど)をテストしてはいけませんか?
A1: 禁止ではありません。コードの分岐や例外処理がどのように動くかを確認するために、不正入力を使うこともあります。ただしその設計思想は「内部の処理経路を意識しているか」がポイントです。
A1: 禁止ではありません。コードの分岐や例外処理がどのように動くかを確認するために、不正入力を使うこともあります。ただしその設計思想は「内部の処理経路を意識しているか」がポイントです。
Q2: 全ての経路を網羅するのは本当に必要ですか?
A2: 理想的ですが、多くの実務では不可能です。ループや多数の条件式で経路が指数的に増えるため、現実的には分岐網羅や条件網羅などでリスクの高い箇所を重点的にテストします。
A2: 理想的ですが、多くの実務では不可能です。ループや多数の条件式で経路が指数的に増えるため、現実的には分岐網羅や条件網羅などでリスクの高い箇所を重点的にテストします。
Q3: どのカバレッジ基準を使うべきですか?
A3: プロジェクトの重要度やリスクに応じます。安全性の高いシステムでは高いカバレッジ基準(MC/DC等)が要求されることがあります。一般的なアプリケーションでは分岐網羅が多く採用されます。
A3: プロジェクトの重要度やリスクに応じます。安全性の高いシステムでは高いカバレッジ基準(MC/DC等)が要求されることがあります。一般的なアプリケーションでは分岐網羅が多く採用されます。
関連キーワード: ホワイトボックステスト、ブラックボックステスト、分岐網羅、経路網羅、テストカバレッジ、境界値分析、原因結果グラフ、コードカバレッジ

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

