オープンソースこねこね

Webプログラミングなどについてあれこれ。

PHP WebアプリケーションのテストにSeleniumを使う - その1:SeleniumIDE編

前回テストについての記事を書いたのですが、今回はその時に使用したSeleniumについて。大変便利なのです、このツールは。

Selenium

Seleniumはブラウザでのテストを自動化するツールです。 普段Webアプリケーションのテストでやっているであろう「ブラウザを開く」「リンクをクリックする」「フォームに値を入力してボタンを押す」などのオペレーションをSeleniumがあなたの代わりにブラウザを動作させて、自動テストしてくれるわけです。

公式サイト

日本語サイト

Selenium? Selenium RC? Selenium Server? SeleniumIDE?

なお、Seleniumといってもなんかいろいろあるので、以下の記事を読んでおくといいでしょう

Selenium何とかっていうツールがやたら色々あるのはどういうわけなのか

入門 - SeleniumIDEを触る

最終的にはテストフレームワークPHPUnitと連携させてテストするようにしたのですが、初めての人はまず入門としてSeleniumIDEを使ってみるのがオススメです。これはFireFoxのアドオンでテストケースに書いた内容を、あなたの代わりにSeleniumIDEがFireFoxをもりもり自動操作してテストしてくれるツールです。

以下のダウンロードサイトからselenium-ide-2.2.0.xpiをダウンロードします(バージョンは2013/08/08の最新。適宜読み替えてください)。インストールはFireFoxのウィンドウにダウンロードしたselenium-ide-2.2.0.xpiをドラッグアンドドロップすればOKです。

http://docs.seleniumhq.org/download/

インストールしたらFireFoxのメニューから[ツール]→[Selenium IDE]を選択します。

f:id:kohkimakimoto:20130808120217j:plain

SeleniumIDEが開きます。

まずはテストケースを作成します。テストケースはFireFoxを実際に操作してそれを記録することで作成できます。 SeleniumIDEを開くとデフォルトでウィンドウ右にある赤いボタン(レコードボタン)がONになっているはずです。 この状態でFireFoxを操作するとSeleniumIDEは自動でコマンドをテストケースにインサートします。SeleniumIDEのウィンドウにリンクやボタンのクリックや値の入力をコマンドとして記録していくのがわかると思います。

さらに記録中に表示中のwebページ上で、右クリックするとコンテキストメニューからverifyとかassertとかの値検証用コマンドを選んで記録できる。

f:id:kohkimakimoto:20130808121110j:plain

たとえば上の画像にある「assertTextPresent konekone.org」は、Webページ上に「konekone.org」という文字が表示されていることを検証するコマンドをテストケースに追加します。 ひと通り操作を記録したらウィンドウ右で押された状態にあるレコードボタンをクリックして記録状態を終了、解除させます。

さて実行させましょう。緑色の右矢印のボタンがテストケース実行ボタンなので、これを押します。 FireFoxがもりもり自動で動いて、テストケースを実行してくれると思います。

次回に続く

Selenium(SeleniumIDE)が何をやってくれるのかは、これで判ると思います。便利ですね。 でもこれだけだとテスト前にDBを初期化したり、キャッシュ消したりするような前処理ができないので、さらにテスト自動化を進めるのにはちょっと困ります。 カバレッジをとったりすることもできません。

次回はこのへんを解決するためにPHPUnitSeleniumを連携させてみます。というわけで次回に続きます。たぶん。

というかこの時点ではPHP関係無かった。。。