直交配列テストとは何ですか? (例)

⚡ スマートサマリー

直交配列テストは、統計配列を用いてコンパクトなテストセットを構築するブラックボックス手法であり、網羅的な組み合わせテストに必要なテストケースよりもはるかに少ないテストケースで、あらゆる入力値のペアを網羅します。

  • 🎯 核となる約束: 生成された実行結果には、任意の2つの因子間のすべてのレベルのペアが少なくとも1回出現する。
  • 🔢 表記法: 配列はLと表記されますActive Runs(レベル)要因)、したがってL9(3⁴)は4つの3レベル因子に対して9回の試行を意味します。
  • 📉 貯蓄規模: 4つの因子をそれぞれ3つのレベルで組み合わせると、81通りの網羅的な組み合わせから、9つの直交する組み合わせに絞り込まれる。
  • 🧮 バランスルール: 列は、2つの要素が同時に移動しないように埋める必要があります。そうでない場合、表は直交性を持ちません。
  • 🛠️ ツーリング: GeneratorPICTやACTSなどのツールは配列を自動的に構築するため、手作業によるエラーの主な原因が排除されます。
  • ⚠️ 既知の限界値: ペアワイズカバレッジでは、3つ以上の特定の値を同時に必要とする欠陥を検出することはできません。

直交配列テストは、入力の組み合わせを少数のバランスの取れたテストケースに削減します。

直交配列テスト

直交配列テスト (OAT) 直交配列テストは、テストケースを作成するために直交配列を用いるソフトウェアテスト手法です。統計的手法であり、特にテスト対象システムが多数のデータ入力を受け入れる場合に有効です。直交配列テストは、入力をペアリングおよび組み合わせることでテストカバレッジを最大化し、比較的少ないテストケースと短い実行時間でシステムを実行します。

例えば、列車の切符を検証する場合、乗客数、切符番号、座席番号、列車番号といった要素をテストする必要があります。これらの要素を一つずつテストするのは手間がかかります。QAエンジニアが複数の入力をまとめて一度にテストする方が効率的です。このような場合、直交配列テスト法を用いることができます。

時間を節約するために入力をペアリングまたは組み合わせるこの方法はペアワイズテストと呼ばれ、OATS テクニックはペアワイズテストセットを作成する 1 つの方法です。このテクニックは、内部コードを見ることなく、入力値と期待される結果のみに基づいて機能するため、 ブラックボックステスト 家族。

なぜ OAT (直交配列テスト) を使うのか?

現在の状況では、コードの複雑さにより、高品質のソフトウェア製品を顧客に提供することが困難になっています。

従来の方法では、テストスイートには入力値と前提条件のあらゆる組み合わせから導き出されたテストケースが含まれます。その結果、n個のテストケースを網羅する必要があります。

しかし、実際の状況では、テスト担当者は欠陥を発見するためにすべてのテストケースを実行する時間的余裕はありません。なぜなら、テストフェーズ内には、ドキュメント作成、提案、顧客からのフィードバックなど、対応しなければならない他の活動があるからです。

したがって、テスト管理者は、テスト ケースの数と品質を最適化して、最大限のパフォーマンスを確保したいと考えました。 テストカバレッジ 最小限の労力で。この労力はテストケース最適化と呼ばれます。

  • ペアワイズ相互作用を検定するための体系的かつ統計的な方法。
  • 相互作用点や統合点は、欠陥の主な原因となる。
  • ほとんどの(すべてではないが)バグを発見できる可能性の高い、明確に定義された簡潔なテストケースを実行する。
  • 直交アプローチは、すべての変数のペアワイズカバレッジを保証する。

したがって、この手法は、チームが既に利用している他の投入量削減手法と並行して用いられるものである。 同値分割と境界値解析 1 つのフィールドに対してどの値をテストする価値があるかを決定する。直交配列は、それらの値のうちどれを一緒にテストすべきかを決定する。

直交配列テストの表現方法

直交配列は、その内容ではなく、短い数式で表されます。下の図は、その数式に含まれる3つの量が配列の形状とどのように関連しているかを示しています。

L(Runs)式におけるラン、因子、レベルを示す直交配列表記

  • ラン数(N) 配列内の行数。これは生成されるテストケースの数に相当します。
  • 係数(K) 配列内の列数。これは、処理できる変数の最大数に相当します。
  • レベル(V) – 個々の要素に対して取り得る値の最大数。

単一の要因に対して、通常は2~3個の入力項目をテストする必要があります。この入力項目の最大数が、レベルを決定します。

