同値分割と境界値分析の図解

同値分割とは

同値分割(Equivalence Partitioning)は、テスト対象の入力範囲を「同じ振る舞いをする値のグループ」に分割し、 各グループから代表値を選んでテストする技法です。同じグループ内の値は同等の結果を生むと想定するため、 すべての値をテストする必要がなく、テストの効率化が図れます。

同値分割の考え方

例:年齢入力(有効な入力範囲:1歳以上120歳以下)
0 60 120 無効同値クラス 有効同値クラス(1歳~120歳) 無効同値クラス 0 60 121
無効同値クラス 有効同値クラス ○:代表値(テストケース)

同値分割の手順

  1. テスト対象の入力範囲を同値クラスに分割する
  2. 同値クラスを有効同値クラスと無効同値クラスに分類する
  3. 各同値クラスから代表値を選ぶ
  4. 選んだ代表値をテストケースとして実行する

境界値分析とは

境界値分析(Boundary Value Analysis)は、同値クラスの境界付近で不具合が発生しやすいという経験則に基づき、 境界値とその前後の値をテストする技法です。境界値分析は同値分割と組み合わせて使用することで、 効率的かつ効果的なテスト設計が可能になります。

境界値分析の考え方

例:年齢入力(有効な入力範囲:1歳以上120歳以下)
0 1 120 121 0 1 2 119 120 121 off点 on点 内部点 内部点 on点 off点 無効同値クラス 有効同値クラス(1歳~120歳) 無効同値クラス 下限境界 上限境界
境界値 on点:境界上の値 off点:境界外の値 内部点:境界内の値

境界値分析のポイント

  • on点:境界上の値(例:1歳、120歳)
  • off点:境界外の値(例:0歳、121歳)
  • 内部点:有効同値クラス内の値(例:2歳、119歳)
  • 境界付近ではプログラミングミスが発生しやすい(例:「以上」と「より大きい」の混同)
  • 通常、境界値の前後の値も含めてテストすることで不具合検出率が高まる

同値分割と境界値分析の関係

同値分割と境界値分析は相互補完的な関係にあり、組み合わせて使用することで効果的なテスト設計が可能になります。 同値分割は入力領域全体をカバーする効率的なテストに役立ち、境界値分析は不具合が発生しやすい箇所を重点的にテストします。

観点 同値分割 境界値分析
目的 テスト効率の向上 不具合検出率の向上
焦点 同等の振る舞いをする値のグループ 同値クラスの境界と境界付近の値
テストケース選定 各同値クラスから代表値を選ぶ 境界値とその前後の値を選ぶ
カバレッジ 入力領域全体 境界付近に集中
相互関係 互いに補完し合い、組み合わせることで効果的なテスト設計が可能

実践例:商品価格割引システム

以下の仕様を持つ商品価格割引システムを例に、同値分割と境界値分析を適用します。

同値分割の適用

0円 5,000円 10,000円 30,000円 割引なし 5%割引 10%割引 15%割引 2,500円 7,500円 20,000円 40,000円
代表値
2,500円
(割引なし)
代表値
7,500円
(5%割引)
代表値
20,000円
(10%割引)
代表値
40,000円
(15%割引)

境界値分析の適用

境界1 境界2 境界3 4,999円 5,000円 5,001円 9,999円 10,000円 10,001円 29,999円 30,000円 30,001円
境界1(5,000円)のテストケース:
off点
4,999円
(割引なし)
on点
5,000円
(5%割引)
内部点
5,001円
(5%割引)
境界2(10,000円)のテストケース:
off点
9,999円
(5%割引)
on点
10,000円
(10%割引)
内部点
10,001円
(10%割引)
境界3(30,000円)のテストケース:
off点
29,999円
(10%割引)
on点
30,000円
(15%割引)
内部点
30,001円
(15%割引)

同値分割と境界値分析の実践メリット

同値分割のメリット

  • テストケース数を大幅に削減できる
  • テスト範囲全体を効率的にカバーできる
  • 同等の振る舞いを示す値を整理できる
  • 効率的なテスト計画の立案に役立つ
  • テスト実施の時間と労力を削減できる

境界値分析のメリット

  • 不具合発生率の高い箇所を重点的にテストできる
  • 「以上/超える」「以下/未満」などの誤りを発見しやすい
  • 境界条件での動作を確実に検証できる
  • 効果的なテストケース選定が可能になる
  • バグが見つかる確率が高まる

両者を組み合わせる利点

  • 効率性(同値分割)と有効性(境界値分析)の両立
  • テスト範囲の網羅性を保ちながら、重要な境界値を重点的にテスト
  • リソースを効果的に配分し、最大の成果を得られる
  • システムの品質と信頼性の向上

© 2024 同値分割と境界値分析の図解