境界値分析と等価分割

⚡ スマートサマリー

同値分割と境界値分析は、大きな入力範囲を同値クラスに圧縮し、分割境界をテストするブラックボックステスト手法であり、有効な入力と無効な入力の両方に対して効率的なカバレッジで強力な欠陥検出を実現します。

  • パーティション入力: 重複を排除するために、値を有効なクラスと無効なクラスに分類します。
  • Target 境界: 最小値、最小値付近の値、公称値、最大値付近の値、および最大値をテストします。
  • 両方を組み合わせる: エッジ欠陥については、まず同値分割法を用い、次に境界値解析法を用いる。
  • カバー範囲を最大化する: 各クラスにつき1つの値を用いることで、同等の入力すべてに対する動作を検証できます。
  • AIを活用する Generators: AIツールは、パーティションの検出と境界ケースの作成を自動化します。

境界値分析の5点モデル

時間と組み合わせの制約により、網羅的なテストはめったに実行できません。同値分割と境界値分析は、グループ分けによってこの問題を解決します。ping 類似の入力データを用い、エッジ部分をターゲットにすることで、より少ないケースでより強力なカバレッジを実現する。

同値分割とは何ですか?

等価分割 (同値クラス分割またはECPとも呼ばれる)は、入力データを同値な値のグループに分割するブラックボックス手法です。テスターは、ソフトウェアがすべてのメンバーに対して同じように動作すると仮定して、各クラスから代表例を1つ選択します。

  • 入力ドメインを有効な同値類と無効な同値類に分割します。
  • すべての場合に適用されます テストのレベル—ユニット、統合、システム、および受け入れ。

境界値分析とは何ですか?

境界値分析 (BVA)範囲チェックとも呼ばれるBVAは、各同値クラスの両端を検証します。欠陥は範囲の限界に集中するため、BVAは次の5つの重要なポイントを対象とします。

  1. 最小
  2. 最低値をわずかに上回る
  3. 公称値
  4. 最大値のすぐ下
  5. 最大

境界値分析の5点モデル

BVAは同値分割を補完するものであり、クラスが定義されると、その境界値がオフバイワンやエッジバグとして顕在化する。

なぜ同値分割と境界値分析を用いるのか?

組み合わせが多すぎて網羅的にテストできない場合、賢明なテスト選択が不可欠です。これらの手法には次の3つの利点があります。

  1. 大量のテストケースを、扱いやすい大きさに圧縮する。
  2. 有効性を損なうことなく、テストデータを選択するための明確なルールを提供する。
  3. 数値変数を多数含む、計算負荷の高いアプリケーションに適しています。

同値分割の実行方法(例)

  • 下記の「ピザを注文する」テキストボックスをご覧ください。
  • 数量1~10は有効です。成功メッセージが表示されます。
  • 数量11~99は無効です。 “ピザは10枚までしか注文できません”.
ピザの注文:

試験条件:

  1. 10を超える数値はすべて無効です。
  2. 1未満の数値はすべて無効です。
  3. Numbers 1~10は有効です。
  4. -100のような3桁の数字はすべて無効です。

すべての値をテストすると、100以上のケースが発生します。同値分割では、動作が同一のドメインをクラスにグループ化します。

ピザ入力に対する同値分割グループ

これらのグループは 等価クラス各クラスにつき1つの値を選択します。その値が合格すれば、他のすべての値も合格となります。その値が不合格であれば、クラス全体が不合格となります。

同値類の代表値

境界値解析の実施方法(例)

BVAは、同じPizzaフィールドを使用して、名目値ではなくパーティションの境界をチェックします。テスターは、有効な境界と無効な境界を網羅する0、1、10、11を評価します。

ピザ入力に対する境界値分析

1から10までの値を入力として受け入れる場合、境界テストケースは次のようになります。

テストシナリオ Descriptexpression CMS 期待される結果
境界値 = 0 システムは受け入れるべきではありません
境界値 = 1 システムは受け入れる必要があります
境界値 = 2 システムは受け入れる必要があります
境界値 = 9 システムは受け入れる必要があります
境界値 = 10 システムは受け入れる必要があります
境界値 = 11 システムは受け入れるべきではありません

