Copyright © 2015 Yuta Ohashi All Rights Reserved.
Laravelアプリケーションを
Seleniumでテストしてみた
Laravel Meetup Tokyo vol.6
2015.06.12
Yuta Ohashi
2Copyright © 2014 rocros All Rights Reserved.
Selenium?
3Copyright © 2014 rocros All Rights Reserved.
Seleniumっていろいろある?
Selenium RC
Selenium IDE
Selenium WebDriver
…etc
4Copyright © 2014 rocros All Rights Reserved.
Seleniumっていろいろある?
Selenium RC
Selenium IDE
Selenium WebDriver
…etc
5Copyright © 2014 rocros All Rights Reserved.
サンプルデモ
6Copyright © 2014 rocros All Rights Reserved.
https://github.com/blue-goheimochi/laravel-selenium-server
7Copyright © 2014 rocros All Rights Reserved.
やったこと
8Copyright © 2014 rocros All Rights Reserved.
やったこと
PHPUnit経由でSelenium Serverから
FireFoxを実行しブラウザテスト
• PHPUnitを実行
↓
• Selenium Server から FireFox 起動
↓
• Laravelアプリケーションにアクセス
↓
• 結果を表示
9Copyright © 2014 rocros All Rights Reserved.
やったこと詳細
composer.jsonの修正
テストの作成
サーバー環境構築
10Copyright © 2014 rocros All Rights Reserved.
composer.jsonの修正
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1“,
"phpunit/phpunit-selenium": ">=1.3.1“
},
“phpunit/phpunit-selenium”: “>=1.3.1“ を追加。
11Copyright © 2014 rocros All Rights Reserved.
テストの作成
<?php
class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase {
public $captureSSPath = "/vagrant/src";
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://192.168.33.6/');
}
public function testShowTopPage()
{
$this->url("/");
$this->writeScreenShot( 'top' );
}
public function writeScreenShot( $imgName ) ・・・・・・・・・続く
PHPUnit_Extensions_Selenium2TestCaseを継承した
テストを作成
12Copyright © 2014 rocros All Rights Reserved.
サーバー環境構築
必要なものをインストール&実行
• FireFox
• Xvfb
• Selenium Server
13Copyright © 2014 rocros All Rights Reserved.
PHPUnitを実行!
14Copyright © 2014 rocros All Rights Reserved.
実行結果
top.jpg
15Copyright © 2014 rocros All Rights Reserved.
できること
Seleniumを使ったテストでできること
• DOMで呼び出し(id,class,xpath)してブラウザテスト
• テストデータとかjsonとかで読み込んで使う
• (エラー時に)スクリーンショット撮れる
などなど・・・
実は自分はテストデータ作成とかで使っている。。
Laravelはぶっちゃけ関係ない・・・
16Copyright © 2014 rocros All Rights Reserved.
Laravelはぶっちゃけ関係ない・・・
<?php
class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase {
public $captureSSPath = "/vagrant/src";
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://192.168.33.6/');
}
public function testShowTopPage()
{
$this->url("/");
$this->writeScreenShot( 'top' );
}
public function writeScreenShot( $imgName ) ・・・・・・・・・続く
URLの指定を変えればテスト対象も替わる
17Copyright © 2014 rocros All Rights Reserved.
なので・・・
E2Eからテストをはじめてみてもよいかも!
既存のWebアプリケーションあるけどUnitテストそろえるのつらいな・・・
とかそういう状況であればSeleniumを使ったE2Eのテストからはじめてみるのも
いいのかなぁ・・・
とか思っていて、実際にそういう方向から個人的には攻めたりもしています。
18Copyright © 2014 rocros All Rights Reserved.
ご静聴ありがとうございました

LaravelアプリケーションをSeleniumでテストしてみた

  • 1.
    Copyright © 2015Yuta Ohashi All Rights Reserved. Laravelアプリケーションを Seleniumでテストしてみた Laravel Meetup Tokyo vol.6 2015.06.12 Yuta Ohashi
  • 2.
    2Copyright © 2014rocros All Rights Reserved. Selenium?
  • 3.
    3Copyright © 2014rocros All Rights Reserved. Seleniumっていろいろある? Selenium RC Selenium IDE Selenium WebDriver …etc
  • 4.
    4Copyright © 2014rocros All Rights Reserved. Seleniumっていろいろある? Selenium RC Selenium IDE Selenium WebDriver …etc
  • 5.
    5Copyright © 2014rocros All Rights Reserved. サンプルデモ
  • 6.
    6Copyright © 2014rocros All Rights Reserved. https://github.com/blue-goheimochi/laravel-selenium-server
  • 7.
    7Copyright © 2014rocros All Rights Reserved. やったこと
  • 8.
    8Copyright © 2014rocros All Rights Reserved. やったこと PHPUnit経由でSelenium Serverから FireFoxを実行しブラウザテスト • PHPUnitを実行 ↓ • Selenium Server から FireFox 起動 ↓ • Laravelアプリケーションにアクセス ↓ • 結果を表示
  • 9.
    9Copyright © 2014rocros All Rights Reserved. やったこと詳細 composer.jsonの修正 テストの作成 サーバー環境構築
  • 10.
    10Copyright © 2014rocros All Rights Reserved. composer.jsonの修正 "require-dev": { "phpunit/phpunit": "~4.0", "phpspec/phpspec": "~2.1“, "phpunit/phpunit-selenium": ">=1.3.1“ }, “phpunit/phpunit-selenium”: “>=1.3.1“ を追加。
  • 11.
    11Copyright © 2014rocros All Rights Reserved. テストの作成 <?php class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase { public $captureSSPath = "/vagrant/src"; protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://192.168.33.6/'); } public function testShowTopPage() { $this->url("/"); $this->writeScreenShot( 'top' ); } public function writeScreenShot( $imgName ) ・・・・・・・・・続く PHPUnit_Extensions_Selenium2TestCaseを継承した テストを作成
  • 12.
    12Copyright © 2014rocros All Rights Reserved. サーバー環境構築 必要なものをインストール&実行 • FireFox • Xvfb • Selenium Server
  • 13.
    13Copyright © 2014rocros All Rights Reserved. PHPUnitを実行!
  • 14.
    14Copyright © 2014rocros All Rights Reserved. 実行結果 top.jpg
  • 15.
    15Copyright © 2014rocros All Rights Reserved. できること Seleniumを使ったテストでできること • DOMで呼び出し(id,class,xpath)してブラウザテスト • テストデータとかjsonとかで読み込んで使う • (エラー時に)スクリーンショット撮れる などなど・・・ 実は自分はテストデータ作成とかで使っている。。 Laravelはぶっちゃけ関係ない・・・
  • 16.
    16Copyright © 2014rocros All Rights Reserved. Laravelはぶっちゃけ関係ない・・・ <?php class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase { public $captureSSPath = "/vagrant/src"; protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://192.168.33.6/'); } public function testShowTopPage() { $this->url("/"); $this->writeScreenShot( 'top' ); } public function writeScreenShot( $imgName ) ・・・・・・・・・続く URLの指定を変えればテスト対象も替わる
  • 17.
    17Copyright © 2014rocros All Rights Reserved. なので・・・ E2Eからテストをはじめてみてもよいかも! 既存のWebアプリケーションあるけどUnitテストそろえるのつらいな・・・ とかそういう状況であればSeleniumを使ったE2Eのテストからはじめてみるのも いいのかなぁ・・・ とか思っていて、実際にそういう方向から個人的には攻めたりもしています。
  • 18.
    18Copyright © 2014rocros All Rights Reserved. ご静聴ありがとうございました