SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
PHPUnit+SeleniumによるWebテスト

   Date : 2008.02.15
   Usage : 社内勉強会資料
   Author: 塚本 牧生 <tsukamoto@gmail.com>
内容
Seleniumとは
Selenium+HTMLファイルでのテスト
Selenium+PHPUnitでのテスト
Seleniumとは
 Seleniumとは
 Selenium+HTMLファイルでのテスト
 Selenium+PHPUnitでのテスト
Seleniumとは
 Webアプリケーションのクライアントサイド試験ツール
 Seleniumでできること
   ブラウザの自動操作
   ブラウザの表示内容の検証
    これらを使ってユーザインターフェースの試験が可能
    Firefox、IE、Opera、Safariなどブラウザを切り替えて試験が可能
   一連の操作、検証を「テストケース」にまとめて実行できる。
   一連のテストケースと「テストスィート」にまとめて実行できる。
    これらを使って(半)自動試験が可能
Seleniumとは
 Seleniumでできるブラウザ操作(Actionコマンド)
   ページを開く。(open)
   ボタンやリンクをクリックする。(click/clickAndWait)
   フォームへの入力や操作をする。(type、check、uncheck、select)
   キー操作をする。(keyPress、keyUp、keyDown)
   マウス操作をする。
   (mouseOver、mouseOut、mouseDown、mouseUp)

 Seleniumでできるブラウザ表示確認(Accessorsコマンド)
   ウィンドウ操作をする。(goBack、refresh、close)

 (次ページ)



※上記の他にもコマンドがあります。下記を参照してください。

    ・Selenium 0.7 Reference(和訳)
    ・Selenium基本コマンドリファレンス(PDF)

    ・Selenium Reference(0.8.x)
Seleniumとは
 Seleniumでできるブラウザ操作(Actionコマンド)

 Seleniumでできるブラウザ表示確認(Accessorsコマン
 (前ページ)

 ド)
   文字列がタイトルに含まれているか確認する。(assertTitle)
   文字列がページ内に表示されているか確認する。
   (assertTextPresent、assertTextNotPresent)
   文字列がある要素内にあるか確認する。(assertText)
   アラート、ダイアログ、プロンプトをチェックする。
   (assertAlart、assertConfirmation、assertPrompt)

※上記の他にもコマンドがあります。下記を参照してください。

    ・Selenium 0.7 Reference(和訳)
    ・Selenium基本コマンドリファレンス(PDF)

    ・Selenium Reference(0.8.x)
Seleniumとは
 デモ : Googleで“Selenium”を検索




ThinkIT連載「SeleniumでWebアプリケーションテストを自動化」第2回より
http://www.thinkit.co.jp/free/article/0705/2/2/
Selenium+HTMLファイルでのテスト
 Seleniumとは
 Selenium+HTMLファイルでのテスト
 Selenium+PHPUnitでのテスト
Selenium+HTMLファイルでのテスト
 実行形態

            Selenium    テストファイル        アプリケーション

           TestRunner   TestSuit.htm

                          Apache


                (ブラウザを自動操作)            (自動試験)



  TestRunnnerにアクセス
 ①ブラウザで

 ②TestSuit.htmを指定
 ③試験開始
Selenium+HTMLファイルでのテスト
 試験準備
     テストケースをHTMLファイルで作成する。

     Selenium(Core)とHTMLファイル群を、
     テストスィートをHTMLファイルで作成する。


     Selenium(Core) ⇒ http://www.openqa.org/selenium-
     試験対象アプリケーションのあるサーバに設置する。

     core/
 ※




     SeleniumのTestRunnerにアクセスする。
 試験

     テストスィートのHTMLファイルを読み込ませる。

     TestRunnerがブラウザを自動操作して試験を進めていく。
     実行する。

 デモ
Selenium+HTMLファイルでのテスト
 テストケースの書き方




  大田尾 一作「Selenium基本コマンドリファレンス(PDF)」より
Selenium+HTMLファイルでのテスト
 テストケースの書き方




  大田尾 一作「Selenium基本コマンドリファレンス(PDF)」より
Selenium+HTMLファイルでのテスト
 テストケースの書き方
  テストスィートもHTMLで書く
  1行1カラム
  1行目はテストスィート名
  2行目以降はテストケース名を表示し、テストケー
  スにリンク
           <table>
