組み合わせテスト:テストデータの生成など

画像 流行語「ペアワイズ」の人気はもはや同じではありませんが、インタビューでは、彼らはまだこのテスト設計手法とは何かについて質問します。 ただし、すべてのテスター(面接に来る人とそれを行う人の両方)が、一般的な組み合わせ技術、特にペアワイズの組み合わせ技術がなぜ必要なのという質問に対する答えを明確に明確にできるわけではありません(それにもかかわらず、エラーの大半はオンです)パラメータのアトミック値であり、他から独立しています 私の意見では、この質問に対する簡単な答えは、パラメーター間の明示的および暗黙的な依存関係の結果として発生するバグを見つけることです。 単純な場合、この手法は重大な利点をもたらさないでしょう。なぜなら、それらは手動でチェックできるからです。また、多数のパラメーターとそれらの間の複雑な依存関係については、手動テストではテスト数が多すぎる可能性があります。 したがって、コンビナトリアルテクニック(およびパラメーターの組み合わせを生成するツール)の主な用途は、特定の法則に従ってテストデータセットを自動的にコンパイルすることです。



コンビナトリアルテストを生成するためのほとんどのツールは、対応する自動テストの入力に転送できるデータを含むファイルの形式で結果を生成できます。 そのような例( PICTツールを使用)を以下で説明します。



例1.シリーズとパスポート番号



シリーズとパスポート番号の自動テストを使用する条件下では、このフィールドの要件が厳密であるため、肯定的なテストの網羅的なセットをコンパイルできます。 (33-3) 2 * 10 6 = 9 * 10 8 。 ただし、フィールドの要件が非常に厳しい場合はまれであり、徹底的なテストを行う必要はほとんどありません。 ほとんどの場合、各位置にそれぞれ個別の文字と個別の数字を入力する可能性をチェックするだけで十分です。 このようなテストをコンパイルするタスクは、組み合わせテストツールによって解決される可能性があります。

SERIES_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
      
      



モデル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では、特殊文字「〜」でそれらをマークできます)。

 SERIES_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
      
      



モデル2

   1 3 7 2 7 4   ~B 7 3 2 7 9  Є 8 8 2 0 ~A 8
      
      



シミュレーション結果の一部



これらのファイルから、行ごとに読み取り(区切り文字はタブ)、アプリケーションのフィールドに入力することができます。



例2.追加パラメーターを使用したテストカバレッジの増加



検証に関連するバグは、ユーザーが無効なデータを入力する方法に依存する場合があります:キーボード(物理または画面)から、コピーアンドペースト、ホットキー、選択したテキストのドラッグアンドドロップを使用します。 たとえば、この方法で誤ったデータが入力された場合、多くの場合、テキストのドラッグアンドドロップはクライアント検証によって処理されません。 入力メソッドは、追加パラメーターとしてモデルに導入でき、自動テストを作成するときに考慮できます。

 SERIES_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
      
      



モデル3

   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.意思決定システムのテスト、要件の検証



意思決定システムの場合、徹底的なテストセットがコンパイルされることがあり、テストだけでなく要件の検証にも使用できます。 各テストにシステムルールを順番に適用すると、矛盾する結果が得られるかどうかを確認できます。



要件の検証は、隠れた矛盾を検出できるため、この場合のテストの非常に重要な部分です。 組み合わせテストを生成するツールを使用すると、テストをコンパイルできるだけでなく、入力データに課される条件を設定することもできます。 これらの条件により、可能なデータのいずれかが取得不能になると、ツールはこれを表示します。これは、整合性の要件を徹底的にチェックするためのシグナルとして機能します。

 AGE: 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";
      
      



モデル4

 Constraints Warning: Restrictive constraints. Output will not contain following values WORK: >=11
      
      



矛盾する要件に対するツールの対応



このモデルでは、WORK値を切り捨てる競合する要件があります。> = 11で、どのテストにも表示されません。 残念ながら、このツールは、どの条件が矛盾を引き起こすのかという質問には答えず、どの値がテストから除外されているかを示すだけです。 ただし、この情報は、制限の配列全体からこのパラメーターに影響を与えるものを分離し、矛盾を分析するのに十分な場合があります。



徹底的な一連のテストは、因果関係テストの設計手法にさらに使用できます。



例4.構成テスト用の環境パラメーターの形成



組み合わせテスト用のツールを使用すると、可能な構成のリストを作成することもできます。このリストは、使用の人気度、不適切な取り消し線などでソートできます。 各構成のすべてのテストを実行する必要がない場合は、選択した環境間でテストを均等に分割し、テストデータを生成するための別のパラメーターとして環境を追加できます(データ入力メソッドの例で行われたように)。

 BROWSER: IE, Firefox, Chrome, Opera LANG: en, ru, ua OS: win, linux, android {BROWSER, LANG, OS} @ 1 IF [OS] = "linux" THEN [BROWSER] <> "IE";
      
      



モデル5

 IE ua win Firefox en win Opera ua linux Chrome ru android
      
      



シミュレーション結果



 SERIES_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
      
      



モデル6



例5.多数の制限を考慮した複数のテストのコンパイル



もちろん、コンビナトリアルテストを使用して手動で実行するテストを生成することもできますが、覚えておく必要のある非常に多くの制限がある場合にのみ実行する価値があるように思えます。 条件が存在するため、テストの数は、いわば自然な方法で制限される可能性があり、ツールは、それらに課されるすべての条件に適したすべての可能なテストデータを取得できるようにします。 この場合、テストは手動で実行できます。

 AGE: 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";
      
      



モデル6

 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
      
      



シミュレーション結果-21テスト



All Articles