基本情報技術者 2018年 春期 午前(科目A) 問48
問題文
ブラックボックステストのテストデータの作成方法のうち、最も適切なものはどれか。
選択肢
ア:稼働中のシステムから実データを無作為に抽出し、テストデータを作成する。
イ:機能仕様から同値クラスや限界値を識別し、テストデータを作成する。(正解)
ウ:業務で発生するデータの発生頻度を分析し、テストデータを作成する。
エ:プログラムの流れ図を基に、分岐条件に基づいたテストデータを作成する。
🔒 解説は解答すると表示されます
同値クラステストと境界値分析【午前解説】
正解の理由
正解: イ
ブラックボックステストは内部構造を見ずに「仕様(機能要件)」を基にテストを設計します。選択肢イの「機能仕様から同値クラスや限界値を識別し、テストデータを作成する」は典型的なブラックボックス設計技法(同値クラ ス分割、境界値分析)そのものであり、仕様上の代表値と境界を効率よく検証できます。これにより仕様違反や境界に起因するバグを高い確率で見つけられるため、最も適切な方法です。
ブラックボックステストは内部構造を見ずに「仕様(機能要件)」を基にテストを設計します。選択肢イの「機能仕様から同値クラスや限界値を識別し、テストデータを作成する」は典型的なブラックボックス設計技法(同値クラ ス分割、境界値分析)そのものであり、仕様上の代表値と境界を効率よく検証できます。これにより仕様違反や境界に起因するバグを高い確率で見つけられるため、最も適切な方法です。
解法ステップ
- 問題文のキーワード「ブラックボックステスト」を確認し、内部構造ではなく仕様ベースの手法を選ぶと判断。
- 各選択肢を「仕様ベースか」「運用データか」「コード構造ベースか」で分類する(イが仕様ベース、アは実運用データ、ウは発生頻度、エはコード/白箱)。
- ブラックボックスの代表的手法(同値クラス分割、境界値分析)に一致する選択肢を選ぶ。
- 必要なら境界値や無効入力の網羅を求める記述があるかで確信度を高める。
選択肢別の誤答解説
- ア: 稼働中のシステムから実データを無作為に抽出する
- メリット: 実際の使用例を反映できるが、個人情報や機密の問題、サンプル偏り、境界値や異常値が十分含まれない点で不適切。ブラックボックスの基本設計法ではない。
- イ: 機能仕様から同値クラスや限界値を識別し、テストデータを作成する
- 正解。仕様に基づく代表値と境界値を設計する典型的なブラックボックス手法であり、最も汎用性と検出効率が高い。
- ウ: 業務で発生するデータの発生頻度を分析し、テストデータを作成する
- オペレーショナルプロファイルは運用負荷や信頼性試験では有効だが、仕様の境界やエラー条件検出を目的とする一般的なブラックボックス設計の「最適解」ではない。
- エ: プログラムの流れ図を基に、分岐条件に基づいたテストデータを作成する
- これはホワイトボックス/構造ベースの手法(分岐網羅等)に該当し、ブラックボックスの定義と矛盾するため不適切。
よくある誤解
- 実データを無作為抽出すれば十分: 実データは偏りや個人情報の問題、境界値の網羅不足があり、無作為抽出だけでは境界やエラー条件を確実に検出できません。
- 発生頻度重視が常に正解: 頻度分析(オペレーショナルプロファイル)は運用時の重要度評価に有効ですが、仕様の境界や稀な異常値検出には向きません。
- プログラムの流れ図=ブラックボックス手法: 流れ図や分岐条件に基づく設計はホワイトボックス(構造基準)の手法で、ブラックボックスとは目的と適用場面が異なります。
補足コラム
同値クラス分割と境界値分析の簡単な例: 入力が整数で許容範囲が1〜100の場合、同値クラスは「<1」「1〜100」「>100」と分けられ、それぞれから代表値(例えば 0, 50, 101)を選びます。境界値では境界の前後を重視し、0, 1, 100, 101 のように境界そのものとその直前・直後をテストします。
例(Pythonで簡単に境界値テストデータを作る):
例(Pythonで簡単に境界値テストデータを作る):
# 許容範囲 1..100 の境界値を生成
bounds = [1, 100]
test_values = [bounds[0]-1, bounds[0], bounds[1], bounds[1]+1] # [0,1,100,101]
print(test_values)
また文字列長制約(例: 長さ 5〜10)では長さの境界(4,5,10,11)に注意してテストします。複合条件がある場合は決定表やペアワイズなどの組合せ手法を併用すると効率が良くなります。
FAQ
Q: 本番データを使ってもいいですか?
A: 匿名化・整形した上で、偏りを補う目的で使うのは有益ですが、無作為抽出だけで網羅的な境界検証はできないため、同値クラス・境界値の設計を優先してください。
A: 匿名化・整形した上で、偏りを補う目的で使うのは有益ですが、無作為抽出だけで網羅的な境界検証はできないため、同値クラス・境界値の設計を優先してください。
Q: 業務発生頻度(オペレーショナルプロファイル)は全く使えないのですか?
A: 使えます。信頼性評価や運用上で重要なケースを優先する際に有効ですが、仕様の境界やエラー条件検出を主目的にする設計法ではありません。
A: 使えます。信頼性評価や運用上で重要なケースを優先する際に有効ですが、仕様の境界やエラー条件検出を主目的にする設計法ではありません。
Q: 単体テストではエが有効なのでは?
A: はい。ホワイトボックス(分岐網羅・条件網羅)は主に単体テストやコード品質向上で有効ですが、問題は「ブラックボックスのテストデータ作成方法」を問うている点です。
A: はい。ホワイトボックス(分岐網羅・条件網羅)は主に単体テストやコード品質向上で有効ですが、問題は「ブラックボックスのテストデータ作成方法」を問うている点です。
Q: テストケースはどれだけ作れば良いですか?
A: 最小限は各同値クラス1件+境界値(前後含む)で始め、複合条件はリスクに応じて決定表やペアワイズで拡張してください。
A: 最小限は各同値クラス1件+境界値(前後含む)で始め、複合条件はリスクに応じて決定表やペアワイズで拡張してください。
関連キーワード: ブラックボックステスト、同値クラス、限界値分析、境界値分析、オペレーショナルプロファイル、ホワイトボックステスト、テスト設計、テストデータ作成

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

