1はじめに
自動テストは、テストの種類に応じて異なるツールで作成できます。 統合テストは、SoapUI、単体テストモジュールを使用した単体テスト、Selenium IDEを使用したUIテストで作成できます。 Selenium IDEを使用すると、自動化支援の探索的テストを支援するスクリプトを作成できます。 堅牢なブラウザベースのテストを作成する場合は、Seleniumを使用したテストフレームワークの使用を検討する必要があります。
TestNGは、Seleniumを駆動するために使用できるJavaテストフレームワークです。 このハウツーでは、TestNGを使用して自動テストを作成する方法を学びます。
このハウツーは、次のことを行う方法をお教えします:
- TestNGテストファイルの作成
- TestNGを使用した自動テストの実行
- TestNGを使用したレポートの生成
2 前提条件
このハウツーを開始する前に、次の前提条件を完了していることを確認してください:
- Eclipseのダウンロードとインストール
- Seleniumクライアントのダウンロード&WebDriver for Java
このハウツーでは、シナリオの例として、”第三のテスト方法の追加”セクションから始まる会社経費アプリテンプレートを使用します。 しかし、このアプリテンプレートは、もはやmendixでプラットフォームサポートされていません。 したがって、このアプリテンプレートを使用するセクションは、参照としてのみ使用でき、段階的に完了できるセクションとしては使用できません。
3 Javaプロジェクトの作成
この章では、TestNGプラグインをインストールし、TestNGおよびSeleniumライブラリを含むEclipseでJavaプロジェクトを作成します:
- Eclipseを開きます。
- TestNGのダウンロードのEclipseプラグイン>update siteからのインストールセクションの指示に従います。
- 変更を有効にするためにEclipseを再起動します。
- “ファイル”>”新規”>”Javaプロジェクト”を選択します。
- プロジェクト名に”MyFirstTestNGProject”と入力し、”次へ”をクリックします。
- ライブラリタブを選択し、ライブラリの追加をクリックします。
- TestNGを選択し、次へをクリックします。
- 完了をクリックして、デフォルトのTestNGライブラリをこのプロジェクトに設定します。[外部Jarの追加…]をクリックし、Selenium JARファイルを保存した場所に移動します。
-
すべてのJARファイルをselenium-およびlibsフォルダ内に追加します:
-
“終了”をクリックして、Javaプロジェクトを作成します。 MyFirstTestNGProjectがパッケージエクスプローラに表示されます:
これで、プロジェクトの設定が完了しました!
4TestNGファイルの作成
新しいTestNGファイルを作成するには、次の手順に従います:
- srcフォルダを右クリックし、新規>その他を選択します…:
-
“TestNGクラス”を選択し、”次へ”をクリックします:
-
参照…をクリックしてソースフォルダを選択し、MyFirstTestNGProject>srcを選択し、OKをクリックします。
-
次の情報を入力します:
- パッケージ名:myfirsttestngpackage
- クラス名:MyFirstTestNGFile
- @BeforeTest:true
- @AfterTest: 真
-
「完了」をクリックします。 最初のTestNGファイルのテンプレートが自動的に作成されます:
@Test
注釈は、その下のメソッドがテストケースであることを示すために使用されます。 この場合、メソッドf
はテストケースです。@BeforeTest
注釈は、その下のメソッドが最初のテストケースの前に実行されることを示すために使用されます。@AfterTest
注釈は、その下のメソッドが最後のテストケースの後に実行されることを示すために使用されます。
5 テストケースの作成
テストケースのコードを作成しましょう。5.1WebDriverの追加
WebDriverに使用する変数を作成するには、次の手順に従います:
-
以下を検索します:
public class MyFirstTestNGFile {
-
次の行に以下のコードを追加します。 これにより、WebDriverタイプの
driver
変数が作成されます:public WebDriver driver;
-
Ctrl+Shift+Oキーを押して、インポートを整理します。 これにより、不足している文がインポートされ、未使用のimport文が削除されます。 次のステートメントがインポートされます:
import org.openqa.selenium.WebDriver;
5.2 BeforeTestメソッドの追加
@BeforeTest
注釈は、その下のメソッドが最初のテストケースの前に実行されることを示すために使用されます。 最初のテストケースの前に、次の手順に従ってFirefoxブラウザを開きます:
-
次のコードを変更します:
@BeforeTestpublic void beforeTest() {}
に:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
これにより、Firefoxドライバの新しいインスタンスが作成され、Firefoxブラウザが開きます。
-
CTRL+SHIFT+Oを押します。:
import org.openqa.selenium.firefox.FirefoxDriver;
5.3AfterTestメソッドの追加
@AfterTest
注釈は、その下のメソッドが最後のテストケースの後に実行されることを示すために使用されます。 最後のテストケースの後、次のコードを変更してブラウザーを閉じます:
@AfterTestpublic void afterTest() {}
に:
@AfterTestpublic void afterTest() {driver.close();}
これにより、Firefoxブラウザが閉じます。
5.4最初のテストメソッドの追加
最初のテストメソッドを追加するには、ブラウザでURLを開き、次のコードを変更します:
@Testpublic void f() {}
に:
@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}
このテストメソッドは、FirefoxブラウザでURLhttp://localhost:8080/index.html
を開きます。 既定では、@Test
で注釈が付けられたメソッドはアルファベット順に実行されます。 パラメーターを使用して、注釈の関数を変更できます。 priority
パラメーターを使用すると、メソッドを別の順序で実行できます。 TestNGは@Test
アノテーションを実行し、優先度が最も低い値から最大値までを指定します。
5.5第二のテストメソッドを追加
今、あなたはログインウィンドウ上にあることを、あなたはサインインしたいと思うでしょう。 2番目のテスト方法を追加するには、次の手順を実行します:
- Firefoxを開き、
http://localhost:8080/index.html
に移動します。 - 開発者ツールを使用して要素を検査します。
-
ユーザー名入力フィールドをクリックします。 このフィールドのIDはusernameInputです。 IDのCSSセレクタは、ハッシュタグ(
#
)+IDの名前です。 ユーザー名フィールドの場合、これは#usernameInputになります。 同じ原理が他のステップにも使用されます。 CSSセレクタ#usernameInputは一意です。 一致するノードが1つあります: -
パスワード入力フィールドとサインインボタンについて、手順5-6を繰り返します:
要素 CSSセレクタ パスワード入力欄 #passwordInput
サインインボタン #loginButton
-
login
という新しいテストメソッドを追加します。 次のコードを使用します:@Test(priority=2)public void login() { driver.findElement(By.cssSelector("#usernameInput")).sendKeys("MxAdmin"); driver.findElement(By.cssSelector("#passwordInput")).sendKeys("1"); driver.findElement(By.cssSelector("#loginButton")).click();}
このテスト方法には、次のテスト手順が含まれています:
- ユーザー名として”MxAdmin”と入力します。
- パスワードに1を入力します。
- ログインボタンをクリックします。
5.6 3番目のテストメソッドの追加
3番目のテストメソッドを追加するには、次の手順に従います:
- アプリを開き、アプリエクスプローラーでProgramDetailページを開きます。
-
経費タブを選択します:
経費タブの名前はtabpage4です。 すべての要素は自動的にCSSクラス
mx-name-
を取得するため、アプリの実行中にexpensesタブはCSSクラスmx-name-tabPage4
を取得します。 -
Eclipseに戻ります。
-
openExpensesTab
という新しいテストメソッドを追加します。 次のコードを使用します:@Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}
このテストメソッドは、正常に戻るか10秒が経過するまで、500ミリ秒ごとに
ExpectedCondition
を呼び出します。 10秒が経過し、要素が見つからない場合、TimeoutExceptionがスローされます。 要素が10秒以内に配置されている場合、メソッドはクラス名mx-name-tabPage4
の要素をクリックします。 経費タブのクラスはmx-name-tabPage4
です。 クラスのCSSセレクタはドット(.
)+クラス名なので、経費タブでは.mx-name-tabPage4
になります。
5.7第四のテスト方法を追加
これで、経費タブに移動したので、新しい経費を作成します。 4番目のテストメソッドを追加するには、次の手順を実行します:
- Studio Proを開き、Desktop_Adminmenuページを開きます。
-
新しい経費ボタンを選択します:
新しい経費ボタンの名前は
newButton3
なので、ボタンにはmx-name-newButton3
CSSクラスがあります: -
デスクトップ_Expense_Newedit_Adminページを開きます。
-
次の要素の名前を検索します(手順3で行ったように)。:
要素 名前 金額フィールド textBox6
説明ドロップダウン referenceSelector1
保存ボタン saveButton1
The name of an element in your app may be different than the name shown in the Name column. In step 7, use the name of the element of your app.
-
Eclipseに戻ります。
-
createExpense
という新しいテストメソッドを追加します。 次のコードを使用します:@Test(priority=4)public void createExpense() { driver.findElement(By.cssSelector(".mx-name-newButton3")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).clear(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).sendKeys("15.00"); driver.findElement(By.cssSelector(".mx-window-active .mx-name-referenceSelector1 option:nth-child(2)")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-saveButton1")).click();}
このテスト方法には、次のテスト手順が含まれています:
- [新規経費]をクリックします。
- 金額フィールドをクリアします。
- 15を入力します。[金額]フィールドに00を入力します。
- 説明ドロップダウンメニューから2番目のオプションを選択します。
- 保存をクリックします。
新規経費(
.mx-name-newButton3
)をクリックするとポップアップウィンドウが表示されます。 アクティブなページの要素(この場合はポップアップ)を確実に取得するには、ポップアップ内の要素のCSSセレクタに.mx-window-active
を追加する必要があります。すべての入力フィールドに対して、CSSセレクタの最後に
input
を追加する必要があります。amountフィールドのデフォルト値は0.00です。 新しい値を入力するには、最初にフィールドをクリアする必要があります。
リファレンスセレクタには、空、宿泊、食事、その他、消耗品、輸送の六つのオプションがあります。 宿泊施設(2番目のオプション)を選択するには、CSSセレクタの最後に
option:nth-child(2)
を追加する必要があります。
5.8 5番目のテスト方法を追加する
経費を作成した後、サインアウトする必要があります。 5番目のテストメソッドを追加するには、次の手順を実行します:
- Studio Proを開き、Desktop_Myinfoスニペットを開きます。
-
次の要素の名前を検索します:
要素 名前 サインアウトボタン signOutButton1
-
signOut
という新しいテストメソッドを追加します。 次のコードを使用します:@Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}
このテストメソッドは、
mx-name-signOutButton1
クラス名を持つ要素をクリックします。
6 テストを実行する
これで、テストを実行する準備が整いました。 テストを実行するには、次の手順を実行します:
- MyFirstTestNGProjectフォルダーを右クリックします。
-
>TestNGテストとして実行を選択します:
テストの結果は、コンソールウィンドウとTestNG結果ウィンドウに表示されます:
7 テストレポート
TestNGはHTML形式でレポートを生成します。 レポートをテストするには、次の手順を実行します:
-
MyFirstTestNGProjectフォルダーを右クリックし、”更新”を選択します。 テスト出力フォルダが作成されます:
-
test-outputフォルダを開きます。
-
インデックスを右クリックします。htmlファイル。
-
>Webブラウザで開くを選択します。 レポートは次のようになります:
-
(表示)をクリックします。 テスト方法はアルファベット順に示されています:
-
時系列ビューをクリックします。 メソッドの概要が時系列順に表示されます:
8 テストスイートの作成
“テストの実行”で行ったようにテストを実行すると、テストスイートが自動的に作成されます。 このテストスイートには、プロジェクト内にあるすべてのtestNGファイルが含まれています。 しかし、特定のテストのみを実行したい場合はどうなりますか? 自分でテストスイートを作成する必要があります。
- srcフォルダを右クリックし、新規>その他を選択します。
-
XMLフォルダを開き、XMLファイルを選択します:
-
[次へ]をクリックします。
-
ファイル名をMyFirstTestSuiteに変更します。xml。
-
“終了”をクリックしてXMLファイルを作成します:
-
[ソース]タブをクリックします。:
-
次のコードを変更します:
<?xml version="1.0" encoding="UTF-8"?>
を
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
にすると、新しいテストスイート
MyFirstTestSuite
が作成されます。 テストスイートにはTest1
という1つのテストが含まれています。 テストには1つのtestNGファイルmyfirsttestngpackage.MyFirstTestNGFile
が含まれています。 -
MyFirstTestSuiteを右クリックします。xmlファイルを選択し、Run as>1TestNG Suiteを選択します。
よくやった! あなたの最初のTestNGスイートを作成しました!
9@Parameters
を使用して複数のブラウザでテストスイートを実行します作成したテストはFirefoxでのみ実行されます。 他のブラウザで機能が期待どおりに動作することを確認する場合は、マルチブラウザテストを実行する必要があります。 TestNGを使用すると、異なるブラウザで同じテストを実行するのは非常に簡単です。
- ChromeDriverのダウンロードはこちら:https://sites.google.com/a/chromium.org/chromedriver/downloads。
- IEDriverのダウンロードはこちら:http://selenium-release.storage.googleapis.com/index.html。
-
Eclipseで、MyFirstTestNGFileを開き、次のコードを変更します:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
に:
@Parameters("browser")@BeforeTestpublic void beforeTest(String browser) { if(browser.equalsIgnoreCase("chrome")){ System.setProperty("webdriver.chrome.driver", "C://Selenium/chromedriver.exe"); driver = new ChromeDriver(); } else if(browser.equalsIgnoreCase("ie")){ System.setProperty("webdriver.ie.driver", "C://Selenium/IEDriverServer.exe"); driver = new InternetExplorerDriver(); } else{ driver = new FirefoxDriver(); }}
@Parameters
テストスイートXMLからパラメータ(この場合はbrowser
)を挿入するために使用されます。 Browserパラメータがchrome
の場合、Chromeドライバが起動します。exeが格納されていますが、C://Selenium フォルダ。 このコードでは正しいパスを使用してください。
-
Ctrl+Shift+Oキーを押すと、次のステートメントがインポートされます:
import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
-
MyFirstTestSuiteを開き、次のコード
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
を次のコードに変更します:
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="ChromeTest"> <parameter name="browser" value="chrome" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="IETest"> <parameter name="browser" value="ie" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="firefox" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
最初のテスト(
ChromeTest
と呼ばれる)には、ブラウザパラメータchrome
があります。 このパラメーターは、MyFirstTestNGFileの@BeforeTest
メソッドで使用されます。 -
MyFirstTestSuiteを右クリックします。xmlファイルを選択し、>TestNG Suiteとして実行を選択します:
よくやった! あなたはTestNGであなたの最初の自動化されたクロスブラウザテストを作成しました!
これで、TestNGテストファイルの作成方法、テストスイートの作成方法、および複数のブラウザで自動テストを実行する方法がわかりました。
10続きを読む
- Selenium IDEを使用したMendixアプリケーションのテスト
- 単体テストモジュールを使用したマイクロフローのテスト