ここでは、等価クラス、境界値テスト、ペアワイズ テストなどのよく知られ広く使用されているテスト設計手法については説明しません。その他のあまり一般的ではない手法について説明します。組み合わせテスト設計手法の問題に関する私の記事もお読みください。
デシジョンテーブルは、要件を文書化し、アプリケーションの機能を説明するための優れたツールです。これらのテーブルは、アプリケーションのビジネス ロジックを説明するのに非常に便利であり、さらに、テスト ケースを作成するための強固な基盤としても機能します。テストされたアプリケーションに適切なドキュメントが不足している場合は、デシジョンテーブルを使用する十分な理由になります。要件をコンパクトでシンプルな形式で提示すると、テスト ケースの作成が非常に簡単になります。
アプローチ:
デシジョン テーブルは、システム状態のエンティティ (プロパティ/条件) に基づいてアプリケーションのロジックを記述します。各デシジョンテーブルは、システムの 1 つの状態のみを記述する必要があります。
| ルール1 | ルール2 | … | ルールN |
---|---|---|---|---|
エンティティ | | | | |
プロパティ 1 | | | | |
… | | | | |
物件M | | | | |
行動 | | | | |
アクション 1 | | | | |
… | | | | |
アクションP | | | | |
1 から M までの Entity (Property) はシステムのさまざまなプロパティを表します。これらは、システムに入力できる入力データとしてテーブルに表示されます。 1 から P までのアクションは、エンティティの指定された組み合わせで発生する可能性のあるアクションです。エンティティのすべての入力データの組み合わせに応じて、アクションは必要な値をとります。各ルールは、特定のアクションの実行につながるすべてのプロパティに対する一意の入力データのセットを定義します。
デシジョンテーブルを作成した後、通常、不可能なシナリオの一部またはすべてを削除するなどしてテーブルを簡素化することができます。次に、テーブルをテスト ケースに変換できます。
状態遷移テストは、デシジョンテーブルテストと同様、要件を文書化し、システムの構造と設計を説明するための貴重なツールです。特定のシステム状態を説明するデシジョンテーブルテストとは異なり、状態遷移テストはシステムのこれらの状態がどのように変化するかを説明します。ダイアグラムは、アプリケーションの動作中に発生するすべてのイベントと、アプリケーションがこれらのイベントにどのように応答するかを定義します。
アプローチ:
この手法の視覚的表現には 2 つのタイプがあります。
例として、航空券の予約を考えてみましょう。これは大まかに次のように動作します。最初に、顧客は予約のための情報 (出発地、目的地、日付、出発時刻) を航空会社に提供します。航空会社の従業員は、顧客と航空券予約システムの間のインターフェイスとして機能し、顧客が提供した情報を使用して予約を作成します。その後、お客様の予約は「完了」状態となります。さらに、予約の作成後、システムはタイマーを開始します。タイマーが期限切れになり、予約したチケットの支払いが行われない場合、システムはそのチケットの予約をキャンセルします。
円は航空券予約システムの状態、つまり「Made」状態を表しています。矢印は「Made」状態への遷移を示します。矢印の下の説明 (「get_info」) はシステム外部から発生したイベントです。説明内の矢印の下 (「/」の後) のコマンドは、システムがイベントに応じて何らかのアクションを実行したことを示します (この場合はタイマーの開始)。黒丸は、図の開始点/入口点を示します。
タイマーが期限切れにならず、予約したチケットの支払いが完了している場合、システムは「支払い済み」状態になります。これは、「payMoney」というラベルの付いた矢印と、「Made」状態から「Paid」状態への遷移によって示されています。
状態遷移テーブルは、現在の状態、イベント、アクション、次の状態の 4 つの列で構成されるテーブルです。
状態遷移テーブルの利点は、正しい状態遷移シナリオだけでなく、考えられるすべての状態遷移シナリオを定義していることです。したがって、状態遷移テーブルでは、未定義で文書化されていない状態遷移の組み合わせが見つかることがよくありますが、コードを記述する前に特定しておく方がよいでしょう。
値「1」と「2」の組み合わせは何通りありますか? {1,1}、{1,2}、{2,1}、および {2,2}。直交配列は、特別な特性を持つ 2 次元配列です。配列の任意の 2 つの列に、それらの列の値のすべての組み合わせが存在します。つまり、値が "1" または "2" のみである直交配列から任意の 2 つの列を取得すると、それらの列に対して次の行が見つかります - {1,1}、{1,2}、{ 2,1}、および {2,2}。
例として、それぞれがバイナリ (つまり、値「1」または「2」を取る) 3 つの入力パラメータを持つシステムを考えてみましょう。
行 | 変数1 | 変数2 | 変数3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 1 | 1 |
3 | 1 | 2 | 1 |
4 | 1 | 1 | 2 |
5 | 2 | 2 | 1 |
6 | 1 | 2 | 2 |
7 | 2 | 1 | 2 |
8 | 2 | 2 | 2 |
直交配列は - L_4(2^3) として表されます。ここで、L_4 は直交配列に 4 つの行があることを示し、(2^3) は配列に 3 つの列があることを示し、値は「1」または「2」のいずれかになります。 」。
行 | 変数1 | 変数2 | 変数3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
L_4、4 は行数です
2^3。2 は最大値 (== 2、3、…、N)、3 は列数です。
直交配列 - 次の特性を持つ 2 次元配列です。配列の任意の 2 つの列を選択すると、それらの列内の値のすべての組み合わせが見つかります。
直交配列の使用:
AllPairs アルゴリズムの本質は、すべての変数の値のすべての組み合わせをテストする必要がないことです。代わりに、変数の各ペアの値のすべての組み合わせをテストすることに重点を置きます。
QA プロフェッショナルとして、これらのニュアンスを理解することが重要です。理論的な場合もありますが、組み合わせテスト設計手法の複雑さを理解することで、QA 専門家はアプリの複雑なビジネス ロジックを効果的にテストし、高品質のソフトウェアをユーザーに提供できるようになります。