テストスィート名    <thead><tr><td>テストスィート名</td></tr></thead>
            <tbody>
テストケース名1      <tr><td><a href=quot;./TestCase1.htmquot;>テストケース名1</a></td></tr>
              <tr><td><a href=quot;./TestCase2.htmquot;>テストケース名2</a></td></tr>
テストケース名2       :
            </tbody>
   :       </table>
Selenium+HTMLファイルでのテスト
 デモ:社内SNS(開発環境)へのログイン
 【テストケース】 01_Login_001.htm
 ログイン
 open           /dev/openpne2.10/public_html
 type           username                       me@pc.example.com
 type           password                       mypassword
 clickAndWait button_login
 assertTitle    OKI SNS
                                               このidまたはname
                                               アトリビュート値を
                                               持つ要素がター
                                               ゲットになる
 【テストスィート】 01_Login_TestSuit.htm
 01_Login_TestSuit
 01_Login_001      01_Login_001.htm
                   にリンクしている
Selenium+HTMLファイルでのテスト
   補足:ターゲットとElementLocator(locator)
         ターゲットがHTML要素の時(最も多い)はElementLocator

         ElementLocatorは6種類(identifier、id、name、dom、xpath、
         で指定

         link)

              idやnameが適切に振られていない時は、domやxpathを使用
              通常はidentifier(またはid、name)を、略記法で書くのが便利

              OpenPNEはidやnameがあまり振られておらず、classも指定しにくい
          ※


         記法                指定対象                  略記法
                    idまたはnameアトリビュートの値 下記以外の全て
“identifier=~”
                    idアトリビュートの値
“id=~“                                   (なし)
                    nameアトリビュートの値
“name=~”                                 (なし)
“dom=document.~” 要素のJavaScriptでのDOM指定 “document.~”
“xpath=//~”                              “//~”
                    要素のXPath
“link=~”            リンク内に表示される文字列        (なし)
Selenium+PHPUnitでのテスト
 Seleniumとは
 Selenium+HTMLファイルでのテスト
 Selenium+PHPUnitでのテスト
Selenium+PHPUnitでのテスト
 実行形態

          アプリケーション



            Apache
                           HTTPアクセス
                     PHPUnit_Ex_SeleniumTestCaseが
自動試験                                                ①SeleniumRC起動
                         ラッピング・隠蔽している
                                                    ②テストコード実行
           Selenium RC            テストコード

                                    PHPUnit

              Java                    PHP
  ブラウザを
  起動・操作
Selenium+PHPUnitでのテスト
  試験環境の構築
     PHPをインストールする。
     PEARを設定する。(PEARの初回利用時)
     PHPUnit(バージョン3.2以降)をインストールする。
          3.2.0RC2からPHPUnit_Extension_SeleniumTestCaseが利用可
      ※




     Java(バージョン1.5以降)をインストールする。
          能。


     Selenium RCを取得し、展開しておく。
          Selenium RC ⇒ http://openqa.org/selenium-rc/
      ※



WindowsでのでのPEARの設定とPHPUnitインストール
                  の設定と
         での                       インストール
C:¥> cd c:¥php
C:¥PHP> go_pear.bat
C:¥PHP> pear channel-discover pear.phpunit.de
C:¥PHP> pear install phpunit/PHPUnit
Selenium+PHPUnitでのテスト
  試験準備
     テストケースをPHPファイルとして作成する。

     SeleniumRCに含まれているselenium-
  試験

     server.jarを実行する。
     phpunitで作成したPHPファイルを実行する。
     ブラウザを起動、自動操作され、試験が進んで
     いく。

SeleniumRCの起動
            の
C:¥MyTest> java –jar selenium_server.jar
テストPHPスクリプトの起動
         スクリプトの
テスト      スクリプト
C:¥MyTest> phpunit MyTesrCase.php
Selenium+PHPUnitでのテスト
  テストケースの書き方
        PHPUnit_Extensions_SeleniumTestCaseを継承する
        setUpメソッドは必須、Seleniumの設定を記述する

                                                               PHPUnit_Extensions_SeleniumTestCaseを
