[Selenium2] Webテストを自動化に挑戦!!基本編
こんにちは、@yoheiMuneです。
今日は毛色が変わってJavaを。Java+Selenium2を使って、Webテスト(画面の動作確認テスト)を自動化する取組みを始めたので、その内容を忘ないためにも記載したいと思います。
だってWebテスト(画面を触って動作確認するテスト)って面倒じゃないですか。
まず、テストデータをDBに投入して、入力したりボタンクリックしたり色々触りながら、画面状態が思った通りに動くかを確認する。
時には、1画面で確認する項目が数百となる事もあって、目がチカチカする。まぁそりゃ、人間ですから確認漏れも発生しますよ。
それも一回だけなら我慢出来るけど、仕様が変わったからって、回帰テストの名の下、面倒なWebテストを何度もしなきゃしけない。
そんなことは続けたくない。だから、出来る限りプログラムにテストしてもらえるようにしたい。
そんな思いで、Selenium + Javaの取組みを始めました。
まずは、以下のサイトに訪れます。
■Seleniumの本家のページ
http://seleniumhq.org/
Seleniumにはいくつかのプロジェクトがありますが、今回使うのは、以下です。以下URLのダウンロードページからダウンロード出来ます。
■Selenium Client Drivers
http://seleniumhq.org/download/
ダウンロードしたら、その中に、色々とJarファイルがあるので、ソース以外は、Javaプロジェクトのクラスパスに通します。
(多分不要なものもあるのですが、現時点では見分けがつきません)
これで準備完了です!!
余談ですが、Seleniumは出た当初よりもかなり、パワーアップしています。
当初は、Webブラウザー上で動くプログラムだったので、アラートボタンが押せないとか、AJAXに関するところのテストが出来ないとか問題があったようです。 が、しかし、現在は、Webブラウザー外で動くようになり、更にGoogleのWebDriverというプロジェクトも一緒になることで、かなり多くの事がテスト出来るようです。
以下サンプルは、Seleniumのページにも登場するサンプルで、Firefoxを利用して、Google検索を行うテストです。
ブラウザを立ち上げるのが、スゴく簡単に出来るのは、感動的です。
こんな感じに簡単に実装出来るようです。便利(*´∇`*)
■Seleniumの解説ページ。入門に良いかも。
http://seleniumhq.org/docs/
■Google Code上のSeleniumページ。Javadocとかがあります。
http://code.google.com/p/selenium/
ただテスト用のコード量が多くなりそうなので、そこは危険危険。何か対策を考えなきゃ。
次回は、Web系テストには必須の、画面キャプチャを自動で取る方法を試せたらいいな。
今日は毛色が変わってJavaを。Java+Selenium2を使って、Webテスト(画面の動作確認テスト)を自動化する取組みを始めたので、その内容を忘ないためにも記載したいと思います。
Webテストを自動化する意味
おっ、重々しいタイトルとしてしまった。Webテスト自動化したいじゃないか、という思いから使い始めました。だってWebテスト(画面を触って動作確認するテスト)って面倒じゃないですか。
まず、テストデータをDBに投入して、入力したりボタンクリックしたり色々触りながら、画面状態が思った通りに動くかを確認する。
時には、1画面で確認する項目が数百となる事もあって、目がチカチカする。まぁそりゃ、人間ですから確認漏れも発生しますよ。
それも一回だけなら我慢出来るけど、仕様が変わったからって、回帰テストの名の下、面倒なWebテストを何度もしなきゃしけない。
そんなことは続けたくない。だから、出来る限りプログラムにテストしてもらえるようにしたい。
そんな思いで、Selenium + Javaの取組みを始めました。
Selenium2の導入方法
さて、Selenium2をJavaプロジェクトで使う為の準備です。まずは、以下のサイトに訪れます。
■Seleniumの本家のページ
http://seleniumhq.org/
Seleniumにはいくつかのプロジェクトがありますが、今回使うのは、以下です。以下URLのダウンロードページからダウンロード出来ます。
■Selenium Client Drivers
http://seleniumhq.org/download/
ダウンロードしたら、その中に、色々とJarファイルがあるので、ソース以外は、Javaプロジェクトのクラスパスに通します。
(多分不要なものもあるのですが、現時点では見分けがつきません)
これで準備完了です!!
余談ですが、Seleniumは出た当初よりもかなり、パワーアップしています。
当初は、Webブラウザー上で動くプログラムだったので、アラートボタンが押せないとか、AJAXに関するところのテストが出来ないとか問題があったようです。 が、しかし、現在は、Webブラウザー外で動くようになり、更にGoogleのWebDriverというプロジェクトも一緒になることで、かなり多くの事がテスト出来るようです。
さっそくSeleniumを使ってみる
使える環境が整ったので、早速使ってみました。以下サンプルは、Seleniumのページにも登場するサンプルで、Firefoxを利用して、Google検索を行うテストです。
ブラウザを立ち上げるのが、スゴく簡単に出来るのは、感動的です。
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class Test001_Nomal { public static void main(String[] args) throws Exception { System.out.println("******test starts************"); // Create test driver. WebDriver driver = new FirefoxDriver(); // WebDriver driver = new InternetExplorerDriver(); System.out.println("******browser launched*******"); // visit google.com for starting tests. driver.get("http://www.google.com"); // Fill the search word into textbox named "q" // and submit to search. WebElement element = driver.findElement(By.name("q")); element.sendKeys("My Holiday"); element.submit(); // Check the title of the page. System.out.println("Page title is: " + driver.getTitle()); // Google's search is rendered dynamically with JavaScript. // Wait for the page to load, timeout after 10seconds. (new WebDriverWait(driver, 10)).until(new ExpectedCondition() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("my holiday"); } }); // Should see. "My Holiday - Google Search" System.out.println("Page title is: " + driver.getTitle()); // Close the browser driver.quit(); } }
こんな感じに簡単に実装出来るようです。便利(*´∇`*)
参考情報
Seleniumの参考情報は、以下が良かったです。英語ですが、頼りになります(`・ω・´)■Seleniumの解説ページ。入門に良いかも。
http://seleniumhq.org/docs/
■Google Code上のSeleniumページ。Javadocとかがあります。
http://code.google.com/p/selenium/
最後に
今日は、Seleniumにとりあえず触ってみました。導入も実装も、意外に簡単で良かったです。ただテスト用のコード量が多くなりそうなので、そこは危険危険。何か対策を考えなきゃ。
次回は、Web系テストには必須の、画面キャプチャを自動で取る方法を試せたらいいな。