戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2012年 秋期 午前(科目A)48


問題文

ブラックボックステストに関する記述として、適切なものはどれか。

選択肢

テストデータの作成基準として、命令や分岐の網羅率を使用する。
被テストプログラムに冗長なコードがあっても検出できない。(正解)
プログラムの内部構造に着目し、必要な部分が実行されたかどうかを検証する。
分岐命令やモジュールの数が増えると、テストデータが急増する。

ブラックボックステストに関する記述【午前2 解説】

要点まとめ

  • 結論:ブラックボックステストは外部仕様や入出力に基づき動作を検証し、内部コードの実装詳細や冗長性は考慮しない手法です。
  • 根拠:テスト設計は等価クラステストや境界値分析など仕様から導かれ、命令網羅・分岐網羅などのコードカバレッジ指標は使用しません。
  • 差がつくポイント:仕様に基づく代表値と境界値を正確に選ぶこと。冗長なコード検出は静的解析やホワイトボックスで補う点を意識してください。

正解の理由

正解は です。ブラックボックステストは被テストシステムの外部的振る舞い(仕様どおりに入力から期待出力が得られるか)を検証します。内部の実装(例えば冗長なコードや未使用の分岐)は仕様の外側にあるため、外部からの入力と出力のみを観察するブラックボックス手法では検出できません。したがって「被テストプログラムに冗長なコードがあっても検出できない」という記述はブラックボックスの特性に合致します。

よくある誤解

  • 「網羅率(命令・分岐)を基準にテストデータを作る」は誤り:それはホワイトボックステストの手法で、内部実装の観点から設計します。
  • 「分岐やモジュールが増えると必ずテストが急増する」は文脈依存:内部構造に依存する白箱的観点では増えるが、ブラックボックスでは入力空間の設計次第で増加を抑えられます。
  • 「ブラックボックスでコードの品質(冗長性・未使用分岐)を確認できる」は誤り:その目的は静的解析やコードレビュー、ホワイトボックステストです。

解法ステップ

  1. ブラックボックステストの定義を思い出す(外部仕様・入出力重視、内部非考慮)。
  2. 各選択肢が「内部構造を見るか/外部振る舞いを見るか」を判定する。
  3. 正誤を照合:内部に着目する説明は×、外部振る舞いに関する説明は○。
  4. 最終的に「冗長コードは検出できない」を正解とする(外部からは見えない)。

選択肢別の誤答解説

  • ア: テストデータの作成基準として、命令や分岐の網羅率を使用する。
    → 誤り。命令網羅・分岐網羅はコードの内部構造を基準とするホワイトボックステストの概念です。ブラックボックスは仕様ベースの手法を用います。
  • : 被テストプログラムに冗長なコードがあっても検出できない。
    → 正解。ブラックボックスは外部からの入力と出力で振る舞いを評価するため、内部の冗長性や未使用の分岐は検出できません。
  • ウ: プログラムの内部構造に着目し、必要な部分が実行されたかどうかを検証する。
    → 誤り。これはホワイトボックステスト(構造基準テスト)の説明です。内部の実行経路やカバレッジを確認します。
  • エ: 分岐命令やモジュールの数が増えると、テストデータが急増する。
    → 文脈依存で誤解を招く記述。内部の分岐やモジュール数が増えればホワイトボックスではテストケースが増える傾向にありますが、ブラックボックスでは仕様に基づく設計でテスト数を工夫できます。

補足コラム

  • ブラックボックスの代表的なテスト設計技法:等価クラステスト、境界値分析、状態遷移テスト、決定表テストなど。これらは仕様を元に「代表的な入力」を選ぶため、テスト数を現実的に抑えつつ効果的にバグを見つけることができます。
  • 冗長コードや未使用分岐を検出したい場合は静的解析ツール(例:コードスメル検出、未到達コード検出)やホワイトボックステスト、コードレビューを併用するのが有効です。
  • 実務ではブラックボックスとホワイトボックスを組み合わせるグレーボックスアプローチや、CIでの自動テストと静的解析の併用が推奨されます。
簡単なブラックボックステスト例(Python)
# 仕様: 入力 n が偶数なら True、奇数なら False を返す関数
def is_even(n):
    return n % 2 == 0

# 等価クラステスト例
assert is_even(2) == True    # 偶数代表
assert is_even(3) == False   # 奇数代表
# 境界値として 0 や負数も確認
assert is_even(0) == True
assert is_even(-1) == False

FAQ

Q1: ブラックボックスで内部バグが一切見つからないのですか?
A1: いいえ。仕様違反や外部振る舞いの不一致は発見できますが、表面に出ない冗長コードや不要な分岐などは発見しにくいです。
Q2: ブラックボックスだけで十分な場合はありますか?
A2: ユーザ視点の受け入れテストや仕様テストでは有効ですが、安全性や性能、内部品質を保証するには他の手法も必要です。
Q3: テスト設計で優先すべきは何ですか?
A3: まずは重要な機能に対する仕様ベースの代表値と境界値を押さえ、リスクの高い箇所はホワイトボックスや静的解析で補強してください。

関連キーワード: ブラックボックステスト、ホワイトボックステスト、等価クラステスト、境界値分析、テスト設計、静的解析、グレーボックスアプローチ
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について