スタッフブログ

  • 最新配信
  • RSS

Selenium RCでテストを楽にする

 : 技術全般 2008/11/13 13:34

Blogger's Avatar

satoです。

WebアプリケーションのテストといえばSeleniumが有名です。
Seleniumは便利なのですが、HTMLでテストケースを書くのは面倒です。
通常はSelenium IDEを使うと思いますが、そもそもプログラマーはGUIを叩くのが面倒というケースが多いです。

Seleniumのプロダクトの中にSelenium RCというのがあります。
RCはRemote Controlの略で、その名の通りSeleniumをリモートから操作することができます。
操作に使う言語はJava/Perl/PHP/Ruby等多種多様に対応しているので、自分の好きな言語でテストを書くことができます。
これにより、例えばGUIの無い環境から、Selenium RCのサーバを動かしているPCでアプリケーションのテストを行うことが可能になります。
Selenium IDEの出力も、HTMLだけではなく各言語の形式で出力することができるようになっているので、ベースはSelenium IDEで作って、細かい調整は直接編集する、ということもできます。

サーバ側の使い方は簡単で、ダウンロードしたファイルの中の、selenium-server-[バージョン名]/selenium-server.jarを実行する(java -jar [ファイル名])だけです。当然JREが必要になります。
Windows Vistaの場合は管理者権限で動かす必要があります。

クライアント側は、PHPで動かす場合はPHPUnitが必要です。
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

さらに、Testing_Seleniumが必要なので、
pear install Testing_Selenium-beta

でインストールします。

実際には以下のようなコードで動かすことになります。(Selenium RCに付属のサンプルを多少変更したものです)
Firefoxでは動かなかったのでIE(7)にしています。
<?php

require_once 'Testing/Selenium.php';
require_once 'PHPUnit/Framework/TestCase.php';

class GoogleTest extends PHPUnit_Framework_TestCase
{
    private $selenium;

    public function setUp()
    {
        $this->selenium = new Testing_Selenium("*iexplore", "http://www.google.com", "192.168.1.1"); // 192.168.1.1はSelenium RCサーバのIPアドレス。同じPC上で行う場合は省略可
        $this->selenium->start();
    }

    public function tearDown()
    {
        $this->selenium->stop();
    }

    public function testGoogle()
    {
        $this->selenium->open("/webhp");
        $this->selenium->type("q", "hello world");
        $this->selenium->click("btnG");
        $this->selenium->waitForPageToLoad(10000);
        $this->assertRegExp("/Google/", $this->selenium->getTitle());
    }

}

これをphpunitで動かすとサーバ上で動作すると思います。
詳しくはドキュメントを参照してください。

テストケースを用意するのも簡単ではないので、できるだけ作りやすい方法で作業できるようにしておくといいと思います。
また個人的には、Selenium RCを使うと、Selenium本体のファイルを置いておかなくてもいい(恐らくjarに全部含まれている)のが好きです。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.