<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
class MyTestCase extends PHPUnit_Extensions_SeleniumTestCase   継承、拡張クラスとしてテストケースクラスを作成
{
  protected function setUp()
  {
                                                               SeleniumRCの動作しているホスト、ポート、
    $this->host('localhost'); //localhostはデフォルト
    $this->port(4444);        //4444はデフォルト
                                                               使用するブラウザ、テスト対象のベースURL
    $this->setBrowser('*iexplore');
                                                               等を設定
    $this->setBrowserUrl('http://www.google.co.jp/');
}
  public function testLogin()
  {

                                                               PHPUnit_Extensions_SeleniumTestCaseの
    $this->open(quot;/webhpquot;);
    $this->assertTitleEquals(quot;Googlequot;);

                                                               Selenium(Core)のコマンドとコマンド名や引数が
    $this->type(quot;qquot;, quot;seleniumquot;);                              提供するテストメソッドなどを使ってテストを記述
    $this->clickAndWait(quot;btnGquot;);
    $this->assertTitleEquals(quot;selenium - Google 検索quot;);
                                                               異なるものもあるので注意
    $this->assertTextPresent(quot;selenium の検索結果quot;);
  }
}
?>
Selenium+PHPUnitでのテスト
  デモ:Googleで“Selenium”を検索
     HTMLで行ったものと同様の内容を、PHPUnitで実行
  補足:SeleniumRC起動時のプロキシ指定
     プロキシを利用する時は、Javaの引数で以下を指定する。
        -Dhttp.proxyHost     …
        -Dhttp.proxyPort
                                 プロキシホスト
                             …
        -Dhttp.proxyUse
                                 プロキシポート
                             …
        -Dhttp.proxyPassword …
                                 プロキシ認証時のユーザ

     SeleniumRC自体はプロキシ内の時は、SeleniumRCの引数
                                 プロキシ認証時のパスワード

     で以下も指定する。
        -avoidProxy
SeleniumRC起動時のプロキシ指定例
            起動時のプロキシ指定例
            起動時
java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080
  -Dhttp.proxyUser=joe -Dhttp.proxyPassword=opensesami
  -jar selenium_server.jar -avoidProxy
Selenium+PHPUnitでのテスト
     PHPUnit方式の利点PHP、PHPUnitの機能も利用でき
     る
          ケース:OpenPNEのログインエラーの検証
                                                 Seleniumのメソッド
                                                          の
                                                 ・assertText(locator, テキスト文字列パターン)
                                                 ・assertNotText(locator, テキスト文字列パターン)

<div style=quot;padding:8px 6px;quot; class=quot;cautionquot;>
                                                 PHPUnit_Extensions_SeleniumTestCaseの
                                                                                    の
ログインに失敗しました。再度、ログイン操作を行っ
                                                 メソッド
</div>
てください。<br>
                                                 ・assertTextPresent(テキスト文字列パターン)
                                                 ・assertTextNotPresent(テキスト文字列パターン)


(対象 //div[@class=“caution”]                      assertTextの動作
チェック事項
チェック事項

(内容 ログインに失敗しました。再度、ログイン…                         PHPからは対象箇所(locator)を指定できない。
 対象)                                                       の
 対象
 内容)
 内容