同値分割と境界値分析の比較

どちらも検査量を削減するが、焦点とタイミングが異なる。

側面 等価分割 境界値分析
フォーカス 同等の入力のグループ 各グループのエッジ
データの選択 クラスごとに1つの値 最小値、最小値付近、公称値、最大値付近、最大値
ベスト 重複するケースを減らす わずかな欠陥の発見
注文 最初に適用 次に適用

例:パスワードフィールドの検証

6~10文字を入力できるパスワード欄は、0~5文字、6~10文字、11~14文字の3つの区分に分けられ、それぞれの区分内で同等の結果が得られます。

パスワードを入力する:
# テストシナリオ 期待される結果
1 0~5文字を入力してください システムは受け入れるべきではありません
2 6~10文字を入力してください システムは受け入れる必要があります
3 11~14文字を入力してください システムは受け入れるべきではありません

同値分割とBVAのベストプラクティス

検査数を管理しつつ、検査対象範囲をしっかりと維持するために、以下の手順に従ってください。

  • すべてのドメインをマッピングする: まず、有効なパーティション、無効なパーティション、および特殊なケースのパーティションを一覧表示します。
  • 各制限値の両側をテストする: オフバイワンエラーを検出するために、値のすぐ内側とすぐ外側の値を含めてください。
  • テクニックを組み合わせる: 複雑なロジックには、決定表や状態遷移テストと組み合わせて使用​​します。
  • エッジケースを自動化する: 回帰分析スイートが常に一貫して実行されるように、境界値をパラメータ化する。

主要なポイント(要点)

  • 同値分割は類似した入力をグループ化します。クラスごとに1つの値で十分です。
  • 境界値分析は、分割境界と有効/無効な境界を検証します。
  • どちらも、数値フィールドまたは範囲ベースのフィールドに対するブラックボックス的な手法です。
  • これらを組み合わせることで、欠陥検出の質を損なうことなく、テスト量を削減できる。

境界値分析と等価分割テストのビデオ

詳しくはこちら こちら ビデオにアクセスできない場合

よくあるご質問

同値分割では、各クラスから代表例を1つ選び、境界値分析では各境界における極値を対象とします。分割によってデータ量を削減し、境界値分析によって限界欠陥を検出します。

同値分割は、ソースコードにアクセスすることなく入出力動作に焦点を当てるため、ブラックボックス的な手法です。テスターは仕様から分割を導き出すため、ユニットテスト、統合テスト、システムテスト、受け入れテストの各レベルに適用されます。

はい。どちらも以下に適用されます。 APIテストパラメータやペイロードフィールドには、多くの場合、数値範囲や長さの制限が設けられています。テスターは、有効な入力、無効な入力、および境界となる入力に対してパーティションを定義します。

入力が数値範囲でない場合(順序付けされていない集合、ブール値フラグ、カテゴリ値など)、BVAの使用は避けてください。境界が意味を持たないため、決定表や状態遷移テストの方が適しています。

Robust BVAは、標準的なアプローチを拡張し、有効範囲のすぐ外側の値(最小値より小さい値と最大値より大きい値)を追加することで、システムが明らかに無効な入力をどのように拒否するかを検証します。

はい。AIジェネレーターは要件とスキーマを分析して、同値クラスと境界値を提案します。 Testim (NAIST) と マブル 欠陥履歴から学び、表面的なエッジケースを迅速に把握する。

AIが重複を検出しますping テスターが見落としがちなパーティション、冗長なケース、見落とされたエッジなどを特定します。機械学習は欠陥履歴から高リスクの境界をランク付けし、よりスマートなテスト選択と、微妙な問題の迅速な検出を可能にします。

Yes. JUnit, TestNGまた、pytestはパラメータ化テストをサポートしており、テスターは入力データセットとしてパーティションと境界値を定義できます。これにより、CIパイプラインで等価性ケースと境界ケースを体系的に実行することが可能になります。