TestNG DataProviders – エンドツーエンドの概要とデモ

最終更新日 2020年9月06日 — Continuous Testing 上級

 

Cedric Beust 氏は、2003 年に Java プログラミング言語を使用して、人気の高いテスト自動化フレームワーク TestNG を作成しました。これは JUnit や NUnit に似ていますが、構成管理の貧弱さ、静的プログラミング モデル、依存性テストの欠如など、それらの欠点のいくつかを解決しています。機能テスト、ユニット テスト、統合システム テストなど、幅広いテスト プロジェクトをカバーするように設計されています。TestNG は、テスターが複雑なテスト タスクを実行できるようにするだけでなく、機能を使いやすくする強力な機能を提供します。TestNG は主にアノテーションで人気ですが、TestNG DataProviders もデータ駆動型テストを簡単かつ効率的にする便利な機能です。データのパラメーター化、データ リスナー、DataProviders、HTML レポート、ログ、テスト ケースのグループ化、優先順位付けと並列テストの機能により、TestNG は多くのテスターの間で急速に人気が高まっています。

TestNG DataProviders とは何ですか?

TestNGの重要な側面の一つは、データ駆動型テストです。データプロバイダー機能は、データ駆動型テストの一部であり、1回の実行でテストケースに異なる値を提供します。つまり、1つのテストケースを一度実行するだけで、メソッドを異なるデータ値で実行できます。例えば、登録ページを異なる入力値でテストできますが、テストは一度しか実行されません。TestNGのデータプロバイダー機能は、これらの値をすべて1つずつテストケースに渡すため、1回の実行で異なるデータセットをテストできます。

TestNG DataProvidersの必要性

TestNG パラメータは、XML ファイルを介して関数に値を提供する同様の機能です。パラメータを使用すると、単一のデータセットで複数の関数を実行したり、複数のデータセットで単一の関数を実行したりできます。ただし、パラメータの課題は、その値でテストケースを一度しか実行できないことです。標準的なテストプロジェクトでは、複数の値でテストケースを実行する必要があります。このような場合、異なるデータセットを使用してテストケースを複数回実行する必要があります。TestNG データプロバイダーは、テストケースを一度だけ実行しながら、異なるデータセットを使用できるようにすることで、この課題を解決します。アノテーションを介して配列化されたデータ値をテストメソッドに提供します。

システムを教えてください。

TestNG DataProviders 機能では以下の構文を使用します。例:

[java] @DataProvider (name = “ExperitestDataProvider”) public Object[][] ExperitestDPMethod() { return new Object [][] { values} } [/java]

構文を確認すると、TestNGアノテーションが使用されていることがわかります。ここで使用されているパラメータは1つだけで、それは名前です。このパラメータは、データプロバイダの名前として文字列値のみを受け取ります。データプロバイダには独自のメソッドがあります。例えば、ここではExperitestDPMethod()です。デフォルトでは、TestNGはメソッドが指定されていない場合、メソッド名をデータプロバイダの名前として受け取ります。

テスト ケースを実行すると、データ プロバイダーによってデータ プロバイダー メソッドが呼び出され、2D オブジェクトのリストが返されて、各データ セットのデータ駆動型テストが実行されます。

設置

以下はwing toTestNg DataProviders 機能を使用するために必要なもの:

  1. Java
  2. Selenium
  3. Eclipse IDE
  4. テストNG

ステップ1:Javaのインストール

TestNGを実行するには、Java Development Kit (JDK) 8.0以降が必要です。こちらのリンクにアクセスして、Javaをダウンロードし、お使いのマシンにインストールしてください。

https://www.oracle.com/in/java/technologies/javase-downloads.html

Java SE 14.0.2が最新バージョンです。実行ファイルをダウンロードし、ダブルクリックしてソフトウェアをインストールしてください。

ステップ2: 環境変数を設定する

Javaをインストールしたら、システムへのJavaパスを指定する必要があります。設定方法は、「システム」→「システムの詳細プロパティ」→「詳細設定」→「環境変数」です。

データプロバイダーのテスト

「ユーザーのユーザー変数」には次のように入力します。

  • C:Program FilesJavajdk-14.0.2

システム変数パスには、bin フォルダーのパスを入力します。

  • C:Program FilesJavajdk-14.0.2bin