・PHPUnit_Extensions_SeleniumTestCaseのgetTextメソッド
・PHPUnit_FrameworkのassertContainsメソッド
                                            メソッドでテキストを取得
                                    の       メソッド
                                  メソッドで検証
                   の              メソッド

     $caution = $this->getText(quot;xpath=//div[@class='caution']quot;);
     $this->assertContains(quot;ログインに失敗しました。再度、ログイン操作を行ってください。quot;, $caution, '');
Selenium+PHPUnitでのテスト
 PHPUnit方式の利点:サーバ側への設置が不
 要
         Selenium       テストファイル

        TestRunner      TestSuit.htm   Selenium+HTML方式
                                               +    方式
                                       テスト環境をサーバ側に配置。

                    Apache
                                       テスト修正の都度、設置作業が
                                       発生する。
                                       テスト実行者以外はテスト環境に
                                       アクセスさせない配慮が必要。




        Selenium RC      テストコード

                             PHPUnit

           Java               PHP      SeleniumRC+PHPUnit方式
                                                 +       方式
                                       テストファイルはローカルに配置。
Selenium+PHPUnitでのテスト
 PHPUnit方式の利点:
  複数のクライアント環境から一元テスト可能
                    アプリ

                   HTTPD




      IE   FF                  Firefox

     SeleniumRC              SeleniumRC
                   PHPUnit
                  テストコード

      Windows                  Linux
                    PHP

                  Windows
まとめ
Seleniumを使ったテスト
 ブラウザを操作して、ユーザインターフェースの自動試験ができる。
 テスト方式は2種類
   Selenium(Core)+HTMLファイル
   SeleniumRC+xUnit+テストコード(Java, .net, PHP, Perl, Ruby, etc.)
 以下の場合はSeleniumRC方式
   テストをサーバに設置したくない
      設置の手間を省きたい
      開発者以外が実行するのを避けたい
   テストにxUnitや言語の機能を使いたい
      カバレッジを集計したい
      DB上のデータと突き合せたい
      データドリブンで試験したい
      各テストで毎回行う作業(ログインなど)をサブルーチン化したい
   複数のテスト環境からのテストを一元管理したい
参考URL(登場順)
Selenium基本コマンドリファレンス(PDF)
http://www.thinkit.co.jp/cert/article/0705/2/5/Selenium_com.pdf
Selenium 0.7 Reference(和訳)
http://wiki.openqa.org/display/SEL/Selenium+0.7+Reference+(Japanes
e)
Selenium Reference(0.8.x)
http://release.openqa.org/selenium-core/0.8.0/reference.html
SeleniumでWebアプリケーションテストを自動化
http://www.thinkit.co.jp/free/article/0705/2/2/
Selenium(Core)
http://www.openqa.org/selenium-core/
Selenium RC
http://openqa.org/selenium-rc/

Mais conteúdo relacionado

Mais procurados

25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューションnishimizu
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2nishimizu
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目龍一 田中
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装moai kids
 
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発Yuichi Tanaka
 
Sthseminar Gae 20090715
Sthseminar Gae 20090715Sthseminar Gae 20090715
Sthseminar Gae 20090715Kazunori Sato
 
Namo Web Solution
Namo Web SolutionNamo Web Solution
Namo Web Solutionbenson56
 
智慧型手機
智慧型手機智慧型手機
智慧型手機Kelun Yang
 
OSC2009KYOTO Asterisk User\'s Group Japan
OSC2009KYOTO Asterisk User\'s Group JapanOSC2009KYOTO Asterisk User\'s Group Japan
OSC2009KYOTO Asterisk User\'s Group JapanKenichi 深海
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in DetailTim Lu
 
20090307cakephphandson 01
20090307cakephphandson 0120090307cakephphandson 01
20090307cakephphandson 01Yusuke Ando
 
程式之美-微軟技術面試心得
程式之美-微軟技術面試心得程式之美-微軟技術面試心得
程式之美-微軟技術面試心得Bob Wei
 
岑文初:淘宝开放平台架构设计与实践
岑文初:淘宝开放平台架构设计与实践岑文初:淘宝开放平台架构设计与实践
岑文初:淘宝开放平台架构设计与实践XMourinho
 
Dmc 20210104
Dmc 20210104Dmc 20210104
Dmc 20210104YumaMaeda
 
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)Kohei Otsuka
 
認識網路傳播
認識網路傳播認識網路傳播
認識網路傳播基欽 劉
 
1242982622API2 upload
1242982622API2 upload1242982622API2 upload
1242982622API2 upload51 lecture
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回龍一 田中
 
Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수JIAQI NIE
 

Mais procurados (20)

25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューション
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装
 
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
 
Sthseminar Gae 20090715
Sthseminar Gae 20090715Sthseminar Gae 20090715
Sthseminar Gae 20090715
 
Namo Web Solution
Namo Web SolutionNamo Web Solution
Namo Web Solution
 
智慧型手機
智慧型手機智慧型手機
智慧型手機
 
OSC2009KYOTO Asterisk User\'s Group Japan
OSC2009KYOTO Asterisk User\'s Group JapanOSC2009KYOTO Asterisk User\'s Group Japan
OSC2009KYOTO Asterisk User\'s Group Japan
 
PHP at Yahoo! JAPAN
PHP at Yahoo! JAPANPHP at Yahoo! JAPAN
PHP at Yahoo! JAPAN
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in Detail
 
20090307cakephphandson 01
20090307cakephphandson 0120090307cakephphandson 01
20090307cakephphandson 01
 
程式之美-微軟技術面試心得
程式之美-微軟技術面試心得程式之美-微軟技術面試心得
程式之美-微軟技術面試心得
 
