読者です 読者をやめる 読者になる 読者になる

webアプリケーションテストツール seleniumがヤバすぎる

http://selenium.thoughtworks.com/index.html
JavaScriptを使い実際のブラウザを介してテストするseleniumがヤバすぎる。便利すぎ。Web案件なんつーのはほんと最終フェイズになってもMVCで云うモデルに当たる部分が「仕様変更」の一言によって変更されることも多々あって、そんなときは各種testが書き直しになったりする。んで最終で時間がない状態じゃtest書き直せる訳もなく人海戦術で無理矢理なんとか仕上げる、つーのがいまのWeb案件の大概の末路の気がするんだけどそれはおいといて。
このseleniumを使えば、簡単な記述で人間が実際にブラウザを操作してテストしている部分の大半である画面遷移、フォームの入力、ヴァリデーションの正否がなどが行える。つまりインターフェイスの仕様が変わらなければ延々とテストし続けられるわけだ。最後の受け入れテストの時、プログラム的な仕様変更はあれど、インターフェイスの仕様変更はほとんどない。あっても表示位置の変更などだが、seleniumのテストは基本的に見た目に依存されないため、問題なく行える。
それと、JavaScriptを利用したテスト、たとえばとある箇所をクリックしたら別ウィンドウでウィンドウが開きそこでフォームの入力を終えたら元のウィンドウに戻り、値がフィルインされてる、なんつーテストにも使える。
また、趣味でwebアプリを作ってる人にも強力なテストツールになる。趣味で作ってるとtestとかめんどくさくてあんまり作る気にならなかったり(俺だけかも)するんだが、seleniumを使えばフォームに値入れてって実際に表示できるかテスト、ってのが簡単に書ける。何がいいのかって、実際にブラウザでwebアプリの動作を見つつテストできるのが良い。テストがたのしーんですよ!!!
で、seleniumなんだけどJavaScriptで書かれてるので言語には依存しない。ただ、Java Ruby Pythonはdriverがあって、ライブラリがwin32oleなどを叩いてブラウザを起動しseleniumを使ってテストを行える。
Ruby on Railsには本家wikiのSelenium Integrationに書いてあるように、selenium test generatorと./script/serverのwebrickseleniumを動かすpatchがあったり、moriqさんのTest::Unit --runner=webrickがあったりする。
Selenium Integrationのあるpatchを利用すると、test記述部分に素のselenium test(htmlのtable内部にtr,tdタグで書いていく)を書かないといけないので面倒。なのでyamlからselenium tastを作るやつを組み込んで簡単にtestが書けるようにと試行錯誤中。あーおもしろい。