2011/12/25更新

[Selenium2] Webテストを自動化に挑戦!!基本編

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日は毛色が変わって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系テストには必須の、画面キャプチャを自動で取る方法を試せたらいいな。






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。