メインコンテンツへスキップ
SDETRole
SDETRole

用語集 · テスト設計

同値分割

英語: Equivalence partitioning

別名: 同値分割法, 同値クラス, 同値クラステスト, 同値分析

定義

システムが同じように扱うべき入力をグループ(同値クラス)に分け、各グループから代表値を 1 つずつ選んでテストするテスト設計技法です。

同値分割(同値クラス分割とも呼ばれます)は、取り得る入力を、どの値でも同じ振る舞いになるはずのパーティションに分ける技法です。パーティション内の 1 つの値が正しく動けば他の値も動くとみなし、1 つが失敗すれば他もおそらく同じように失敗すると考えます。そのため、すべての値をテストする代わりに、パーティションごとに代表値を 1 つテストします。

具体例:18 歳から 60 歳まで受け付ける

フォームが 18 以上 60 以下の年齢を整数で受け付けるとします。

パーティション 有効? 代表値 期待結果
18 未満 無効 10 拒否:「18 歳以上である必要があります」
18〜60 有効 35 受け付け
60 より大きい 無効 75 拒否
数値以外 無効 abc 拒否:「数値を入力してください」
空 無効 (空欄) 拒否:「年齢は必須です」
小数 無効 25.5 拒否
負の数 無効 -5 拒否

概念上は 7 つのテストで入力空間全体をカバーできます。さらに境界値分析で、欠陥が最も起こりやすい数値パーティションの端にある 17、18、60、61 を追加します。この 2 つの技法はほぼ常にセットで使われます。

出力やその他の入力の分割

パーティションは数値に限りません。

  • カテゴリ: 配送先の国フィールドは、国内、EU、その他の地域、禁輸対象国に分けられ、それぞれルールが異なるかもしれません。
  • 出力: 税計算機に 3 つの税率区分があるなら、各区分に入る入力を選びます。
  • 形式: メールアドレスは、有効、@ なし、ドメインなし、長すぎる、に分けられます。

無効パーティションは 1 つずつテストする

フォームに複数のフィールドがある場合、有効パーティションは自由に組み合わせてかまいませんが、無効パーティションは他のフィールドをすべて有効にしたうえで 1 つずつテストします。無効な年齢と無効なメールアドレスを同時に送信すると、最初のバリデーションエラーが 2 つ目を隠してしまい、両方のチェックが機能しているかどうか判断できません。

よくある間違い

  • パーティションの誤り。 パーティションは仕様と、システムの実際の振る舞いから導きます。フォームがすべて受け付けるとしても、コードが 18〜25 歳を別扱いしている(たとえば保険料が異なる)なら、それは別のパーティションです。
  • 有効パーティションだけ。 入力処理の欠陥の大半は無効パーティションに潜んでいます。
  • パーティションで止める。 パーティションごとに 1 つの値では、端での off-by-one エラーは捉えられません。境界値を追加します。

キーワードを入力すると SDETRole 全体を検索できます。

Pagefind による全文検索 · ブラウザ内で動作します 検索ページを開く →