コンビナトリアルテストを生成するためのほとんどのツールは、対応する自動テストの入力に転送できるデータを含むファイルの形式で結果を生成できます。 そのような例( PICTツールを使用)を以下で説明します。
例1.シリーズとパスポート番号
シリーズとパスポート番号の自動テストを使用する条件下では、このフィールドの要件が厳密であるため、肯定的なテストの網羅的なセットをコンパイルできます。 (33-3) 2 * 10 6 = 9 * 10 8 。 ただし、フィールドの要件が非常に厳しい場合はまれであり、徹底的なテストを行う必要はほとんどありません。 ほとんどの場合、各位置にそれぞれ個別の文字と個別の数字を入力する可能性をチェックするだけで十分です。 このようなテストをコンパイルするタスクは、組み合わせテストツールによって解決される可能性があります。
モデル1SERIES_1: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, SERIES_2: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, NUMBER_1: 0,1,2,3,4,5,6,7,8,9 NUMBER_2: 0,1,2,3,4,5,6,7,8,9 NUMBER_3: 0,1,2,3,4,5,6,7,8,9 NUMBER_4: 0,1,2,3,4,5,6,7,8,9 NUMBER_5: 0,1,2,3,4,5,6,7,8,9 NUMBER_6: 0,1,2,3,4,5,6,7,8,9 {SERIES_1, SERIES_2, NUMBER_1, NUMBER_2, NUMBER_3, NUMBER_4, NUMBER_5, NUMBER_6} @ 1
シミュレーション結果の一部4 6 3 1 1 5 І Є 8 3 8 9 9 3 3 0 5 8 6 2 4 3 4 1 3 1 Є 4 6 7 3 1 4 0 2 4 5 2 0
同様に、負のテストを行うことができます(PICTでは、特殊文字「〜」でそれらをマークできます)。
モデル2SERIES_1: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, SERIES_2: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, NUMBER_1: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_2: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_3: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_4: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_5: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_6: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F
シミュレーション結果の一部1 3 7 2 7 4 ~B 7 3 2 7 9 Є 8 8 2 0 ~A 8
これらのファイルから、行ごとに読み取り(区切り文字はタブ)、アプリケーションのフィールドに入力することができます。
例2.追加パラメーターを使用したテストカバレッジの増加
検証に関連するバグは、ユーザーが無効なデータを入力する方法に依存する場合があります:キーボード(物理または画面)から、コピーアンドペースト、ホットキー、選択したテキストのドラッグアンドドロップを使用します。 たとえば、この方法で誤ったデータが入力された場合、多くの場合、テキストのドラッグアンドドロップはクライアント検証によって処理されません。 入力メソッドは、追加パラメーターとしてモデルに導入でき、自動テストを作成するときに考慮できます。
モデル3SERIES_1: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, SERIES_2: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, NUMBER_1: 0,1,2,3,4,5,6,7,8,9 NUMBER_2: 0,1,2,3,4,5,6,7,8,9 NUMBER_3: 0,1,2,3,4,5,6,7,8,9 NUMBER_4: 0,1,2,3,4,5,6,7,8,9 NUMBER_5: 0,1,2,3,4,5,6,7,8,9 NUMBER_6: 0,1,2,3,4,5,6,7,8,9 INPUT: keyboard, screen keys, context menu, copy paste, drag-n-drop
シミュレーション結果の一部0 8 0 8 5 9 keyboard 0 0 2 3 2 2 drag-n-drop 5 3 6 2 1 0 screen keys 3 9 4 1 6 7 context menu 9 9 0 7 4 4 copy paste
例3.意思決定システムのテスト、要件の検証
意思決定システムの場合、徹底的なテストセットがコンパイルされることがあり、テストだけでなく要件の検証にも使用できます。 各テストにシステムルールを順番に適用すると、矛盾する結果が得られるかどうかを確認できます。
要件の検証は、隠れた矛盾を検出できるため、この場合のテストの非常に重要な部分です。 組み合わせテストを生成するツールを使用すると、テストをコンパイルできるだけでなく、入力データに課される条件を設定することもできます。 これらの条件により、可能なデータのいずれかが取得不能になると、ツールはこれを表示します。これは、整合性の要件を徹底的にチェックするためのシグナルとして機能します。
モデル4AGE: 0-17, 18-21, 22-65, >=66 CHILDREN: Y, N SMOKING: Y, N WORK: 0-5, 6-10, >=11 {AGE, CHILDREN, SMOKING, WORK} @ 4 IF [AGE] = "0-17" THEN [WORK] <> ">=11"; IF [WORK] =">=11" THEN [AGE] = "0-17";
矛盾する要件に対するツールの対応Constraints Warning: Restrictive constraints. Output will not contain following values WORK: >=11
このモデルでは、WORK値を切り捨てる競合する要件があります。> = 11で、どのテストにも表示されません。 残念ながら、このツールは、どの条件が矛盾を引き起こすのかという質問には答えず、どの値がテストから除外されているかを示すだけです。 ただし、この情報は、制限の配列全体からこのパラメーターに影響を与えるものを分離し、矛盾を分析するのに十分な場合があります。
徹底的な一連のテストは、因果関係テストの設計手法にさらに使用できます。
例4.構成テスト用の環境パラメーターの形成
組み合わせテスト用のツールを使用すると、可能な構成のリストを作成することもできます。このリストは、使用の人気度、不適切な取り消し線などでソートできます。 各構成のすべてのテストを実行する必要がない場合は、選択した環境間でテストを均等に分割し、テストデータを生成するための別のパラメーターとして環境を追加できます(データ入力メソッドの例で行われたように)。
モデル5BROWSER: IE, Firefox, Chrome, Opera LANG: en, ru, ua OS: win, linux, android {BROWSER, LANG, OS} @ 1 IF [OS] = "linux" THEN [BROWSER] <> "IE";
シミュレーション結果IE ua win Firefox en win Opera ua linux Chrome ru android
モデル6SERIES_1: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, SERIES_2: ,,,,,,Є,,,І,,,,,,,,,,,,,,,,,,, NUMBER_1: 0,1,2,3,4,5,6,7,8,9 NUMBER_2: 0,1,2,3,4,5,6,7,8,9 NUMBER_3: 0,1,2,3,4,5,6,7,8,9 NUMBER_4: 0,1,2,3,4,5,6,7,8,9 NUMBER_5: 0,1,2,3,4,5,6,7,8,9 NUMBER_6: 0,1,2,3,4,5,6,7,8,9 ENVIRONMENT: IE ua win, Firefox en win, Opera ua linux, Chrome ru android
例5.多数の制限を考慮した複数のテストのコンパイル
もちろん、コンビナトリアルテストを使用して手動で実行するテストを生成することもできますが、覚えておく必要のある非常に多くの制限がある場合にのみ実行する価値があるように思えます。 条件が存在するため、テストの数は、いわば自然な方法で制限される可能性があり、ツールは、それらに課されるすべての条件に適したすべての可能なテストデータを取得できるようにします。 この場合、テストは手動で実行できます。
モデル6AGE: 0-17, 18-21, 22-65, >=66 CHILDREN: 0, 1, 2, 3, 4, 5 SMOKING: Y, N WORK: 0-5, 6-10, >=11 IF [AGE] = "0-17" THEN [WORK] <> ">=11"; IF [AGE] = "0-17" THEN [CHILDREN] = 0; IF [AGE] = "18-21" THEN [CHILDREN] < 2; IF [CHILDREN] > 0 THEN [SMOKING] = "N"; IF [AGE] = ">=66" THEN [WORK] <> "0-5"; IF [AGE] = "0-17" OR [AGE] = "18-21" THEN [WORK] = "0-5";
シミュレーション結果-21テスト22-65 2 N 0-5 18-21 1 N 0-5 >=66 2 N 6-10 22-65 4 N 6-10 22-65 5 N 6-10 22-65 3 N 6-10 >=66 4 N >=11 22-65 5 N >=11 0-17 0 Y 0-5 >=66 3 N >=11 22-65 4 N 0-5 22-65 2 N >=11 18-21 0 Y 0-5 22-65 0 Y >=11 22-65 1 N 6-10 22-65 3 N 0-5 >=66 1 N >=11 0-17 0 N 0-5 >=66 0 Y 6-10 >=66 5 N >=11 22-65 5 N 0-5