データ駆動型テストとは何ですか?

⚡ スマートサマリー

データ駆動型テストとは、テストデータをテーブルやスプレッドシートに格納することで、1つのスクリプトで多数の入力組み合わせを検証できるソフトウェアテスト手法です。テストロジックとデータを分離することで、スクリプトの重複やメンテナンスの手間を削減できます。

  • 📊 コアコンセプト: 単一のテストスクリプトが、.xls、.csv、.xml、またはデータベースソースから入力を読み込み、すべてのデータセットを自動的に実行します。
  • 🧱 フレームワーク設計: テストケースを特定し、共通の手順を一度記述し、データを外部化し、各データ行に対してスクリプトをループ実行します。
  • ⚙️ 効率性の向上: 1000通りのログイン組み合わせをテストするには、1000個の個別のスクリプトではなく、1つのパラメータ化されたスクリプトで十分です。
  • 🛠️ ツーリング: Testsigmaなどのプラットフォーム、 Testiny, Testpad パラメータ化されたデータセットを管理し、データ行ごとに障害を報告する。
  • ベストプラクティス: 現実的なデータを使用し、肯定的および否定的な結果を網羅し、データセットから動的な主張を引き出す。
  • ⚠️ トレード・オフ: テストの品質は自動化スキルに依存し、大規模なデータセットは検証と保守作業を増加させる。

データ駆動型テストとは

データ駆動型テスト

データ駆動型テスト は、テスト データをテーブルまたはスプレッドシート形式で保存するソフトウェア テスト方法です。 データ駆動型テストを使用すると、テスターは単一のテスト スクリプトを入力して、テーブルからすべてのテスト データに対してテストを実行し、同じテーブルでのテスト出力を期待できます。 テーブル駆動テストまたはパラメータ化テストとも呼ばれます。

データドリブンフレームワーク

データドリブンフレームワーク これは、データファイルから入力値を読み込み、テストスクリプト内の変数に格納する自動テストフレームワークです。これにより、テスターは肯定的なテストケースと否定的なテストケースの両方を単一のテストに組み込むことができます。データ駆動型フレームワークの入力データは、.xls、.xml、.csv、データベースなどの単一または複数のデータソースに格納できます。下の図は、データファイルからテストスクリプトへの入力値の流れを示しています。

データドリブンフレームワーク

データ駆動型テストを行う理由

データ駆動型テスト これは重要です。なぜなら、テスターは1つのテストに対して複数のデータセットを扱うことが多く、データセットごとに個別のテストを作成するのは時間がかかるからです。データ駆動型テストは、データとテストスクリプトを分離するのに役立ち、同じテストスクリプトをさまざまな入力テストデータの組み合わせに対して実行でき、テスト結果を効率的に生成できます。

例:

複数の入力フィールドを持つログインシステムを、1000種類の異なるデータセットに対してテストしたいとします。

これを検証するには、以下の異なる方法を試すことができます。

アプローチ1) データセットごとに1つずつ、合計1000個のスクリプトを作成し、各テストを個別に1つずつ実行します。

アプローチ1) テスト スクリプトの値を手動で変更し、数回実行します。

アプローチ1) Excelシートからデータをインポートします。Excelの行からテストデータを1行ずつ取得し、スクリプトを実行します。

提示された3つのシナリオのうち、最初の2つは手間と時間がかかります。したがって、3番目の方法を採用するのが理想的です。

したがって、XNUMX 番目のアプローチはデータ駆動型フレームワークに他なりません。

データ駆動型テストにおけるテストデータの種類

データ駆動型テストの価値は、テストスクリプトに入力するデータセットの品質に直接依存します。適切に設計されたデータファイルは、複数のカテゴリのテストデータを組み合わせることで、1つのスクリプトで正常な動作、エラー処理、および制限を1回の実行で検証できるようにします。

  • 肯定的な(有効な)データ: 有効なユーザー名やパスワードなど、正しい入力値を入力することで、アプリケーションが受け入れるべき情報を正しく受け入れていることを確認します。
  • 否定的(無効)データ: 誤ったパスワードや数値フィールドに特殊文字が含まれているなど、拒否されるべき誤った入力や形式が不正な入力。
  • 境界データ: 許容範囲の端にある値、例えば1文字のユーザー名や255文字のユーザー名などは、隠れた欠陥を露呈することが多い。
  • 空白またはnullデータ: 必須項目の検証とエラーメッセージを確認するための空欄。
  • 大容量データ: 実際の負荷条件下でのパフォーマンスと安定性を確認するために、大量またはランダムに生成されたレコードが使用されます。