配列名を左から右に読みます。 L9(34) 9はランカウント、3は各因子が取り得るレベル数、上付き文字の4は因子の数です。同じ記事では、 L4(23)これは、それぞれ2つの水準を持つ3つの要因について、4回の試行を行うことを意味します。

配列が直交性を持つためには、2つの特性が必要であり、ランカウントが信頼できるためには、両方の特性が満たされていなければならない。

  • 残高: 各要素のレベルは、それぞれの列内で同じ回数だけ出現します。
  • ペアワイズ完全性: 任意の2つの列について、それぞれの列から1つのレベルを選択する組み合わせはすべて同じ回数出現する。

2番目の特性が満たされない場合、その表は単に短縮されたテストセットであり、直交配列ではなく、縮小を正当化するペアワイズ保証はもはや適用されません。

直交配列テストの実行方法: 例

  1. シナリオの独立変数を特定します。
  2. 実行数の最小の配列を見つけます。
  3. 因子を配列にマッピングします。
  4. 「残り」レベルの値を選択します。
  5. ランを転写する テストケース生成されていない、特に疑わしい組み合わせがあれば追加します。

以下の2つの例では、まず小規模な2段階問題に、次に大規模な3段階問題に、これらの5つの手順を適用しています。

ウェブページは、上部、中央部、下部の3つの異なるセクションで構成されており、それぞれを個別にユーザーに表示または非表示にすることができます。

  • 因子の数 = 3 (上、中、下)
  • レベルの数 (可視性) = 2 (非表示または表示)
  • 配列タイプ = L4(2)3)

(4はOAT配列を作成した後に到達した実行回数です)

一度に1つのセクションを変更する従来の手法を採用する場合、2 × 3 = 6 のテストケースが必要になります。

テストケース シナリオ テストする値
テスト #1 見えないベース Top
テスト #2 SHOWN Top
テスト #3 見えないベース ボトム
テスト #4 SHOWN ボトム
テスト #5 見えないベース 真ん中
テスト #6 SHOWN 真ん中

これらの6回の試行では、一度に1つのセクションだけが変化し、2つのセクションが同時に選択された状態になることはありません。代わりにすべての組み合わせをテストすると、23 = 8ラン。

OAT テストを行う場合は、以下に示すように 4 つのテスト ケースが必要です。

テストケース TOP 真ん中 ボトム
テスト #1 隠されました 隠されました 隠されました
テスト #2 隠されました 目に見えます 目に見えます
テスト #3 目に見えます 隠されました 目に見えます
テスト #4 目に見えます 目に見えます 隠されました

その表の任意の2つの列を確認すると、4つの「非表示/表示」のペアすべてがちょうど1回ずつ出現します。これは、直交性という性質を最小の形で表したものです。

マイクロプロセッサの機能をテストする必要があります。

  • 温度:100℃、150℃、200℃。
  • 圧力:2psi、5psi、8psi
  • Doping 金額:4%、6%、8%
  • 堆積速度:0.1 mg/s、0.2 mg/s、0.3 mg/s

従来の方法を用いると、34 = すべての入力を網羅するには81個のテストケースが必要です。代わりにOATSメソッドを使ってみましょう。

要因の数 = 4 (温度、圧力、ping 金額および沈着率)

レベル=各要因につき3つのレベル(温度は100℃、150℃、200℃の3つのレベルがあり、他の要因も同様にそれぞれ3つのレベルがある)

以下のように配列を作成します。

1. 因子数の列

テストケース # 温度 圧力 Doping 量 成膜速度

2. 要素ごとにレベル数と同じ行数を入力します。たとえば、温度には 3 つのレベルがあります。したがって、温度の各レベルに対して 3 つの行を挿入します。

テストケース # 温度 圧力 Doping 量 成膜速度
1 100C
2 100C
3 100C
4 150C
5 150C
6 150C
7 200C
8 200C
9 200C

3. 次に圧力を分割します。ping カラム内の量と堆積速度。

例えば、100℃、150℃、200℃の温度で2psiと入力し、同様にping 100℃、150℃、200℃などの場合、それぞれ4%の量となります。

テストケース # 温度 圧力 Doping 量 成膜速度
1 100C 2のプサイ 4% 0.1mg/秒
2 100C 5のプサイ 6% 0.2mg/秒
3 100C 8のプサイ 8% 0.3mg/秒
4 150C 2のプサイ 4% 0.1mg/秒
5 150C 5のプサイ 6% 0.2mg/秒
6 150C 8のプサイ 8% 0.3mg/秒
7 200C 2のプサイ 4% 0.1mg/秒
8 200C 5のプサイ 6% 0.2mg/秒
9 200C 8のプサイ 8% 0.3mg/秒

