ITパスポート 2018年 秋期 問44
問題文
プログラムのテスト手法に関して、次の記述中のa、bに入れる字句の適切な組合せはどれか。
プログラムの内部構造に着目してテストケースを作成する技法を[ a ]と呼び、[ b ]において活用される。

選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
プログラムのテスト手法(内部構造に着目)【ITパスポート 解説】
正解の理由
設問は「プログラムの内部構造に着目してテストケースを作成する技法」を問うています。プログラムの内部構造(ソースコードの分岐や処理の流れ)に基づいてテストする方法は「ホワイトボックステスト(white‑box test:内部構造を見て行うテスト)」と呼びます。また、このホワイトボックス手法は、プログラムの最小単位を対象にする「単体テスト(unit test:個々の部品や関数を単独で検証するテスト)」で活用されるのが一般的です。したがって、a は「ホワイトボックステスト」、b は「単体テスト」であり、選択肢のうち エ が正解になります。
解法ステップ
- 設問文で注目するキーワードを探す:「内部構造に着目」→内部を見るテスト手法を探す。
- テストレベル(単体・結合・システム等)と手法(ホワイトボックス/ブラックボックス)を対応づける。
- 「内部構造を見る」=ホワイトボックス。ホワイトボックスは主にコードを知っている開発者が行うため、単体テストと親和性が高い。
- 選択肢を照合して、ホワイトボックス+単体テストの組合せ(エ)を選ぶ。
選択肢別の誤答解説
-
ア(a: ブラックボックステスト、b: システムテスト)
ブラックボックステスト(black‑box test:仕様や入出力に基づくテスト)は内部構造を見ずに振る舞いだけを確認します。システムテスト(system test:システム全体の動作確認)と組み合わせることは多いですが、設問の「内部構造に着目する」は当てはまりません。 -
イ(a: ブラックボックステスト、b: 単体テスト)
単体テストでブラックボックス手法を使うことも可能ですが、設問は「内部構造に着目してテストケースを作成する技法」を問うため、ブラックボックスは誤りです。単体テストは通常ホワイトボックスで行われます。 -
ウ(a: ホワイトボックステスト、b: システムテスト)
ホワイトボックスは内部構造を利用する手法として正しいですが、システムテストはシステム全体を外側から評価するため、ホワイトボックスを中心に行うことは稀です(部分的に実施することはあるが一般的な組合せではない)。設問の最も適切な組合せは単体テストとの組合せです。 -
エ(a: ホワイトボックステスト、b: 単体テスト)
ホワイトボックス(内部構造重視)と単体テスト(個々のモジュールや関数を検証)は最も整合します。よってこの組合せが正解です。
よくある誤解
-
「単体テスト=必ずホワイトボックス」は誤り
単体テストは主にホワイトボックスで行われますが、仕様のみを使ったブラックボックス的な単体テストもあり得ます。違いは「どの情報を使うか」です。 -
「システムテストはブラックボックスだけで行う」は誤り
システムテストの多くは外部仕様に基づくブラックボックスですが、内部の負荷やセキュリティを確認するために内部情報を使うこと(ホワイトボックス的手法)もあります。 -
用語を混同しやすい:テストの「レベル(単体・結合・システム)」と「手法(ホワイト/ブラック)」は別概念です。問題は両者を組み合わせて問うことが多いので区別して覚えましょう。
補足コラム
-
テストの主なレベル(短く)
- 単体テスト(unit test):関数やクラスなど小さな単位を検証。開発者が実施。
- 結合テスト(integration test):複数のモジュールを組み合わせた動作を検証。
- システムテスト(system test):システム全体を実際の利用環境に近い形で検証。
- 受入テスト(acceptance test):利用者側や顧客が要件を満たしているか確認するテスト。
-
テスト手法の違い(簡潔)
- ホワイトボックステスト(white‑box test):ソースコードの制御フローや条件分岐を基準にテストケースを作る。代表的な指標に「命令網羅」「判定網羅」などがある。
- ブラックボックステスト(black‑box test):仕様書や要件(入出力)に基づき、外から見た振る舞いだけでテストケースを作る。代表的な技法に「同値クラステスト」「境界値分析」がある。
-
簡単な例(Python)
def classify(n): if n < 0: return "neg" elif n == 0: return "zero" else: return "pos"この関数に対してホワイトボックス的にテストを作ると、分岐(n<0、n==0、else)をすべて通るテストケースを用意します(例:-1, 0, 1)。これがホワイトボックス+単体テストの典型例です。
FAQ
Q1. ホワイトボックステストとブラックボックステストのどちらが「良い」ですか?
A1. どちらも目的が違うため両方必要です。ホワイトボックスはコードの欠陥を見つけやすく、ブラックボックスは仕様違反や実際の振る舞いを評価できます。
A1. どちらも目的が違うため両方必要です。ホワイトボックスはコードの欠陥を見つけやすく、ブラックボックスは仕様違反や実際の振る舞いを評価できます。
Q2. 単体テストは誰が行いますか?
A2. 主に開発者が行います。自動化しやすく、CI(継続的インテグレーション)に組み込んで頻繁に実行します。
A2. 主に開発者が行います。自動化しやすく、CI(継続的インテグレーション)に組み込んで頻繁に実行します。
Q3. 「ホワイトボックス=難しい」のは本当ですか?
A3. 内部ロジックを理解する必要があるため、コードの知識が必要ですが、基本は「分岐や処理の抜け」を意識すれば取り組めます。徐々に経験で学べます。
A3. 内部ロジックを理解する必要があるため、コードの知識が必要ですが、基本は「分岐や処理の抜け」を意識すれば取り組めます。徐々に経験で学べます。
関連キーワード: 単体テスト、ホワイトボックステスト、ブラックボックステスト、システムテスト、テスト設計、結合テスト、網羅基準、境界値分析

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

