ITパスポート 2012年 秋期 問46
問題文
プログラムの品質を検証するために、プログラム内部のプログラム構造を分析し、テストケースを設定するテスト手法はどれか。
選択肢
ア:回帰テスト
イ:システムテスト
ウ:ブラックボックステスト
エ:ホワイトボックステスト(正解)
🔒 解説は解答すると表示されます
プログラム内部の構造を分析してテストケースを設定する手法はどれか【ITパスポート 解説】
正解の理由
エの「ホワイトボックステスト(white-box test:プログラムの内部構造や処理の流れを見てテスト設計する手法)」が正解です。問題文の「プログラム内部のプログラム構造を分析し、テストケースを設定する」という条件は、まさに内部のコードや分岐(if 文やループなど)を基にテストを作るホワイトボックステストを指します。
他の選択肢は次の理由で当てはまりません。
- ア 回帰テスト(regression test:変更後に既存機能が壊れていないかを再実行して確認するテスト)は目的が異なります。
- イ システムテスト(system test:システム全体の振る舞いを評価するテスト)は対象の範囲が「システム全体」であり、内部構造の分析が主目的ではありません。
- ウ ブラックボックステスト(black-box test:仕様や入出力だけを見て機能を検証する手法)は内部構造を見ずにテストする方法です。
したがって、内部構造を分析してテストケースを作るのは エ のホワイトボックステストです。
解法ステップ
- 問題文のキーワードを探す:「内部」「プログラム構造」「分析」「テストケース設定」など。
- 各選択肢の定義を思い出す(または短く整理する)。
- ホワイトボックステスト:内部構造重視。
- ブラックボックステスト:仕様/入出力重視。
- 回帰テスト:変更後の再確認。
- システムテスト:システム全体の評価。
- キーワードと定義を照合する:「内部構造を分析」→ホワイトボックステストが該当。
- 消去法で他を除く。
- 正解を選ぶ:エ。
選択肢別の誤答解説
-
ア: 回帰テスト
目的は「変更後に既存動作が壊れていないかを確かめる」ことです。内部構造を分析して新しいテストケースを作る説明とは違います。既存のテストを再実行するイメージです。 -
イ: システムテスト
システム全体(複数のモジュールや外部連携を含む)を評価します。内部の細かいコード構造を見てテストケースを設計する手法ではありません。 -
ウ: ブラックボックステスト
ブラックボックステスト(仕様や入出力だけで評価する方法)は、内部構造を見ずに「仕様通り動くか」を検証します。問題文の「内部の構造を分析する」とは反対です。 -
エ: ホワイトボックステスト
正解です。コードの分岐(if)、ループ、条件式などを分析して、ステートメント網羅や分岐網羅などの観点でテストケースを作ります。単体テスト(ユニットテスト)でよく用いられます。
よくある誤解
-
「ホワイトボックス=単体テストだけ」と考える誤解
→ ホワイトボックスは単体テストで多く使われますが、結合テストやシステムの一部検証でも内部に踏み込んで行う場合はホワイトボックスの考え方を適用できます。 -
「ブラックボックスは手抜きテスト」と思う誤解
→ ブラックボックスはユーザー視点や仕様確認に有効です。内部を知らなくても重要な欠陥を見つけられます。用途が違うだけです。 -
「回帰テスト=ホワイトボックス」と混同する誤解
→ 回帰テストは目的(変更による副作用チェック)を示す用語で、ホワイト/ブラックのどちらの手法でも実施できます。
補足コラム
-
ホワイトボックステストの具体例
- ステートメント網羅(statement coverage):コードの各行を少なくとも1回実行する。
- 分岐網羅(branch coverage): if の真/偽の両方を通す。
- 条件網羅(condition coverage):複合条件の各部分が真/偽になる組合せを検証する。
これらは「カバレッジ(coverage:テストでどれだけ網羅したか)」という指標で評価されます。
-
ツールの例(名前だけ)
コードカバレッジ測定ツール:JaCoCo(Java)、gcov(C/C++)など。これらはどの行や分岐がテストで実行されたかを示します。 -
テストの組合せが重要
実務ではホワイトボックスとブラックボックスを組み合わせることが多いです。内部の弱点も、外部仕様の欠陥も両方発見できるためです。
FAQ
Q1: ホワイトボックステストは誰が行いますか?
A1: 実装した開発者やテストエンジニアが行うことが多いです。コードを理解している人が効果的に設計できます。
A1: 実装した開発者やテストエンジニアが行うことが多いです。コードを理解している人が効果的に設計できます。
Q2: ブラックボックスとホワイトボックス、どちらが先ですか?
A2: 開発プロセスにより異なりますが、単体テスト段階ではホワイトボックス的手法が多く、結合〜受け入れではブラックボックス的手法が中心になることが多いです。
A2: 開発プロセスにより異なりますが、単体テスト段階ではホワイトボックス的手法が多く、結合〜受け入れではブラックボックス的手法が中心になることが多いです。
Q3: 回帰テストは自動化したほうが良いですか?
A3: はい。頻繁に行うため自動化(テストスクリプト化)すると効率的です。
A3: はい。頻繁に行うため自動化(テストスクリプト化)すると効率的です。
関連キーワード: ホワイトボックステスト, ブラックボックステスト, 回帰テスト, システムテスト, テストケース, カバレッジ, 単体テスト, 結合テスト, テスト設計, コードカバレッジ, 静的解析

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

