基本情報技術者 2017年 秋期 午前(科目A) 問49
問題文
ブラックボックステストに関する記述のうち、適切なものはどれか。
選択肢
ア:テストデータの作成基準として、命令や分岐の網羅率を使用する。
イ:被テストプログラムに冗長なコードがあっても検出できない。(正解)
ウ:プログラムの内部構造に着目し、必要な部分が実行されたかどうかを検証する。
エ:分岐命令やモジュールの数が増えると、テストデータが急増する。
ブラックボックステストに関する記述【午前2 解説】
要点まとめ
- 結論→ブラックボックステストは仕様(要求・振る舞い)に基づく入出力検証で、内部の冗長コードや命令網羅率は評価できません。
- 根拠→命令網羅率や分岐網羅などの指標はプログラム内部の実行経路を対象とするホワイトボックスの概念だからです。
- 差がつくポイント→等価クラステストや境界値分析、状態遷移テストで仕様の境界や例外振る舞いを重点的に検証すると得点差が出ます。
正解の理由
正解は イ です。ブラックボックステストは外部仕様(要求仕様、機能仕様)に基づいて入力と出力の整合性を確認する手法であり、ソースコードや内部構造を見ないため、プログラム内に冗長なコード(不要な処理や実行されないデッドコード)があっても、それ自体を検出できません。冗長コードが外部の振る舞いに影響しなければ、ブラックボックスの観点では検出対象外だからです。
よくある誤解
- 「網羅率=テストの良さ」は誤り:網羅率(命令網羅、分岐網羅など)はホワイトボックスで使う指標で、ブラックボックスのテストケース設計とは別です。
- 「分岐が増えれば必ずブラックボックスのテストケースも急増する」は短絡的:実装上の分岐数と仕様上のテスト観点は一致しない場合があり、仕様から抽出されるテスト数が決まります。
- 「内部構造を見なくても冗長コードは見つかる」は誤り:冗長コードは内部の無駄な命令であり、外部振る舞いに影響しない限りブラックボックスでは分かりません。
解法ステップ
- 問題文が対象とする「ブラックボックステスト」の定義を頭に置く(外部仕様ベース、内部未参照)。
- 各選択肢が「内部構造に関する記述」か「外部振る舞いに関する記述」かを判定する。
- 内部構造(命令網羅、分岐網羅、実行経路など)に関する記述はブラックボックスではなくホワイトボックスに該当するため除外する。
- 残った選択肢の中で、ブラックボックスの特徴(入力→出力、機能検証)と合致するものを選ぶ。
選択肢別の誤答解説
- ア: テストデータの作成基準として、命令や分岐の網羅率を使用する。
→ 誤り。命令網羅率や分岐網羅はソースコードを前提とするホワイトボックステストの指標で、ブラックボックスでは使用しません。 - イ: 被テストプログラムに冗長なコードがあっても検出できない。
→ 正解。ブラックボックスは外部仕様に基づき入出力を検証するため、内部に存在する冗長コード(実行されない、または振る舞いに影響しないもの)は検出対象になりません。 - ウ: プログラムの内部構造に着目し、必要な部分が実行されたかどうかを検証する。
→ 誤り。これはホワイトボックス(構造的)テストの説明であり、ブラックボックスの定義とは逆です。 - エ: 分岐命令やモジュールの数が増えると、テストデータが急増する。
→ 誤り(問題文の要求に対して不適切)。分岐やモジュールの増加は実装複雑度を高めホワイトボックスでの網羅テストケース増加を招くが、ブラックボックスでは仕様の複雑さに依存するため一概に言えません。
補足コラム
ブラックボックステストでよく使う設計技法には等価クラステスト、境界値分析、状態遷移テスト、決定表テストなどがあります。これらは仕様から入力の代表値や境界条件、状態ごとの振る舞いを抽出してテストケースを作るため、実装に依存せずユーザ視点で不具合を見つけやすい利点があります。一方、コードのカバレッジや隠れた死コードを検出するにはホワイトボックステスト(ステートメント網羅、分岐網羅、条件網羅など)を併用するのが効果的です。
FAQ
Q1: 冗長コードがあるとバグになるのでは?
A1: 冗長コード自体は必ずしもバグではなく、振る舞いに影響しないならブラックボックスでは検出されません。パフォーマンスや保守性の観点でホワイトボックスやコードレビューで対処します。
A1: 冗長コード自体は必ずしもバグではなく、振る舞いに影響しないならブラックボックスでは検出されません。パフォーマンスや保守性の観点でホワイトボックスやコードレビューで対処します。
Q2: ブラックボックスはどの段階で使うべきですか?
A2: 結合テスト、システムテスト、受け入れテストなど仕様確認が目的の段階で有効です。単体レベルではホワイトボックスとの併用が一般的です。
A2: 結合テスト、システムテスト、受け入れテストなど仕様確認が目的の段階で有効です。単体レベルではホワイトボックスとの併用が一般的です。
Q3: 網羅率が低くても合格できる?
A3: 網羅率はホワイトボックスの指標なので、要件に対するテストカバレッジやリスク評価に基づいて適切に組み合わせることが重要です。
A3: 網羅率はホワイトボックスの指標なので、要件に対するテストカバレッジやリスク評価に基づいて適切に組み合わせることが重要です。
Q4: 実装の変更でブラックボックスのテストが不要になることは?
A4: 実装が変わっても外部仕様が同じであれば基本的なブラックボックスのテストは有効ですが、回帰テストで確認する必要があります。
A4: 実装が変わっても外部仕様が同じであれば基本的なブラックボックスのテストは有効ですが、回帰テストで確認する必要があります。
関連キーワード: ブラックボックステスト、ホワイトボックステスト、等価クラステスト、境界値分析、状態遷移テスト、網羅率、冗長コード、回帰テスト

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