これで、Java が使用できるようになりました。

ステップ3: Eclipseをインストールする

Javaスクリプトを作成および編集するには、Java IDEが必要です。EclipseとIntelliJは、Javaでよく使われる2つのIDEです。Eclipseをインストールするには、次のリンクにアクセスしてください。

https://www.eclipse.org/downloads/

最新バージョンはEclipse IDE 2020-06です。ソフトウェアをダウンロードしたら、ダブルクリックしてインストールしてください。

Eclipseテストプロバイダー

Eclipseには複数のバージョンがあります。「Eclipse for Java Developers」を選択し、インストールを続行してください。

Eclipse テストデータプロバイダー

インストールが完了したら、IDE を起動してください。IDE を起動するたびに、ワークスペースのフォルダを選択するよう求められます。デフォルトの場所をそのまま使用することも、新しい場所を選択することもできます。

ワークスペーステストデータプロバイダー

Eclipseを初めて起動すると、ようこそ画面が表示されます。これでIDEが使用できるようになります。

Eclipse テストデータプロバイダー

ステップ4: Seleniumをインストールする

Seleniumは、近年非常に人気のあるオープンソースのテスト自動化フレームワークです。Seleniumソフトウェアをダウンロードするには、こちらのリンクをご覧ください。

https://www.selenium.dev/downloads/

Seleniumスタンドアロンサーバーをjarファイルでダウンロードしてください。最新の安定バージョンは3.141.59です。インストールする必要はありません。そのままマシンに保存してください。

ステップ5: TestNGをインストールする

以前のバージョンのEclipseでは、TestNGはEclipse Marketplaceから入手でき、「インストール」をクリックするだけでEclipseに追加できました。最新バージョンでは、TestNGを手動でダウンロードし、ライブラリファイルとして追加する必要があります。TestNGをダウンロードするには、こちらのリンクにアクセスしてください。

https://dl.bintray.com/testng-team/testng-eclipse-release/

圧縮リンクをクリックして最新バージョンを選択し、ファイルをデバイスに保存します。

テストデータプロバイダー zip

EclipseにTestNGを追加するには、IDEを開いて「新規ソフトウェアのインストール」をクリックします。次の画面で「追加」をクリックし、ファイルを手動で追加します。

あるいは、ツールが自動的にファイルをダウンロードするように、TestNG リンクを直接提供することもできます。

テストデータプロバイダー利用可能なソフトウェア

TestNGを選択し、「次へ」をクリックし、ライセンス契約に同意して「完了」をクリックします。Eclipseを再起動して、TestNGの設定手順を完了します。

TestNG が正しくインストールされているかどうかを確認するには、Ctrl + N をクリックして、そこに TestNG がリストされているかどうかを確認します。

データプロバイダーのテストウィザード

これで、TestNG が使用できるようになりました。

TestNG DataProviders を使った最初のテスト

すべてのツールがインストールされたので、最初のテストを実行して、TestNG DataProviders がどのように動作するかを確認しましょう。

Eclipse IDEを開き、「新規」→「Javaプロジェクト」をクリックします。プロジェクト名を入力して「次へ」をクリックします。

新しいプロジェクト

次の画面で、「ライブラリ」をクリックし、「外部 jar の追加」をクリックします。

外部ジャー

Selenium Standalone Server の jar ファイルを選択し、「OK」をクリックします。Selenium がプロジェクトに追加されます。

次に、「ライブラリの追加」をクリックし、次の画面で TestNG を選択して、プロジェクトに TestNG を追加します。

ライブラリを追加

Selenium と TestNG は、Java ランタイム環境とともにプロジェクトに追加されます。

新しいパッケージを作成するには、[新規] -> [パッケージ] をクリックします。

新しいパッケージ

そのパッケージ内に新しいクラスを作成します。例: ExperitestDataProviders.java

次に、このコードをクラスに追加します。TestNG DataProvidersが含まれていることに注意してください。