適切なデータが準備できたら、次のステップはフレームワーク自体を構築することです。

データドリブンオートメーションフレームワークを作成する方法

データ駆動型自動化フレームワーク

アプリケーションのログイン機能をテストしたいとします。上記のフローチャートは、テストケースの特定、共通テストスクリプトの作成、データの外部ファイルへの移動、そして各データ行に対するスクリプトのループ処理という、一連のプロセス全体を示しています。

ステップ1) テストケースを特定する

  • 正しいユーザー名とパスワードを入力 – ログイン成功
  • 間違ったユーザー名と正しいパスワードを入力してください – ログイン失敗
  • 正しいユーザー名と間違ったパスワードを入力 – ログイン失敗

ステップ2) 上記 3 つのテスト ケースの詳細なテスト ステップを作成する

テストケース# 詳細説明 テスト手順 テストデータ 予想された結果
1 ログインで有効な資格情報を確認してください
  1. アプリケーションを起動する
  2. ユーザー名とパスワードを入力してください
  3. 「OK」をクリックします
  4. 結果を確認する
ユーザー名: 有効 パスワード: 有効 ログイン成功
2 ログインで無効な資格情報がないか確認してください
  1. アプリケーションを起動する
  2. ユーザー名とパスワードを入力してください
  3. 「OK」をクリックします
  4. 結果を確認する
ユーザー名: 無効 パスワード: 有効 ログイン失敗
3 ログインで無効な資格情報がないか確認してください
  1. アプリケーションを起動する
  2. ユーザー名とパスワードを入力してください
  3. 「OK」をクリックします
  4. 結果を確認する
ユーザー名: 有効 パスワード: 無効 ログイン失敗

ステップ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

  • 間違ったユーザー名と間違ったパスワードを入力してください – ログイン失敗
  • 正しいユーザー名とパスワードを空白で入力 – ログイン失敗
  • 空のユーザー名と空のパスワードを入力 – ログイン失敗

等々

💡プロのヒント: 各行の期待される結果を、入力データと同じデータファイルに保存してください。そうすることで、スクリプトは実際の結果と期待される結果を自動的に比較し、データファイルを完全な自己検証型テストスイートに変換できます。

フレームワークが完成したら、適切なツールを使うことで、データ管理、実行、レポート作成が簡素化されます。

最高のデータ駆動型テストツール

1) テストシグマ

テストシグマ はクラウドベースのデータ駆動型テストプラットフォームで、テストロジックとテストデータを分離することでテストカバレッジを最大化するのに非常に役立ちます。冗長なテストスクリプトを作成することなく、多様なデータセット、エッジケース、ビジネスシナリオに対してアプリケーションを検証する必要があるチーム向けに特別に設計されており、データ駆動型テストのワークフロー全体を効率化します。

データ駆動型テストプロジェクトでは、Testsigmaのパラメータ化機能を活用し、ExcelやCSVファイルなどの外部ソースから取得した複数のデータの組み合わせに対して、同一のテストシナリオを実行しました。プラットフォームのデータ行を反復処理する機能により、テストカバレッジは自動的に大幅に拡大しました。また、データレベルの結果に関する詳細なレポート機能により、Web、モバイル、APIレイヤー全体でどの入力の組み合わせが障害を引き起こしたかを迅速に特定することができました。

テストシグマ

