Watirを使ってテストを自動化しようの話
※本記事は、旧 Tech Talk Blog 内の 「Watirを使ってテストを自動化しようの話 (http://www.sixapart.jp/techtalk/2008/06/watir.html) 」 で公開されていた記事を移転しました。
こんにちは、TypePadのQAを担当している山口です。今回はWatirを使ったテストの自動化の話を少ししたいと思います。
Watir = Web Application Test In Ruby
WatirはRuby上で動作するウェブアプリケーション向けのテスト自動化ツールです。「Web Application Testing in Ruby」の頭字語で「ウォーター(water)」と発音します。
Watirはこんな風に使います。
require "watir" ie = Watir::IE.new ie.goto("http://memolog.org/")
といった風に使います。Watirに組み込まれているメソッドを利用するだけで簡単にIEを操作することができます。この例では、IEを自動的に起動して、http://memolog.org に移動します。
Watir vs Selenium
WatirとSeleniumの違いはその動かし方にあります。SeleniumはJavascriptをベースにブラウザを操作するため、Javascriptが有効なブラウザなら基本的に動作するという利点があります。ただし、Javascriptで動かすゆえに、cross-site scripting の制限があり、テストするアプリケーションと同じサーバーに、Seleniumをインストールする必要があります。
WatirはWin32OLEというライブラリを使って、IEそのものを操作するため、サーバーに何かをインストールする必要はありません。ただしWin32OLEを使うという性格上、Windows IE用という性格が色濃い印象があります。FirefoxやSafari用のWatirも用意はされていますが、たとえばFirefox版のWatirでは日本語入力がうまく利用できないなど、各ブラウザの対応状況はまちまちです。
こうした点を考えると、複数のウェブサービスをまたがるようなテストを自動化したい場合はWatir、複数のブラウザ・プラットフォームでテストしたい場合はSeleniumを利用する、という切り分け方ができるように思います。重要なのは「どんなツールを使うか」ではなくて「そのツールで何をするか」です。TypePadを例にすると、複数のASPサービスで動作をテストする必要があることや、USでの実績があること、検証環境の都合、個人的な趣味など、いくつかの点を考慮して、Watirの方を採用しました。
参考サイト
- Watir - Overview
- Ruby/Watir - SHIMI.INFO: 日本語サイトの情報源としてとても参考になりました。
- Selenium Core FAQ - Selenium - Confluence: Selenium と cross-site scripting について
- Japanese - Selenium - Confluence: Seleniumのサイトの日本語訳ページ
- Rubyist Magazine出張版 Ruby on Windows: Win32OLEやWindowsのCOMオブジェクトについては、この本が参考になりました。
- Jungli Geek: Sahi vs Selenium vs Watir: ウェブアプリケーション向けのテスト自動化ツールの比較
- Browser Automation on Mac OS X: Mac上での自動化テストについてのまとめ
Six Apart をフォローしませんか?