岑文初:淘宝开放平台架构设计与实践
岑文初:淘宝开放平台架构设计与实践岑文初:淘宝开放平台架构设计与实践
岑文初:淘宝开放平台架构设计与实践
 
Dmc 20210104
Dmc 20210104Dmc 20210104
Dmc 20210104
 
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
RF-ID技術2題(自律位置取得・あいまい知人判定プロトコル)
 
認識網路傳播
認識網路傳播認識網路傳播
認識網路傳播
 
1242982622API2 upload
1242982622API2 upload1242982622API2 upload
1242982622API2 upload
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回
 
Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수
 

Destaque

「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界Nozomi Ito
 
seleniumをPHPで使う
seleniumをPHPで使うseleniumをPHPで使う
seleniumをPHPで使うSotaro Omura
 
ヘルシープログラマ・翻訳と実践
ヘルシープログラマ・翻訳と実践ヘルシープログラマ・翻訳と実践
ヘルシープログラマ・翻訳と実践Ryuji Tamagawa
 
20161222 selenium adventcalender
20161222 selenium adventcalender20161222 selenium adventcalender
20161222 selenium adventcalenderNaoya Kojima
 
Seleniumをもっと知るための本の話
Seleniumをもっと知るための本の話Seleniumをもっと知るための本の話
Seleniumをもっと知るための本の話Ryuji Tamagawa
 
第3回日本seleniumユーザーコミュニティ勉強会
第3回日本seleniumユーザーコミュニティ勉強会第3回日本seleniumユーザーコミュニティ勉強会
第3回日本seleniumユーザーコミュニティ勉強会Nozomi Ito
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpYahoo!デベロッパーネットワーク
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩Satsuki Urayama
 

Destaque (9)

「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
seleniumをPHPで使う
seleniumをPHPで使うseleniumをPHPで使う
seleniumをPHPで使う
 
ヘルシープログラマ・翻訳と実践
ヘルシープログラマ・翻訳と実践ヘルシープログラマ・翻訳と実践
ヘルシープログラマ・翻訳と実践
 
20161222 selenium adventcalender
20161222 selenium adventcalender20161222 selenium adventcalender
20161222 selenium adventcalender
 
Seleniumをもっと知るための本の話
Seleniumをもっと知るための本の話Seleniumをもっと知るための本の話
Seleniumをもっと知るための本の話
 
第3回日本seleniumユーザーコミュニティ勉強会
第3回日本seleniumユーザーコミュニティ勉強会第3回日本seleniumユーザーコミュニティ勉強会
第3回日本seleniumユーザーコミュニティ勉強会
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
 
DISPLAY LUMAscape
DISPLAY LUMAscapeDISPLAY LUMAscape
DISPLAY LUMAscape
 

Mais de Makio Tsukamoto

おひとりさまAWS Organizationsのススメ
おひとりさまAWS OrganizationsのススメおひとりさまAWS Organizationsのススメ
おひとりさまAWS OrganizationsのススメMakio Tsukamoto
 
「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側で「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側でMakio Tsukamoto
 
Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.Makio Tsukamoto
 
Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.Makio Tsukamoto
 
What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)Makio Tsukamoto
 
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーションMakio Tsukamoto
 
群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーション群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーションMakio Tsukamoto
 
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入Makio Tsukamoto
 
Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Makio Tsukamoto
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xMakio Tsukamoto
 
Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Makio Tsukamoto
 

Mais de Makio Tsukamoto (17)

おひとりさまAWS Organizationsのススメ
おひとりさまAWS OrganizationsのススメおひとりさまAWS Organizationsのススメ
おひとりさまAWS Organizationsのススメ
 
Cloud native computing
Cloud native computingCloud native computing
Cloud native computing
 
noteの活かし方
noteの活かし方noteの活かし方
noteの活かし方
 
「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側で「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側で
 
Wiki概念の多様性
Wiki概念の多様性Wiki概念の多様性
Wiki概念の多様性
 
Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.
 
Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.
 
私とwikiとconfluence
私とwikiとconfluence私とwikiとconfluence
私とwikiとconfluence
 
What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)
 
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
 
群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーション群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーション
 
Wikizenアパート
WikizenアパートWikizenアパート
Wikizenアパート
 
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入
 
Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Wikiスパムの傾向と対策
Wikiスパムの傾向と対策
 