機能と特徴:

  • 外部データソースの統合: この機能により、Excel スプレッドシート、CSV ファイル、データベース テーブルに直接接続して、テストデータを一元管理できます。ハードコードされた値を排除し、テストロジックとは独立してテストデータを管理できます。テスト スクリプトを変更することなくデータセットを更新できるため、柔軟性と保守性が確保されます。私はこれを使用して、数百ものデータ バリエーションを効率的に管理しながら、ping テストシナリオは簡潔で再利用可能である。
  • 自動化された複数行データの反復処理: Testsigmaは、1回のテスト実行で複数のデータ行にわたるテストシナリオを自動的に実行し、カバレッジを大幅に拡大します。テストケースを重複させることなく、多数の入力の組み合わせ、境界条件、ビジネスルールのバリエーションを検証できます。この機能は、データの順序付けと反復ロジックを透過的に処理します。スクリプトのメンテナンスオーバーヘッドを最小限に抑えながら、包括的な回帰テストを実行する場合に特に効果的であることがわかりました。
  • 動的テストステップのパラメータ化: 静的な値を、実行中に外部ソースからデータを取得する動的パラメータに置き換えることができます。データセットの値に基づいて、さまざまな入力、条件、期待される結果に適応するようにテストステップを設定できます。この機能は、複雑なデータ変換と条件付きロジックをサポートしています。私は、多様なビジネス要件とユーザーワークフローに対応する柔軟なテストシナリオを構築するために、この機能を活用しています。
  • データレベルの実行レポート: このプラットフォームは、テスト結果を個々のデータの組み合わせごとに分解し、どの入力が合格または不合格になったかを正確に示す詳細なレポートを生成します。パターンを分析し、問題のあるデータ範囲を特定し、 trac特定のデータセット行におけるエラーを検出します。この機能は、関係者とのコミュニケーションに役立つ視覚的なダッシュボードとエクスポート可能な分析機能を提供します。これらの分析結果を活用して、データ品質の改善を優先順位付けし、テストデータ戦略を洗練させることをお勧めします。
  • クロスプラットフォームのデータ駆動型サポート: Testsigmaは、統合されたワークフロー内で、Web、モバイル、APIテスト全体にデータ駆動型機能を拡張します。同じデータセットを適用することで、異なるアプリケーションレイヤーやテクノロジー間の一貫性を検証できます。この機能により、パラメータ化されたデータフローを用いた包括的なエンドツーエンドの検証が可能になります。私はこの機能を使用して、バックエンドのデータ処理が複数のプラットフォームにまたがるフロントエンドインターフェースに正しく反映されているかを同時に検証しました。

メリット

  • 実行されたテストケースの総数を大幅に増やすことなく、より広いテストカバレッジを実現しました。
  • 一般的なデータソースへの接続は簡単で、日常のテストワークフローのセットアップ時間を短縮します。
  • 詳細なデータレベルのレポートにより、どの組み合わせが失敗するかを素早く正確に特定しやすくなります。

デメリット

  • データセットは大量になるとすぐに混乱してしまうため、慎重に管理する必要がありました。

価格:

  • 価格: 包括的なサブスクリプションプランの一部としてデータ駆動型テスト機能を含むカスタム価格設定
  • 無料トライアル: 14日間の無料トライアル

Testsigma を訪問 >>

14日間の無料トライアル


2) Testiny

Testiny これは、データ駆動型テストケースを効率的に整理しながら、ping テストロジックとパラメータ化されたデータセットの明確な分離。多くのテスト実行にわたって多様なデータの組み合わせを管理する必要のあるチーム向けに構築されており、 trac能力。

データ駆動型プロジェクトを実行する際、 Testiny一括編集機能とテンプレート機能のおかげで、数百行のデータにわたるテストバリエーションを簡単に拡張できる点が気に入りました。このプラットフォームはJira、GitHub、GitLabと統合されているため、失敗したデータ組み合わせは課題にリンクされます。 tracKERSは自動的に動作します。

Testiny

機能と特徴:

  • 一括テストケース編集: Testiny 複数のテストケースを一度に編集、複製、パラメータ化できるため、データ駆動型のバリエーション作成が高速化されます。各ケースを個別に変更することなく、フォルダ間で変更を数秒で適用できます。スクリプトを書き直すことなく、新しいデータセットにテスト範囲を拡張する際に、私はこの機能を頼りにしています。
  • データ入力用のカスタムフィールド: プロジェクトごとにカスタムフィールドを定義できるため、データセット属性は trac各テスト実行と並行して記録できます。入力値、期待される結果、条件を1か所に明確に記録できます。私はこれらのフィールドを使用して、複雑なパラメータ化されたシナリオを後で簡単に監査できるようにしています。
  • リアルタイムテスト実行 Tracking: このプラットフォームはチームメンバー間でリアルタイムの実行状況を表示するため、データ駆動型のテスト実行が透明になります。ケースの割り当て、合格/不合格率の監視、ブロックされたデータ組み合わせの発生時の特定が可能です。これは、ping QAリーダーは、定期的な状況報告会議なしに情報共有を受けられる。
  • PDFおよび共有可能なレポート: Testiny グラフや実行概要を含む、見やすいPDFレポートを生成し、技術的な知識を持たない関係者にも共有できます。データセット、マイルストーン、リリースごとにフィルタリングすることも可能です。私は各スプリントの終了時にこれらのレポートを送信し、品質状況を伝えています。
  • ネイティブイシュー Tracker連携機能: Jira、GitHub、GitLabに接続します。 Azure DevOps、線形、 AsanaConfluence、Trello、monday.comなどを活用することで、失敗したデータ行を迅速にチケットに変換できます。テスト実行とエンジニアリングのワークフローを連携させることが可能です。これにより、QAチームと開発チーム間の引き継ぎにおける摩擦が劇的に軽減されることに気づきました。

