基本情報技術者 2016年 秋期 午前(科目A) 問48
問題文
整数1〜1,000を有効とする入力値が、1〜100の場合は処理Aを、101〜1,000の場合は処理Bを実行する入力処理モジュールを、同値分割法と境界値分析によってテストする。次の条件でテストするとき、テストデータの最小個数は幾つか。
〔条件〕
① 有効同値クラスの1クラスにつき、一つの値をテストデータとする。ただし、テストする値は境界値でないものとする。
② 有効同値クラス、無効同値クラスの全ての境界値をテストデータとする。
選択肢
ア:5
イ:6
ウ:7
エ:8(正解)
入力処理の同値分割と境界値分析【午前2 解説】
要点まとめ
- 結論:最小のテストデータ数は 8 個。境界値(0,1,100,101,1000,1001)6 個と非境界の有効同値クラス値2個で合計8個。
- 根拠:有効同値クラスは2つ(1〜100, 101〜1000)で非境界値を各1個、さらに有効・無効各クラスの全境界値を網羅する規則による。
- 差がつくポイント:整数入力では隙間がないため 100 と 101 が別境界、無効側の 0 と 1001 も境界値として必須になる点を見落としがち。
正解の理由
設問の条件を順に適用すると次のようになります。まず有効同値クラスは 1〜100 と 101〜1000 の2つです。条件①により各有効クラスから境界でない代表値を1つずつ選びます(例:50, 500)。条件②では「有効同値クラス、無効同値クラスの全ての境界値」をテストするため、境界値は次の6つになります:0(無効上限), 1(有効下限), 100(有効上限/境界), 101(次の有効下限/境界), 1000(有効上限), 1001(無効下限)。この6個に条件①で選ぶ2個を加えて合計8個となるため、正解は エ です。
よくある誤解
- 「100 と 101 の間は空白だから境界は1つだ」と考え、100と101の両方を境界値に含めない誤り。整数では両方が境界になります。
- 無効同値クラスを1つしか想定して 0 のみを考えるが、上限側の 1001 も別の無効クラスの境界である点を忘れるミス。
- 条件①の「境界値でないもの」を無視して境界値を代表値に使ってしまい、重複カウントや不足を招くケース。
解法ステップ
- ドメインと有効範囲を整理:有効は整数 1〜1000、処理分割は 1〜100(A)と 101〜1000(B)。
- 同値クラスを列挙:有効同値クラス={1〜100, 101〜1000}、無効同値クラス={…≤0, ≥1001}(少なくとも下側と上側)。
- 条件①適用:各有効同値クラスから境界でない代表値を1つずつ選択(計2個)。
- 条件②適用:有効・無効すべての同値クラスの境界値を列挙する(0,1,100,101,1000,1001 の6個)。
- 合計:境界6 + 非境界代表2 = 8 個が最小。
選択肢別の誤答解説
- ア: 5 — 境界だけ(4個程度)や代表値の取り扱いを誤った想定。問題の条件を満たしていない。
- イ: 6 — 境界値6個のみを数え、条件①で要求される各有効同値クラスの非境界代表2個を未追加。
- ウ: 7 — 境界6個のうち1つを代表値として兼用したり、無効クラスの境界を片側しか数えない誤り。
- エ: 8 — 条件①と条件②を正しく組み合わせた合計で、これが正解です(エ)。
補足コラム
- 境界値分析では「±1 の値」を検討することが多いですが、整数ドメインでは隣接する値自体が境界になり得ます。
- 同値分割はクラスの「代表値」を選ぶ手法で、境界値テストはその代表値とは別に境界を必ず検証します。両手法を組み合わせる際は代表値が境界値と重ならないよう注意が必要です。
- 実務では入力が整数以外(文字列や浮動小数)であれば境界の取り方が変わるため、データ型を明示して考えることが重要です。
FAQ
Q1: 「0 は有効範囲に入らないが本当に境界値か?」
A1: はい。無効同値クラス(≤0)と有効同値クラス(1〜100)の境界は 0 と 1 の両方であり、設問は無効・有効双方の境界値をテストするよう求めています。
A1: はい。無効同値クラス(≤0)と有効同値クラス(1〜100)の境界は 0 と 1 の両方であり、設問は無効・有効双方の境界値をテストするよう求めています。
Q2: 「100 と 101 の間に値がないなら境界値は1つで良い?」
A2: 整数では 100 と 101 はそれぞれ上下のクラスの端点であり、両方が境界値です。両方をテスト対象に含める必要があります。
A2: 整数では 100 と 101 はそれぞれ上下のクラスの端点であり、両方が境界値です。両方をテスト対象に含める必要があります。
Q3: 「代表値として境界値を選べばテスト数は減らせるか?」
A3: 条件①で「代表値は境界値でないもの」と明示されているため、この設問では境界値と代表値は重ねられません。したがって削減はできません。
A3: 条件①で「代表値は境界値でないもの」と明示されているため、この設問では境界値と代表値は重ねられません。したがって削減はできません。
関連キーワード: 同値分割法、境界値分析、ブラックボックステスト、入力検証、テスト設計、境界値テスト、オフバイワン、テストケース最小化

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

