基本情報技術者 2011年 春期 午前(科目A) 問49
問題文
ホワイトボックステストの説明として、適切なものはどれか。
選択肢
ア:外部仕様に基づいてテストデータを作成する。
イ:同値分割の技法を使用してテストデータを作成する。
ウ:内部構造に基づいてテストデータを作成する。(正解)
エ:入力と出力の関係からテストデータを作成する。
🔒 解説は解答すると表示されます
ホワイトボックステスト【午前解説】
正解の理由
正解は ウ です。ホワイトボックステストは「内部構造に基づいてテストデータを作成する」ことを指します。テスターはソースコードや制御フローを参照し、ステートメント網羅・分岐網羅・条件網羅などの網羅基準に基づいて入力値を設計します。したがって「内部構造に基づく」が正解となります。
解法ステップ
- 問題文のキーワードを確認:「ホワイトボックステスト=内部構造」。
- 各選択肢が「内部」「外部(仕様)」「入出力」「同値分割」に該当するかを判定。
- 内部構造に基づく説明を含む選択肢を選ぶ。外部仕様や入出力説明は除外する。
- 迷ったら「同値分割」「境界値」はブラックボックスの代表技法であることを思い出す。
選択肢別の誤答解説
- ア: 「外部仕様に基づいてテストデータを作成する。」→ ブラックボックステストの説明であり誤り。
- イ: 「同値分割の技法を使用してテストデータを作成する。」→ 同値分割はブラックボックス技法でホワイトボックスの定義とは異なります。
- ウ: 「内部構造に基づいてテストデータを作成する。」 → 正解。コードや制御フローを参照してテストを設計します。
- エ: 「入力と出力の関係からテストデータを作成する。」→ これもブラックボックス的説明であり誤り(入出力は外部仕様中心)。
よくある誤解
- 同値分割=ホワイトボックスと思う誤解:同値分割は外部仕様(入力のカテゴリー)を基にするブラックボックス技法です。
- ホワイトボックスは単にユニットテストだけの話と思う誤解:ユニットテストで多く使われますが,統合テストやセキュリティ診断でも内部視点は有効です。
- 入力と出力の関係のみでホワイトボックスを判断する誤解:入力/出力重視はブラックボックスの観点であり,内部ロジック検査とは別です。
補足コラム
ホワイトボックステストでよく用いられる網羅基準には次があります。
- ステートメント網羅(statement coverage):すべての文を少なくとも一度実行する。
- 分岐網羅(branch coverage):すべての分岐(true/false)を両方実行する。
- 条件網羅(condition coverage)や決定条件網羅(MC/DC)など複合的な基準。
例(簡単なPythonコード):
def classify(x):
if x > 0:
return "pos"
elif x < 0:
return "neg"
else:
return "zero"
ホワイトボックス観点では,分岐網羅を満たすために入力
x=1, x=-1, x=0 のように明示的に各経路を通すテストを設計します。ブラックボックスでは仕様(正/負/ゼロ)に基づく同値クラスで考えますが,ホワイトボックスではコードの各分岐や条件を意識して網羅性を確保します。FAQ
Q1: ホワイトボックスとブラックボックスの決定的な違いは何ですか?
A1: ホワイトボックスは内部構造(コード)を参照してテストを設計し,ブラックボックスは外部仕様や入出力の観点でテストを設計します。
A1: ホワイトボックスは内部構造(コード)を参照してテストを設計し,ブラックボックスは外部仕様や入出力の観点でテストを設計します。
Q2: 同値分割や境界値分析はどちらの技法ですか?
A2: それらはブラックボックス技法です。入力空間を分割して代表値を選ぶ方法です。
A2: それらはブラックボックス技法です。入力空間を分割して代表値を選ぶ方法です。
Q3: 試験で迷ったらどう判断すればよいですか?
A3: 「内部」「外部」「入出力」などのキーワードで見分けます。内部やコードに触れている記述があればホワイトボックスを疑ってください。
A3: 「内部」「外部」「入出力」などのキーワードで見分けます。内部やコードに触れている記述があればホワイトボックスを疑ってください。
Q4: コードカバレッジはどのように測る?
A4: ツール(例:gcov, JaCoCo等)でステートメントや分岐の実行割合を測定し,網羅率を評価します。
A4: ツール(例:gcov, JaCoCo等)でステートメントや分岐の実行割合を測定し,網羅率を評価します。
関連キーワード: ホワイトボックステスト、ブラックボックステスト、同値分割、境界値分析、網羅基準、ステートメント網羅、分岐網羅、単体テスト、コードカバレッジ、条件網羅

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