メリット

  • 一括編集機能のおかげで、データセットが大きくなってもデータ駆動型テストのメンテナンスが軽量に保たれることに気づきました。
  • 接続する Testiny Jiraボードへの反映には数分しかかからず、失敗したデータ組み合わせがすぐにチケットとして表示されました。
  • リアルタイム tracking は、どの実行においてどのデータ組み合わせがまだ保留中であるかを明確に示してくれます

デメリット

  • 大規模なパラメータ化回帰テストスイート向けに、高度なAPI自動化フックが組み込まれていないのが残念だった。

価格:

  • 価格: 最大3ユーザーまで利用できる無料プラン。有料プランはユーザー数に応じて拡張され、プレミアムサポートが追加されます。
  • 無料トライアル: 21日間の無料トライアル

ロケーション選択 Testiny >>

21日間の無料トライアル


3) Testpad

Testpad これは、データ駆動型のシナリオを複雑な手順なしに迅速に把握する必要がある場合に私が頼りにしている、軽量なチェックリスト駆動型のテスト管理ツールです。階層的なチェックリストに基づいて構築されているため、テスターはデータのバリエーションを親ケースの下にグループ化し、迅速に実行できます。

データ駆動型セッション中に Testpad私はそのキーボード優先のインターフェースを使って、一度に数十種類の入力バリエーションを生成しました。ゲストテスター機能のおかげで、追加料金を支払うことなく、ドメインエキスパートを招いて特殊なデータ組み合わせを検証することができました。

Testpad

機能と特徴:

  • 階層型テストチェックリスト: Testpad パラメータ化されたテストをネストされたチェックリストに整理することで、関連するデータバリエーションを単一の親ケースの下にグループ化できます。ブランチを展開したり折りたたんだりして、特定のデータセットに焦点を当てることができます。私はこれを使って、複雑なデータマトリックスを視覚的に整理しています。
  • キーボード操作による編集: キーボードショートカットを使ってテスト項目を作成、インデント、並べ替えできるため、大規模なデータ駆動型プランを迅速に構築できます。マウスを使わずに作業の流れを維持できます。これにより、新しいデータセット行を取得する時間が大幅に短縮されることが分かりました。
  • ゲストテスターアクセス: Testpad 無制限のゲストテスターをシートごとの料金なしでサポートするため、特定のデータ組み合わせについてドメインエキスパートを招集できます。ライセンス費用をかけずに、関係者を招待してエッジケースを検証することも可能です。私は、パラメータ化されたシナリオを用いたユーザー受け入れテストでこの機能を活用しています。
  • すぐに共有できるレポート: このプラットフォームは軽量なレポートを生成するため、リンク経由で共有でき、ツールを開かなくても進捗状況を確認できます。テスター、ステータス、テストブランチでフィルタリングすることも可能です。私はデータ駆動型テスト実行の終了時に、これらのレポートをプロダクトマネージャーに送信しています。
  • 問題 Tracker リンク: 失敗したテストをシンプルなリンクでJiraまたはGitHubのチケットに紐付けることで、データ行の不具合を迅速にエンジニアリングチームに報告できます。失敗したチェックリスト項目から直接コンテキストを添付することも可能です。ツールにルーティングを任せることで、テスターはテストの実行に集中できます。

メリット

  • キーボード優先のチェックリスト形式のおかげで、何百ものデータバリエーションを素早く確認できる。
  • 特定のデータシナリオのために外部テスターを招くのに追加費用はかからず、実際の予算を節約できます。
  • モバイルフレンドリーなインターフェースのおかげで、通勤中や立ち仕事中にデータに基づいた煙チェックを実行できます。

デメリット

  • 大規模なデータ駆動型回帰分析のための自動化フックが組み込まれていればいいのに。

価格:

  • 価格: 月額59ドルからプランがあり、大規模チーム向けにはカスタムエンタープライズプランも用意されています。
  • 無料トライアル: 30日無料トライアル

ロケーション選択 Testpad >>

30日間の無料トライアル

データ駆動型テストのベスト プラクティス

以下に、データ駆動型テストにおける最適なテスト手法を示します。

  • データ駆動型のテストプロセスでは現実的な情報を使用することが理想的です
  • テスト フロー ナビゲーションはテスト スクリプト内にコーディングする必要があります
  • 意味のあるデータで仮想 API を駆動する
  • データを使用して動的なアサーションを推進する
  • テストで陽性結果も陰性結果も出る
  • セキュリティとパフォーマンスのためのデータ駆動型機能テストを再利用する

