ロックオン開発チームブログ -Lockon Knowledge Repositories-

SimpleTestでWebブラウジング

こんにちは、足立です。

本日はSimpleTestというユニットテストライブラリをご紹介したいと思います。


SimpleTest
http://simpletest.org/


PHPでユニットテストといえば、PHPUnitが有名かと思いますが、
現在メンテナンスされているPHPUnit3ではPHP4をサポートしておらず、
PHP4で開発を行う場合、PHPUnitのかなり古いバージョンを使わなければなりません。


SimpleTestはPHP4対応であり、
ドキュメントも(英語ですが)チュートリアルやAPIドキュメントが充実していてわかりやすいです。
また、Symfonyやethnaでも、SimpleTestが使われています。


インストール方法や通常のユニットテストのやり方は、google先生に聞けば教えてくれると思いますので、今回はsimpletestでwebサイトのテストをしてみましょう。


simpletestには仮想的なブラウザ機能があり、
テストプログラムからwebサイトを巡回していくようなことができます。


ではEC-CUBEのdemoサイトを対象にサンプルコードを書いてみます。


require_once 'simpletest/web_tester.php';
require_once 'simpletest/reporter.php';

define('SITE_URL', 'http://demo.ec-cube.net/');
define('TITLE', 'みんなのサンプルショッピング/'); // タイトルは変わる可能性があるので、demoサイトにあわせましょう。

class WebTest_Of_Eccube extends WebTestCase {

function testTop() {
$this->assertTrue($this->get(SITE_URL));
$this->assertTitle(TITLE . 'TOPページ');
}

function testMypageLogin() {
$this->assertTrue($this->get(SITE_URL . 'mypage/login.php'));
$this->assertTitle(TITLE . 'MYページ(ログイン)');

$this->post(
SITE_URL . 'mypage/login_check.php',
array(
'mode' => 'login',
'mypage_login_email' => '*****@lockon.co.jp',
'mypage_login_pass' => 'password',
)
);

$this->assertResponse(array(200));

$this->assertTrue($this->get(SITE_URL . 'mypage/index.php'));
$this->assertTitle(TITLE . 'MYページ/購入履歴一覧');
}
}

$test = new WebTest_Of_Eccube('EC-CUBE WEB TEST');
$test->run(new HTMLReporter('EUC-JP'));


これをドキュメントルートに適当なファイル名で保存します。
そして保存先へブラウザからアクセスしてみましょう。


緑のラインで結果が表示されればOKです!赤色であればどこかでテストが失敗しています。


testTop()は単にトップページを表示できるかどうかをテストしているだけなのですが、
testMypageLogin()では実際にマイページへのログイン処理を行っています。


今回の場合だと、login_check.phpへ直接POSTしていますが、
SubmitFormById()などのようなメソッドもあり、フォームに値をセットして
submitする処理などもやってくれるみたいです。


最後のnew HTMLReporterをnew TextReporterに変えれば、
シェルからも実行できますので試してみてください。


また、HTMLReporterの表示がしょぼくて気に入らない!といった場合は、
Reporterクラスなどを継承して自分用にカスタマイズすることも可能です。

Trackback

このエントリーのトラックバックURL:
http://www.lockon.co.jp/cgi-bin/mt/mt-tb.cgi/313

コメント



Copyright(c) LOCKON CO.,LTD. All Rights Reserved.