データ駆動型テストとは? フレームワークの作成を学ぶ
データ駆動型テスト
データ駆動型テスト は、テスト データをテーブルまたはスプレッドシート形式で保存するソフトウェア テスト方法です。 データ駆動型テストを使用すると、テスターは単一のテスト スクリプトを入力して、テーブルからすべてのテスト データに対してテストを実行し、同じテーブルでのテスト出力を期待できます。 テーブル駆動テストまたはパラメータ化テストとも呼ばれます。
データドリブンフレームワーク
データドリブンフレームワーク は、入力値をデータ ファイルから読み取り、テスト スクリプトの変数に保存する自動テスト フレームワークです。 これにより、テスターは肯定的なテスト ケースと否定的なテスト ケースの両方を XNUMX つのテストに構築できます。 データ駆動型フレームワークの入力データは、.xls、.xml、.csv、データベースなどの単一または複数のデータ ソースに保存できます。
データ駆動型テストを行う理由
データ駆動型テスト テスターは XNUMX つのテストに対して複数のデータ セットを使用することが多く、データ セットごとに個別のテストを作成するのに時間がかかる可能性があるため、これは重要です。 データ駆動型テストは、データをテスト スクリプトから分離するのに役立ち、入力テスト データのさまざまな組み合わせに対して同じテスト スクリプトを実行でき、テスト結果を効率的に生成できます。
例:
たとえば、1000 個の異なるデータ セットを含む複数の入力フィールドを備えたログイン システムをテストしたいとします。
これをテストするには、次のさまざまなアプローチを取ることができます。
アプローチ1) データセットごとに 1000 個のスクリプトを作成し、各テストを XNUMX つずつ個別に実行します。
アプローチ1) テスト スクリプトの値を手動で変更し、数回実行します。
アプローチ1) Excelシートからデータをインポートします。 Excel の行からテスト データを XNUMX 行ずつ取得し、スクリプトを実行します。
与えられた XNUMX つのシナリオのうち、最初の XNUMX つは面倒で時間がかかります。 したがって、XNUMX 番目のアプローチに従うのが理想的です。
したがって、XNUMX 番目のアプローチはデータ駆動型フレームワークに他なりません。
データドリブンオートメーションフレームワークを作成する方法
アプリケーションのログイン機能をテストしたいと考えます。
ステップ1) テストケースを特定する
- 正しいユーザー名とパスワードを入力 – ログイン成功
- 間違ったユーザー名と正しいパスワードを入力してください – ログイン失敗
- 正しいユーザー名と間違ったパスワードを入力 – ログイン失敗
ステップ2) 上記 3 つのテスト ケースの詳細なテスト ステップを作成する
テストケース# | Description | テスト手順 | テストデータ | 予想された結果 |
---|---|---|---|---|
1 | ログインで有効な資格情報を確認してください |
|
ユーザー名: 有効 パスワード: 有効 | ログイン成功 |
2 | ログインで無効な資格情報がないか確認してください |
|
ユーザー名: 無効 パスワード: 有効 | ログイン失敗 |
3 | ログインで無効な資格情報がないか確認してください |
|
ユーザー名: 有効 パスワード: 無効 | ログイン失敗 |
ステップ3) テストスクリプトの作成
テスト ステップが 3 つのテスト ステップを通じて共通のままであることを確認した場合。 これらの手順を実行するにはテスト スクリプトを作成する必要があります
// This is Pseudo Code // Test Step 1: Launch Application driver.get("URL of the Application"); // Test Step 2: Enter Username txtbox_username.sendKeys("valid"); // Test Step 3: Enter Password txtbox_password.sendKeys("invalid"); // Test Step 4: Check Results If (Next Screen) print success else Fail
ステップ4) 入力テストデータを使用して Excel/CSV を作成する
ステップ5) ステップ 入力テスト データをループするようにスクリプトを変更します。 入力コマンドもパラメータ化する必要があります
// This is Pseudo Code // Loop 3 Times for (i = 0; i & lt; = 3; i++) { // Read data from Excel and store into variables int input_1 = ReadExcel(i, 0); int input_2 = ReadExcel(i, 1); // Test Step 1: Launch Application driver.get("URL of the Application"); // Test Step 2: Enter Username txtbox_username.sendKeys(input_1); // Test Step 3: Enter Password txtbox_password.sendKeys(input_2); // Test Step 4: Check Results If(Next Screen) print success else Fail }
上記は3つのテストケースです。テストスクリプトは、テストデータ値を追加するだけで、次のテストケースをループすることができます。 Excel
- 間違ったユーザー名と間違ったパスワードを入力してください – ログイン失敗
- 正しいユーザー名とパスワードを空白で入力 – ログイン失敗
- 空のユーザー名と空のパスワードを入力 – ログイン失敗
等々
データ駆動型テストのベスト プラクティス
データ駆動型テストのベスト テスト プラクティスを以下に示します。
- データ駆動型のテストプロセスでは現実的な情報を使用することが理想的です
- テスト フロー ナビゲーションはテスト スクリプト内にコーディングする必要があります
- 意味のあるデータで仮想 API を駆動する
- データを使用して動的なアサーションを推進する
- テストで陽性結果も陰性結果も出る
- セキュリティとパフォーマンスのためのデータ駆動型機能テストを再利用する
データ駆動型テストの利点
データドリブンには多くの利点があります。そのうちのいくつかは次のとおりです。
- 回帰テスト中に複数のデータ値セットを使用してアプリケーションをテストできます
- テスト データと検証データは XNUMX つのファイルにまとめられ、テスト ケースのロジックから分離されます。
- このツールに基づいて、テスト スクリプトを単一のリポジトリに入れることができます。 これにより、テキストの理解、維持、管理が容易になります。
- アクションと関数はさまざまなテストで再利用できます。
- 一部のツールはテスト データを自動的に生成します。 これは、大量のランダム テスト データが必要な場合に役立ち、時間を節約できます。
- データ駆動型テストは、開発のどのフェーズでも実行できます。データ駆動型テストは通常、単一のプロセスに統合されます。ただし、複数のテスト ケースで使用することもできます。
- 開発者とテスターは、テスト ケース/スクリプトのロジックをテスト データから明確に分離できます。
- 同じテスト ケースを複数回実行できるため、テスト ケースとスクリプトの削減に役立ちます。
- テスト スクリプトを変更してもテスト データには影響しません。
データ駆動型テストの欠点
データ駆動型オートメーションのテスト方法には次のような欠点があります。
- テストの品質は、実装チームの自動化スキルに依存します。
- 大量のデータをテストする場合、データ検証は時間のかかる作業です。
- データ駆動型テストには大量のコーディングが必要となるため、メンテナンスは大きな問題です。
- 高度な技術力が求められます。 テスターはまったく新しいスクリプト言語を学習する必要がある場合があります。
- さらに多くのドキュメントが存在します。 主にスクリプト管理テストのインフラストラクチャとテスト結果に関連します。
- データ ファイルを作成および管理するには、メモ帳などのテキスト エディタが必要です。
まとめ
- データドリブンは、テスト データをテーブルまたはスプレッド スプレッドシート形式で保存するテスト自動化フレームワークです。
- データ駆動型テスト自動化フレームワークでは、入力データを xls などの単一または複数のデータ ソースに保存できます。 XML、csv、およびデータベース。
- データセットごとに個別のテストを作成するのは、長くて時間のかかるプロセスです。 データ駆動テスト フレームワークは、データを機能テストから分離することでこの問題を解決します。
- データ駆動テストでは、現実的な情報を使用することが理想的なオプションです。
- これにより、複数のデータ値セットを使用してアプリケーションをテストすることができます。 回帰試験
- この方法の欠点は、実装チームの自動化スキルに依存することです。