[java] パッケージ ExperitestDataProviders; インポート org.testng.annotations.DataProvider; インポート org.testng.annotations.Test; パブリック クラス ExperitestTestNGDP { @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest1”}, {“Experitest2”}, {“Experitest3”}, {“Experitest4”}, {“Experitest5”}}; } @Test (dataProvider = “Experitest-DataProvider”) public void ExperiTest (String val) { System.out.println(“渡されたパラメータは: ” + val); } } [/java]

  • ここでは、「Experitest-DataProvider」という名前のデータ プロバイダーを定義し、5 つの値 (Experitest1、Experitest2 など) を指定しました。
  • テスト中 (@Test)、データ プロバイダーを呼び出しました。
  • 文字列パラメータを持つメソッドを記述し、値を 'val' に格納しました。
  • テスト ケースは文字列値を取得して出力します。

このテストケースを一度実行すると、5回実行され、そのたびに1つの文字列値が出力されます。つまり、DataProviders機能を使用することで、1つのテストケースを複数回実行していることになります。

データプロバイダーのテスト

これは、5 つのテストが実行され、5 つのテストが合格したことを示す出力です。

変数のテスト

SeeTestクラウドデモ

SeeTest Cloudで実行される別のテストデモをご紹介します。このテストケースは、クラウドでWebブラウザを開き、そのブラウザでGoogleウェブサイトを開きます。次に、検索ボックスに「Experitest」と入力し、そのキーワードでWebを検索します。その後、再びGoogleサイトを開き、「SeeTest」というキーワードを検索します。ここではテストケースは1つしか記述していませんが、「Experitest-DataProvider」というTestNGデータプロバイダーを定義し、テストケースに2つの値を提供しています。

[java] @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } [/java]

したがって、データ プロバイダー機能を使用すると、ここでは 1 つのテスト ケースを 2 回実行することになります。

ここでは、コードは次のとおりです。

[java] パッケージ ExperitestDataProviders; インポート org.openqa.selenium.*; インポート org.openqa.selenium.remote.BrowserType; インポート org.openqa.selenium.remote.CapabilityType; インポート org.openqa.selenium.remote.DesiredCapabilities; インポート org.openqa.selenium.remote.RemoteWebDriver; インポート org.openqa.selenium.support.ui.ExpectedConditions; インポート org.openqa.selenium.support.ui.WebDriverWait; インポート org.testng.annotations.AfterMethod; インポート org.testng.annotations.BeforeMethod; インポート org.testng.annotations.DataProvider; インポート org.testng.annotations.Test; インポート java.net.URL; public class DPexample { private String host = “https://cloud.seetest.io”; private static final String ACCESS_KEY = “ここにアクセスキーを入力してください”; private RemoteWebDriver driver; private URL url; private DesiredCapabilities dc = new DesiredCapabilities(); @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } @BeforeMethod public void setUp() throws Exception { url = new URL(“https://cloud.seetest.io/wd/hub”); dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME); dc.setCapability(CapabilityType.PLATFORM, Platform.ANY); dc.setCapability(“accessKey”, ACCESS_KEY); dc.setCapability(“testName”, “クイックスタート Chrome ブラウザ デモ”); driver = new RemoteWebDriver(url, dc); } @Test (dataProvider = “Experitest-DataProvider”) public void ExperiTest (String val) { driver.get(“https://www.google.com”); new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.name(“q”))); WebElement searchBar = driver.findElement(By.name(“q”)); searchBar.click(); searchBar.sendKeys(val); searchBar.sendKeys(Keys.ENTER); } @AfterMethod public void tearDown() { System.out.println(“レポート URL: “+ driver.getCapabilities().getCapability(“reportUrl”)); driver.quit(); } } [/java]

結果は次のとおりです。

結果

SeeTestは包括的なWebおよびモバイルテスト自動化ツールです 直感的なダッシュボードからテストを簡単に実行・管理できます。また、テストの分析を容易にする強力なレポートツールも備えています。

デモテストのレポートは次のとおりです。

試験報告書

テストの詳細は次のとおりです。

クイックスタート

製品概要

DataProvidersは、テスターに​​とって便利な機能です。単一のテストケースを作成し、定義済みのデータセット値を使って複数回実行できます。また、単一のデータセットを使用して複数のメソッドを実行することもできます。TestNG DataProvidersは、データ駆動型テストをシンプルかつ容易に実現します。SeeTestプラットフォームでは、TestNG DataProviders機能を最大限に活用し、異なるデータセットでテストケースを簡単に実行しながら、カスタマイズされたレポートを生成できます。

ガイ・アリエリCTO

お勧めの関連ガジェット