ホーム > システムアーキテクト試験 > 2010年
システムアーキテクト試験 2010年 午前2 問08
三つの整数型の入力データA, B, Cが、A≧15かつB≧10かつC≧5のときだけ入カデータを処理する仕様のプログラムを、同値分割法によってテストする。このときの最少のデータの組合せとして適切なものはどれか。ここで、(x, y, z)は、入力データAの値がx, Bの値がy, Cの値がzであることを表すものとする。
イ:(0, 0, 0), (0, 0, 10), (0, 15, 0), (20, 0, 0)
ウ:(0, 15, 10), (20, 15, 0), (20, 0, 10), (20, 15, 10)(正解)
ア:(0, 0, 0), (20, 15, 10)
エ:(0, 0, 0), (0, 0, 10), (0, 15, 0), (20, 0, 0), (20, 15, 0), (20, 0, 10), (20, 15, 10)
解説
三つの整数型の入力データの同値分割法によるテスト設計【午前2 解説】
要点まとめ
- 結論:条件を満たす「A≧15かつB≧10かつC≧5」の同値クラスと、それぞれの条件を満たさないクラスを網羅するテストデータが必要です。
- 根拠:同値分割法は入力条件を満たすクラスと満たさないクラスに分け、代表値でテストすることで効率的に網羅性を確保します。
- 差がつくポイント:各変数の境界条件を含む同値クラスを正しく分割し、最小限の組み合わせで全パターンをカバーできているかが重要です。
正解の理由
正解はウです。
理由は、A, B, Cそれぞれの条件「A≧15」「B≧10」「C≧5」を満たす同値クラスと満たさない同値クラスを分け、かつそれらの組み合わせでテストケースを作成しているためです。
具体的には、
理由は、A, B, Cそれぞれの条件「A≧15」「B≧10」「C≧5」を満たす同値クラスと満たさない同値クラスを分け、かつそれらの組み合わせでテストケースを作成しているためです。
具体的には、
- (0, 15, 10):Aが条件外、BとCは条件内
- (20, 15, 0):Cが条件外、AとBは条件内
- (20, 0, 10):Bが条件外、AとCは条件内
- (20, 15, 10):全て条件内
これにより、各条件の境界をまたぐパターンを網羅し、条件を満たす場合と満たさない場合の両方を効率的にテストできます。
よくある誤解
- 全ての変数を0や条件内の値だけでテストすれば十分と考えがちですが、条件を満たさない場合も必ずテストする必要があります。
- 境界値だけでなく、条件を満たすか否かの同値クラスを意識しないとテスト漏れが発生します。
解法ステップ
- 条件を満たす同値クラスと満たさない同値クラスを各変数ごとに分割する。
- A: 「A≧15」(条件内) と「A<15」(条件外) に分ける。
- B: 「B≧10」(条件内) と「B<10」(条件外) に分ける。
- C: 「C≧5」(条件内) と「C<5」(条件外) に分ける。
- 各同値クラスの代表値を選ぶ(例:条件内は境界値以上、条件外は境界値未満の値)。
- 各変数の条件内・外の組み合わせを網羅する最小限のテストケースを作成する。
- 不要な重複を避けつつ、全パターンをカバーできているか確認する。
選択肢別の誤答解説
- ア: (0, 0, 0), (20, 15, 10)
→ 条件外の組み合わせが1つしかなく、BやCだけ条件外のケースが抜けている。 - イ: (0, 0, 0), (0, 0, 10), (0, 15, 0), (20, 0, 0)
→ 条件を全て満たすケースがないため、処理が実行されるパターンがテストできない。 - ウ: (0, 15, 10), (20, 15, 0), (20, 0, 10), (20, 15, 10)
→ 各条件の内外を網羅し、最小限の組み合わせでテスト可能。 - エ: (0, 0, 0), (0, 0, 10), (0, 15, 0), (20, 0, 0), (20, 15, 0), (20, 0, 10), (20, 15, 10)
→ 網羅性は高いが、テストケース数が多く最小限ではない。
補足コラム
同値分割法はテスト設計の基本手法の一つで、入力値の範囲を「同値クラス」に分割し、代表値でテストすることで効率的にバグを検出します。
特に複数条件がANDで結ばれている場合は、各条件の内外を組み合わせてテストケースを作成することが重要です。
また、境界値分析と組み合わせることでより効果的なテスト設計が可能です。
特に複数条件がANDで結ばれている場合は、各条件の内外を組み合わせてテストケースを作成することが重要です。
また、境界値分析と組み合わせることでより効果的なテスト設計が可能です。
FAQ
Q: 同値分割法でなぜ条件の内外を分けるのですか?
A: 条件を満たす場合と満たさない場合でプログラムの動作が異なるため、両方をテストして動作を検証する必要があるからです。
A: 条件を満たす場合と満たさない場合でプログラムの動作が異なるため、両方をテストして動作を検証する必要があるからです。
Q: なぜ全ての組み合わせをテストしないのですか?
A: 全ての組み合わせは膨大になり非効率なため、同値クラスの代表値を使い最小限のテストケースで網羅性を確保します。
A: 全ての組み合わせは膨大になり非効率なため、同値クラスの代表値を使い最小限のテストケースで網羅性を確保します。
関連キーワード: 同値分割法, テスト設計, 境界値分析, 入力条件, テストケース最適化