Way to Wikiwyg
Way to WikiwygWay to Wikiwyg
Way to Wikiwyg
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
 
Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的
 

PHPUnit+SeleniumによるWebテスト

  • 1. PHPUnit+SeleniumによるWebテスト Date : 2008.02.15 Usage : 社内勉強会資料 Author: 塚本 牧生 <tsukamoto@gmail.com>
  • 4. Seleniumとは Webアプリケーションのクライアントサイド試験ツール Seleniumでできること ブラウザの自動操作 ブラウザの表示内容の検証 これらを使ってユーザインターフェースの試験が可能 Firefox、IE、Opera、Safariなどブラウザを切り替えて試験が可能 一連の操作、検証を「テストケース」にまとめて実行できる。 一連のテストケースと「テストスィート」にまとめて実行できる。 これらを使って(半)自動試験が可能
  • 5. Seleniumとは Seleniumでできるブラウザ操作(Actionコマンド) ページを開く。(open) ボタンやリンクをクリックする。(click/clickAndWait) フォームへの入力や操作をする。(type、check、uncheck、select) キー操作をする。(keyPress、keyUp、keyDown) マウス操作をする。 (mouseOver、mouseOut、mouseDown、mouseUp) Seleniumでできるブラウザ表示確認(Accessorsコマンド) ウィンドウ操作をする。(goBack、refresh、close) (次ページ) ※上記の他にもコマンドがあります。下記を参照してください。 ・Selenium 0.7 Reference(和訳) ・Selenium基本コマンドリファレンス(PDF) ・Selenium Reference(0.8.x)
  • 6. Seleniumとは Seleniumでできるブラウザ操作(Actionコマンド) Seleniumでできるブラウザ表示確認(Accessorsコマン (前ページ) ド) 文字列がタイトルに含まれているか確認する。(assertTitle) 文字列がページ内に表示されているか確認する。 (assertTextPresent、assertTextNotPresent) 文字列がある要素内にあるか確認する。(assertText) アラート、ダイアログ、プロンプトをチェックする。 (assertAlart、assertConfirmation、assertPrompt) ※上記の他にもコマンドがあります。下記を参照してください。 ・Selenium 0.7 Reference(和訳) ・Selenium基本コマンドリファレンス(PDF) ・Selenium Reference(0.8.x)
  • 7. Seleniumとは デモ : Googleで“Selenium”を検索 ThinkIT連載「SeleniumでWebアプリケーションテストを自動化」第2回より http://www.thinkit.co.jp/free/article/0705/2/2/
  • 9. Selenium+HTMLファイルでのテスト 実行形態 Selenium テストファイル アプリケーション TestRunner TestSuit.htm Apache (ブラウザを自動操作) (自動試験) TestRunnnerにアクセス ①ブラウザで ②TestSuit.htmを指定 ③試験開始
  • 10. Selenium+HTMLファイルでのテスト 試験準備 テストケースをHTMLファイルで作成する。 Selenium(Core)とHTMLファイル群を、 テストスィートをHTMLファイルで作成する。 Selenium(Core) ⇒ http://www.openqa.org/selenium- 試験対象アプリケーションのあるサーバに設置する。 core/ ※ SeleniumのTestRunnerにアクセスする。 試験 テストスィートのHTMLファイルを読み込ませる。 TestRunnerがブラウザを自動操作して試験を進めていく。 実行する。 デモ
  • 11. Selenium+HTMLファイルでのテスト テストケースの書き方 大田尾 一作「Selenium基本コマンドリファレンス(PDF)」より
  • 12. Selenium+HTMLファイルでのテスト テストケースの書き方 大田尾 一作「Selenium基本コマンドリファレンス(PDF)」より
  • 13. Selenium+HTMLファイルでのテスト テストケースの書き方 テストスィートもHTMLで書く 1行1カラム 1行目はテストスィート名 2行目以降はテストケース名を表示し、テストケー スにリンク <table> テストスィート名 <thead><tr><td>テストスィート名</td></tr></thead> <tbody> テストケース名1 <tr><td><a href=quot;./TestCase1.htmquot;>テストケース名1</a></td></tr> <tr><td><a href=quot;./TestCase2.htmquot;>テストケース名2</a></td></tr> テストケース名2 : </tbody> : </table>
  • 14. Selenium+HTMLファイルでのテスト デモ:社内SNS(開発環境)へのログイン 【テストケース】 01_Login_001.htm ログイン open /dev/openpne2.10/public_html type username me@pc.example.com type password mypassword clickAndWait button_login assertTitle OKI SNS このidまたはname アトリビュート値を 持つ要素がター ゲットになる 【テストスィート】 01_Login_TestSuit.htm 01_Login_TestSuit 01_Login_001 01_Login_001.htm にリンクしている
  • 15. Selenium+HTMLファイルでのテスト 補足:ターゲットとElementLocator(locator) ターゲットがHTML要素の時(最も多い)はElementLocator ElementLocatorは6種類(identifier、id、name、dom、xpath、 で指定 link) idやnameが適切に振られていない時は、domやxpathを使用 通常はidentifier(またはid、name)を、略記法で書くのが便利 OpenPNEはidやnameがあまり振られておらず、classも指定しにくい ※ 記法 指定対象 略記法 idまたはnameアトリビュートの値 下記以外の全て “identifier=~” idアトリビュートの値 “id=~“ (なし) nameアトリビュートの値 “name=~” (なし) “dom=document.~” 要素のJavaScriptでのDOM指定 “document.~” “xpath=//~” “//~” 要素のXPath “link=~” リンク内に表示される文字列 (なし)
  • 17. Selenium+PHPUnitでのテスト 実行形態 アプリケーション Apache HTTPアクセス PHPUnit_Ex_SeleniumTestCaseが 自動試験 ①SeleniumRC起動 ラッピング・隠蔽している ②テストコード実行 Selenium RC テストコード PHPUnit Java PHP ブラウザを 起動・操作
  • 18. Selenium+PHPUnitでのテスト 試験環境の構築 PHPをインストールする。 PEARを設定する。(PEARの初回利用時) PHPUnit(バージョン3.2以降)をインストールする。 3.2.0RC2からPHPUnit_Extension_SeleniumTestCaseが利用可 ※ Java(バージョン1.5以降)をインストールする。 能。 Selenium RCを取得し、展開しておく。 Selenium RC ⇒ http://openqa.org/selenium-rc/ ※ WindowsでのでのPEARの設定とPHPUnitインストール の設定と での インストール C:¥> cd c:¥php C:¥PHP> go_pear.bat C:¥PHP> pear channel-discover pear.phpunit.de C:¥PHP> pear install phpunit/PHPUnit
  • 19. Selenium+PHPUnitでのテスト 試験準備 テストケースをPHPファイルとして作成する。 SeleniumRCに含まれているselenium- 試験 server.jarを実行する。 phpunitで作成したPHPファイルを実行する。 ブラウザを起動、自動操作され、試験が進んで いく。 SeleniumRCの起動 の C:¥MyTest> java –jar selenium_server.jar テストPHPスクリプトの起動 スクリプトの テスト スクリプト C:¥MyTest> phpunit MyTesrCase.php
  • 20. Selenium+PHPUnitでのテスト テストケースの書き方 PHPUnit_Extensions_SeleniumTestCaseを継承する setUpメソッドは必須、Seleniumの設定を記述する PHPUnit_Extensions_SeleniumTestCaseを <?php require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class MyTestCase extends PHPUnit_Extensions_SeleniumTestCase 継承、拡張クラスとしてテストケースクラスを作成 { protected function setUp() { SeleniumRCの動作しているホスト、ポート、 $this->host('localhost'); //localhostはデフォルト $this->port(4444); //4444はデフォルト 使用するブラウザ、テスト対象のベースURL $this->setBrowser('*iexplore'); 等を設定 $this->setBrowserUrl('http://www.google.co.jp/'); } public function testLogin() { PHPUnit_Extensions_SeleniumTestCaseの $this->open(quot;/webhpquot;); $this->assertTitleEquals(quot;Googlequot;); Selenium(Core)のコマンドとコマンド名や引数が $this->type(quot;qquot;, quot;seleniumquot;); 提供するテストメソッドなどを使ってテストを記述 $this->clickAndWait(quot;btnGquot;); $this->assertTitleEquals(quot;selenium - Google 検索quot;); 異なるものもあるので注意 $this->assertTextPresent(quot;selenium の検索結果quot;); } } ?>
  • 21. Selenium+PHPUnitでのテスト デモ:Googleで“Selenium”を検索 HTMLで行ったものと同様の内容を、PHPUnitで実行 補足:SeleniumRC起動時のプロキシ指定 プロキシを利用する時は、Javaの引数で以下を指定する。 -Dhttp.proxyHost … -Dhttp.proxyPort プロキシホスト … -Dhttp.proxyUse プロキシポート … -Dhttp.proxyPassword … プロキシ認証時のユーザ SeleniumRC自体はプロキシ内の時は、SeleniumRCの引数 プロキシ認証時のパスワード で以下も指定する。 -avoidProxy SeleniumRC起動時のプロキシ指定例 起動時のプロキシ指定例 起動時 java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 -Dhttp.proxyUser=joe -Dhttp.proxyPassword=opensesami -jar selenium_server.jar -avoidProxy
  • 22. Selenium+PHPUnitでのテスト PHPUnit方式の利点PHP、PHPUnitの機能も利用でき る ケース:OpenPNEのログインエラーの検証 Seleniumのメソッド の ・assertText(locator, テキスト文字列パターン) ・assertNotText(locator, テキスト文字列パターン) <div style=quot;padding:8px 6px;quot; class=quot;cautionquot;> PHPUnit_Extensions_SeleniumTestCaseの の ログインに失敗しました。再度、ログイン操作を行っ メソッド </div> てください。<br> ・assertTextPresent(テキスト文字列パターン) ・assertTextNotPresent(テキスト文字列パターン) (対象 //div[@class=“caution”] assertTextの動作 チェック事項 チェック事項 (内容 ログインに失敗しました。再度、ログイン… PHPからは対象箇所(locator)を指定できない。 対象) の 対象 内容) 内容 ・PHPUnit_Extensions_SeleniumTestCaseのgetTextメソッド ・PHPUnit_FrameworkのassertContainsメソッド メソッドでテキストを取得 の メソッド メソッドで検証 の メソッド $caution = $this->getText(quot;xpath=//div[@class='caution']quot;); $this->assertContains(quot;ログインに失敗しました。再度、ログイン操作を行ってください。quot;, $caution, '');
  • 23. Selenium+PHPUnitでのテスト PHPUnit方式の利点:サーバ側への設置が不 要 Selenium テストファイル TestRunner TestSuit.htm Selenium+HTML方式 + 方式 テスト環境をサーバ側に配置。 Apache テスト修正の都度、設置作業が 発生する。 テスト実行者以外はテスト環境に アクセスさせない配慮が必要。 Selenium RC テストコード PHPUnit Java PHP SeleniumRC+PHPUnit方式 + 方式 テストファイルはローカルに配置。
  • 24. Selenium+PHPUnitでのテスト PHPUnit方式の利点: 複数のクライアント環境から一元テスト可能 アプリ HTTPD IE FF Firefox SeleniumRC SeleniumRC PHPUnit テストコード Windows Linux PHP Windows
  • 25. まとめ Seleniumを使ったテスト ブラウザを操作して、ユーザインターフェースの自動試験ができる。 テスト方式は2種類 Selenium(Core)+HTMLファイル SeleniumRC+xUnit+テストコード(Java, .net, PHP, Perl, Ruby, etc.) 以下の場合はSeleniumRC方式 テストをサーバに設置したくない 設置の手間を省きたい 開発者以外が実行するのを避けたい テストにxUnitや言語の機能を使いたい カバレッジを集計したい DB上のデータと突き合せたい データドリブンで試験したい 各テストで毎回行う作業(ログインなど)をサブルーチン化したい 複数のテスト環境からのテストを一元管理したい
  • 26. 参考URL(登場順) Selenium基本コマンドリファレンス(PDF) http://www.thinkit.co.jp/cert/article/0705/2/5/Selenium_com.pdf Selenium 0.7 Reference(和訳) http://wiki.openqa.org/display/SEL/Selenium+0.7+Reference+(Japanes e) Selenium Reference(0.8.x) http://release.openqa.org/selenium-core/0.8.0/reference.html SeleniumでWebアプリケーションテストを自動化 http://www.thinkit.co.jp/free/article/0705/2/2/ Selenium(Core) http://www.openqa.org/selenium-core/ Selenium RC http://openqa.org/selenium-rc/