公開日:6、2020
TestNG DataProviders – エンドツーエンドの概要とデモ
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 機能を使用するために必要なもの:
- Java
- Selenium
- Eclipse IDE
- テスト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 for Java Developers」を選択し、インストールを続行してください。

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

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

ステップ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/
圧縮リンクをクリックして最新バージョンを選択し、ファイルをデバイスに保存します。

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機能を最大限に活用し、異なるデータセットでテストケースを簡単に実行しながら、カスタマイズされたレポートを生成できます。