したがって、OA では、カバーする 9 つのテスト ケースが必要です。

精度に関する注記: ステップ3と同様に、残りの3列をまっすぐ下に埋め、同じ圧力を繰り返します。ping そして、各温度ブロック内部での堆積は3倍になります。圧力とping そのため、値は一緒に動き、2 psi と 6% のようなペアは決して現れないため、上記の 9 行は真の直交配列ではなく縮小テスト セットです。バランスの取れた L9(34以下の配列は、すべての2つの因子間の9つのレベルペアをすべて網羅しながら、同じ9つの実行を維持します。

テストケース # 温度 圧力 Doping 量 成膜速度
1 100C 2のプサイ 4% 0.1mg/秒
2 100C 5のプサイ 6% 0.2mg/秒
3 100C 8のプサイ 8% 0.3mg/秒
4 150C 2のプサイ 6% 0.3mg/秒
5 150C 5のプサイ 8% 0.1mg/秒
6 150C 8のプサイ 4% 0.2mg/秒
7 200C 2のプサイ 8% 0.2mg/秒
8 200C 5のプサイ 4% 0.3mg/秒
9 200C 8のプサイ 6% 0.1mg/秒

直交配列テストとペアワイズ(全ペア)テストの比較

この2つの用語は多くのチームで互換的に使用されていますが、全く同じものではありません。どちらも値のペアを網羅することを目的としていますが、結果として得られる表の制約の厳密さが異なります。

側面 直交配列テスト ペアワイズ(全ペア)テスト
基礎構造 直交配列(実験計画法から借用) 探索アルゴリズムによって生成されたカバリング配列
適用範囲ルール どのペアも同じ回数出現します すべてのペアが少なくとも1回は登場する
レベルが異なる要因 混合レベルの配列が必要ですが、必要な形状の配列は存在しない可能性があります。 発電機によって直接処理される
典型的な得点数 バランス要件のため、同等かやや高い 同じ入力値に対して同等またはそれ以下
値間の制約 配列内で表現するのが難しい ほとんどの最新発電機でサポートされています

実際には、バランスのとれた直交配列は、要素が同じレベル数を共有する場合、より明確な教育モデルであり、より安全な選択肢である一方、被覆配列は、扱いにくい不均等な入力を持つ実際のプロジェクトに対してほとんどのツールが生成するものである。両者は互いに補完し合う。 決定表テスト (NAIST) と 状態遷移テストこれらは、値の組み合わせではなく、ビジネスルールと順序を対象としています。

直交配列テストツール

配列を手作業で構築するのは、上記のような小規模な例に限られます。4つか5つ以上の要素がある場合は、チームはジェネレーターを使用し、ツールが実行回数を自動的に決定します。

  • 写真: オープンソースのコマンドラインジェネレーター Microsoftパラメータとその値はプレーンテキストのモデルファイルに書き込まれ、ツールは組み合わせセットを出力します。制約とサブモデルがサポートされており、特定の値ペアが無効な場合に重要になります。 PICTリポジトリ.
  • 行為: NISTの研究ツールで、2方向から最大6方向までのカバレッジに対応するカバレッジ配列を生成し、事前に計算された配列のライブラリも公開しています。 NISTの組み合わせテストプロジェクト.
  • 商用コンビナトリアルプラットフォーム: ホスト型ツールが要件を追加する trac実行可能性、期待される結果、およびテスト管理システムへのエクスポート機能を備えており、監査証跡を必要とする大規模チームに適しています。
  • 公開されている配列ライブラリ: L4、L8、L9、L16、L18などの標準配列は表形式で表示され、因子数とレベル数が一致する場合は直接コピーできます。

どのツールでテーブルを生成しても、生成された行は実際のデータと期待される結果を含む実行可能なケースに変換し、他のスイートと同様にスケジュールする必要があります。 ソフトウェアテスト手法 既にプロジェクトで使用されています。

直交配列テストの利点

  • 選択されたすべての変数のペアごとの組み合わせのテストを保証します。
  • テストケースの数を削減します。
  • 変数のすべてのペア間の相互作用を網羅しつつ、テストケースの数を減らす。
  • 複雑な変数の組み合わせにも対応可能です。
  • 手動で作成したテスト セットよりも生成が簡単で、エラーが発生しにくくなります。
  • 役に立つ 統合テスト、そして同様に役立つ 構成テストそこでは、ブラウザ、オペレーティングシステム、デバイスの組み合わせが急速に増えていく。
  • テストサイクルとテスト時間が短縮されるため、生産性が向上します。

貯蓄の複利 回帰試験なぜなら、より小規模でバランスの取れたスイートは、サイクルごとに再実行できるほど安価であるのに対し、網羅的な組み合わせスイートは通常一度実行された後、静かに放棄されるからである。

直交配列テストの欠点

  • データ入力が増えるにつれて、テストケース設計の複雑さが増します。その結果、手作業の労力と時間が増加し、テスターは 自動化テスト.
  • ペアワイズカバレッジは完全なカバレッジではありません。特定の3つの値が同時に発生した場合にのみ現れる欠陥は、配列をそのまま通過してしまう可能性があります。
  • レベル数が異なる因子は、標準的な配列にきれいにマッピングできないため、混合レベル配列またはカバリング配列ジェネレーターが必要となる。
  • レベルの選択は判断を要する。入力モデルから重要な値が漏れてしまうと、どんな配列を使ってもそれを復元することはできない。
  • 特定の国でのみ有効な支払い方法など、値間の制約は表現が難しく、通常は手動で削除する必要のある無効な行が生成されます。

これらの制約のいずれもこの技術を排除するものではなく、単にその境界を定めるだけです。直交配列は組み合わせ問題を軽減し、リスク分析と ドメインテスト そもそもどの要素をモデルに含めるべきかを決定する。

OAT 実行中の間違いまたはエラー

  • テスト対象をアプリケーションの誤った箇所に絞っている。
  • 組み合わせるパラメータの選択を間違えている。
  • 入力セットが十分に小さく、網羅的にテストできる場合には、直交配列テストを使用する。
  • ジェネレーターが必要となるほど大きなモデルに対して、直交配列テストを手動で適用する。
  • より詳細なカバレッジが必要とされる高リスク用途において、直交配列テストのみに頼ることは避けるべきである。

最後の項目は、実際には最も大きな損害を引き起こすものです。安全性が重要な機能や財務機能では、ペアワイズセットは上限ではなく下限であり、通常はターゲットケースで補完されます。 システムテスト レベルと、より広い計画については、 ソフトウェアテストの種類.

よくあるご質問

これはブラックボックス技術です。配列は入力パラメータとその許容値のみから構築され、ソースコード、分岐、内部状態は一切参照されないため、実装が完了する前に設計することができます。

テスターは入力モデルを構築し、通常はビジネスアナリストがどの値が妥当かを確認します。開発者は、キャッシュ設定など、パラメータが内部的な場合に貢献します。テストスイートの値は、配列ではなくモデルの品質によって決まります。

いいえ、それはそれらによります。パーティショニングと境界分析によって各フィールドは少数の代表値に絞り込まれ、その後、配列はそれらの値のうちどれを組み合わせるかを決定します。フィルタリングされていない生の値に対して配列を実行すると、不必要に大きなテーブルが生成されます。

異なるレベルの配列(例えば、2レベルと3レベルの列が混在するL18など)が必要です。標準的な配列では対応できない場合、カバリング配列ジェネレーターが形状を直接処理し、すべての要素を同じレベル数に強制するよりも小さなテーブルを返します。

3つ以上の特定の値を同時に必要とするあらゆる障害。障害データの実証研究によると、ほとんどの障害は1つまたは2つのパラメータによって引き起こされるため、2つずつのパラメータによるカバレッジが効果的ですが、重要な機能については3つずつのパラメータによるカバレッジが推奨されます。

主に、複数のコンポーネントや設定が相互作用する統合レベルやシステムレベルで使用されます。また、ブラウザ、オペレーティングシステム、画面サイズなどの環境マトリックスや、出荷時の組み合わせ数が利用可能なテストウィンドウの数を上回る構成可能な製品にも適しています。

機械学習は要件と生産ログを読み取り、重要な要因とレベルを提案し、欠陥履歴モデルはどの組み合わせが3方向の対策に値するかをランク付けします。配列の数学は決定論的であり、インテリジェントな部分はモデルに入力するデータを選択することです。

これは、ジェネレーターのモデルファイル、行を読み取るデータ駆動型ループ、およびそれらを囲むアサーションを作成します。言語モデルは直交性を持たないもっともらしいテーブルを生成する可能性があるため、ジェネレーター自体を使用してカバレッジの主張を検証してください。