データ駆動型テストの利点

データ駆動型テストには多くの利点があります。そのいくつかをご紹介します。

  1. 複数のデータセットを使用してアプリケーションをテストできます 回帰試験
  2. テスト データと検証データは XNUMX つのファイルにまとめられ、テスト ケースのロジックから分離されます。
  3. このツールを使えば、テストスクリプトを単一のリポジトリにまとめることができます。これにより、テストの理解、保守、管理が容易になります。
  4. アクションと関数はさまざまなテストで再利用できます。
  5. 一部のツールはテストデータを自動的に生成します。これは、大量のランダムなテストデータが必要な場合に便利で、時間の節約に役立ちます。
  6. データ駆動型テストは、開発のどの段階でも実施可能です。データ駆動型テストケースは通常、単一のプロセスに統合されますが、複数のテストケースで使用することも可能です。
  7. 開発者とテスターは、テスト ケース/スクリプトのロジックをテスト データから明確に分離できます。
  8. 同じテストケースを複数回実行することで、テストケースとスクリプトの数を減らすことができます。
  9. テストスクリプトの変更はテストデータに影響を与えません

データ駆動型テストの欠点

データ駆動型オートメーションのテスト方法には次のような欠点があります。

  1. テストの品質は、実装チームの自動化スキルに依存する。
  2. 大量のデータをテストする場合、データ検証は時間のかかる作業です。
  3. データ駆動型テストには大量のコーディングが必要となるため、メンテナンスは大きな課題となる。
  4. 高度な技術力が求められます。 テスターはまったく新しいスクリプト言語を学習する必要がある場合があります。
  5. 今後、スクリプト管理、テストインフラストラクチャ、テスト結果などに関するドキュメントがさらに追加される予定です。
  6. データ ファイルを作成および管理するには、メモ帳などのテキスト エディタが必要です。

データ駆動型テストとキーワード駆動型テスト

初心者は、データ駆動型テストとキーワード駆動型テストを混同しがちです。どちらもテスト設計とテストスクリプトを分離しているからです。違いは外部化される内容にあります。データ駆動型テストは入力値を外部化するのに対し、キーワード駆動型テストはアクション自体を再利用可能なキーワードとして外部化します。以下の表は、この2つのアプローチを比較したものです。

データ駆動型テスト キーワード駆動テスト
外部化されるもの テストデータ(入力データと期待される結果) テストアクション(ログイン、クリック、検証などのキーワード)
情報元 Excel、CSV、XML、またはデータベーステーブル キーワードテーブルとオプションのデータテーブル
必要なスキル 中程度のスクリプト作成知識 初期設計の手間は増えるが、新しいテストを作成するためのコーディングは少なくて済む。
に最適 複数の入力組み合わせで1つのシナリオを繰り返す 再利用可能なアクションブロックから多くのシナリオを構築する
メンテナンス スクリプトに手を加えずにデータファイルを更新する アプリケーションの動作が変更された場合は、キーワードライブラリを更新してください。

多くのチームは、両方のアプローチを組み合わせたハイブリッドフレームワークを採用しており、キーワードで再利用可能なアクションを定義し、外部データファイルから各テスト実行に必要な値を取得している。

よくあるご質問

はい、しかし非効率的です。手動テスターはスプレッドシートからの異なる入力データを使用して同じ手順を実行できますが、自動化の方が望ましいのは、何百ものデータ組み合わせを迅速かつ一貫して、人為的ミスなく実行できるからです。

Selenium   TestNG or JUnit, UFTクラウドプラットフォームなど テストシグマ それをサポートします。外部ファイルを読み取ることができる言語であれば、 Java, Python、そしてC#は、データ駆動型フレームワークを実装できます。

すべての入力フィールドについて、有効値、無効値、境界値、空白値を網羅できるだけの行数を使用してください。量よりも質が重要です。厳選された10通りの組み合わせは、無作為に選んだ1000通りの組み合わせよりも多くの欠陥を明らかにすることが多いです。

はい。AIツールはアプリケーション分野を分析し、人間のテスターが見落としがちなエッジケースも含め、現実的で多様性に富み、プライバシーに配慮した合成データセットを自動的に生成します。これにより、データファイルの準備と管理にかかる時間を削減できます。

AIは、UIの変更後も維持される自己修復型ロケーターを追加し、どのデータ組み合わせが最も失敗しやすいかを予測し、リスクの高い行を優先します。これにより、大規模なパラメータ化されたスイートの安定性を維持しながら、実行時間とメンテナンスの手間を削減します。