Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

PHPUnit+SeleniumによるWebテスト

6.019 Aufrufe

Veröffentlicht am

2008年2月に社内で行った勉強会資料

Veröffentlicht in: Technologie
  • Follow the link, new dating source: ❶❶❶ http://bit.ly/39mQKz3 ❶❶❶
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Dating direct: ♥♥♥ http://bit.ly/39mQKz3 ♥♥♥
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

PHPUnit+SeleniumによるWebテスト

  1. 1. PHPUnit+SeleniumによるWebテスト Date : 2008.02.15 Usage : 社内勉強会資料 Author: 塚本 牧生 <tsukamoto@gmail.com>
  2. 2. 内容 Seleniumとは Selenium+HTMLファイルでのテスト Selenium+PHPUnitでのテスト
  3. 3. Seleniumとは Seleniumとは Selenium+HTMLファイルでのテスト Selenium+PHPUnitでのテスト
  4. 4. Seleniumとは Webアプリケーションのクライアントサイド試験ツール Seleniumでできること ブラウザの自動操作 ブラウザの表示内容の検証 これらを使ってユーザインターフェースの試験が可能 Firefox、IE、Opera、Safariなどブラウザを切り替えて試験が可能 一連の操作、検証を「テストケース」にまとめて実行できる。 一連のテストケースと「テストスィート」にまとめて実行できる。 これらを使って(半)自動試験が可能
  5. 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. 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. 7. Seleniumとは デモ : Googleで“Selenium”を検索 ThinkIT連載「SeleniumでWebアプリケーションテストを自動化」第2回より http://www.thinkit.co.jp/free/article/0705/2/2/
  8. 8. Selenium+HTMLファイルでのテスト Seleniumとは Selenium+HTMLファイルでのテスト Selenium+PHPUnitでのテスト
  9. 9. Selenium+HTMLファイルでのテスト 実行形態 Selenium テストファイル アプリケーション TestRunner TestSuit.htm Apache (ブラウザを自動操作) (自動試験) TestRunnnerにアクセス ①ブラウザで ②TestSuit.htmを指定 ③試験開始
  10. 10. Selenium+HTMLファイルでのテスト 試験準備 テストケースをHTMLファイルで作成する。 Selenium(Core)とHTMLファイル群を、 テストスィートをHTMLファイルで作成する。 Selenium(Core) ⇒ http://www.openqa.org/selenium- 試験対象アプリケーションのあるサーバに設置する。 core/ ※ SeleniumのTestRunnerにアクセスする。 試験 テストスィートのHTMLファイルを読み込ませる。 TestRunnerがブラウザを自動操作して試験を進めていく。 実行する。 デモ
  11. 11. Selenium+HTMLファイルでのテスト テストケースの書き方 大田尾 一作「Selenium基本コマンドリファレンス(PDF)」より
  12. 12. Selenium+HTMLファイルでのテスト テストケースの書き方 大田尾 一作「Selenium基本コマンドリファレンス(PDF)」より
  13. 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. 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. 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=~” リンク内に表示される文字列 (なし)
  16. 16. Selenium+PHPUnitでのテスト Seleniumとは Selenium+HTMLファイルでのテスト Selenium+PHPUnitでのテスト
  17. 17. Selenium+PHPUnitでのテスト 実行形態 アプリケーション Apache HTTPアクセス PHPUnit_Ex_SeleniumTestCaseが 自動試験 ①SeleniumRC起動 ラッピング・隠蔽している ②テストコード実行 Selenium RC テストコード PHPUnit Java PHP ブラウザを 起動・操作
  18. 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. 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. 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. 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. 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. 23. Selenium+PHPUnitでのテスト PHPUnit方式の利点:サーバ側への設置が不 要 Selenium テストファイル TestRunner TestSuit.htm Selenium+HTML方式 + 方式 テスト環境をサーバ側に配置。 Apache テスト修正の都度、設置作業が 発生する。 テスト実行者以外はテスト環境に アクセスさせない配慮が必要。 Selenium RC テストコード PHPUnit Java PHP SeleniumRC+PHPUnit方式 + 方式 テストファイルはローカルに配置。
  24. 24. Selenium+PHPUnitでのテスト PHPUnit方式の利点: 複数のクライアント環境から一元テスト可能 アプリ HTTPD IE FF Firefox SeleniumRC SeleniumRC PHPUnit テストコード Windows Linux PHP Windows
  25. 25. まとめ Seleniumを使ったテスト ブラウザを操作して、ユーザインターフェースの自動試験ができる。 テスト方式は2種類 Selenium(Core)+HTMLファイル SeleniumRC+xUnit+テストコード(Java, .net, PHP, Perl, Ruby, etc.) 以下の場合はSeleniumRC方式 テストをサーバに設置したくない 設置の手間を省きたい 開発者以外が実行するのを避けたい テストにxUnitや言語の機能を使いたい カバレッジを集計したい DB上のデータと突き合せたい データドリブンで試験したい 各テストで毎回行う作業(ログインなど)をサブルーチン化したい 複数のテスト環境からのテストを一元管理したい
  26. 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/

×