SlideShare a Scribd company logo
PHP Agile テスト
     Tips
     2012/11/07(Wed)
    T.Chikuba@bilcom
about tchikuba

   所属
       ビルコム株式会社

   自社サービス
       ReBuy http://rebuy.jp/

       Okkru https://okkru.jp

   役割
       開発 PM

       PM = Playing Manager

   いいね!
       Linux 、ビール、宇宙平和

   facebook/twitter
       tchikuba
テスト種別

   Project としてテスト自動化して
    いるフェーズは以下の 2 つ
     結合試験

     単体試験

   テスト着手の優先度は「該当フ
    ェーズ毎」にビジネス的に価値
    の高いものを都度判断して決定
    する
テストフレームワーク種別
   当 Project では PHPUnit を採用
   採用している PHPUnit は大別して以
    下の通り
       単体試験用
           PHPUnit_Framework_TestCase
           Zend_Test_PHPUnit_ControllerTestCase
       結合試験用
        PHPUnit_Extensions_Selenium2TestCase
        ※ 単体試験用の 2 つとは全く別モノなので注
         意!
必要な実行環境の要件
   環境を用途により分ける必要性
   ( ビルド ) デプロイ自動化
   リポジトリ変更をタイムリーにハン
    ドル
   デプロイ時に必ずテストを自動実行
   開発者にタイムリーに通知
   本番環境でユーザテスト実施
   デザインモックをタイムリーに最新
    化
実行環境
   環境
        開発環境:開発コード
        ステージング環境:リポジトリ最新コード
        本番環境:ある時点のリビジョン
   Capistrano
        環境毎のデプロイをコマンド化
        DB 更新 (migrate)
        facebook グループに更新内容を通知
   Jenkins
        テストケース実行
        ステージング環境自動デプロイ
        本番環境用フローチェック
        デザインモック最新化
   Facebook
        テストユーザ
        開発者用グループ
   実装
        ブランチ非採用
        フラグ採用: β 版 view,js,css のみ
PHPUnit_Framework_TestCa
se
   主に Model の単体試験に採用
   複数の Model を多用する
    ServiceModel は setUp メソッド内に
    て MOCK_OBJECT を定義して疎結
    合化
     if(!defined('MOCK_OBJECT'))
      define('MOCK_OBJECT', true);
     $this->getModel(‘[Model 名 ]’);  ※直接
      new×
   単体の Model で完結する Model はス
    テージング環境 DB に接続して試験
Zend_Test_PHPUnit_ControllerTestCase

   主に Controller の単体試験に採用
   以下環境でサポート外なので注意
       Zendframework1.x
       PHPUnit3.6 以降
   とはいえ意外と便利なので PHPUnit3.7 系でも無理やり使
    用
   無理やり使用 tips
       テストケース落ちでも unserialize エラーが発生し実際のエ
        ラーの中身が不明
       なので /usr/share/pear/PHPUnit/Util/PHP.php の 238 行目付
        近をまさぐってテスト実行結果を /tmp 等に出力
       出力内容に実際のエラーが記述されている
   MOCK_OBJECT は基本必ず setUp() 内で定義
   新規に手を入れる Action のテストケースをまず作成
   結果、 Controller 実装における 3 大原則を守れるように
       フローコントロールに注力するよう実装
       Model データ引き回しは厳禁
       セッションを多用しない
PHPUnit_Extensions_Selenium2TestCase


   現在本番環境デプロイ直後に
    Capistrano→Jenkins で自動実行
   ユーザが実行する遷移を忠実に再現
   クリティカルな問題を未然に防ぐ対
    策
       ホントはステージング環境でも動かし
        たい
   CentOS で動く SeleniumServer に対
    して実行
   webDriver の擬似ブラウザで動作確
    認
Selenium2 のメリット/デメ
リット
   メリット
       htmlunit が使える
            Selenium1 系だと htmlunit が使用不可 ( そうだっ
             た)
       最新なので更新が多頻度
   デメリット
       SeleniumIDE によるテストコード生成が出来な
        い
            IDE によるケースが既にあれば移植の手間
            ただし移植は比較的容易
       ドキュメント皆無
            github と戦う
            フレームワークチェック用のテストコード参照で
             書ける
結合試験デバッグ tips
   テストコードサンプル
     https://github.com/sebastianbergm
     ann/phpunit-
     selenium/blob/master/Tests/Seleni
     um2TestCaseTest.php
   テスト対象 html
     https://github.com/sebastianbergm
     ann/phpunit-
     selenium/tree/master/selenium-1-
     tests/html
以上
    T.Chikuba@bilcom
facebook/twitter :  tchikuba

More Related Content

PPT
ビジネス的に高価値なアジャイルテスト
PDF
第4回勉強会 単体テストのすすめ
PDF
PHPUnit でテスト駆動開発を始めよう
KEY
初めての単体テスト
PPTX
C++でテスト駆動開発
PDF
モックライブラリを使ってきちんとユニットテストする #Objective-C
PDF
phpspecで始めるBDD
PDF
よりよいPHPUnitの実行方法を求めて
ビジネス的に高価値なアジャイルテスト
第4回勉強会 単体テストのすすめ
PHPUnit でテスト駆動開発を始めよう
初めての単体テスト
C++でテスト駆動開発
モックライブラリを使ってきちんとユニットテストする #Objective-C
phpspecで始めるBDD
よりよいPHPUnitの実行方法を求めて

What's hot (20)

PPT
Eclipse を使った java 開発 111126 杉浦
PDF
Eclipseデバッガを活用するための31のtips
PPT
Test Plugins
PPTX
nGrinder3 : だれもが簡単にできる性能テスト
KEY
Unit testで定時帰宅!
PPTX
Bat vb script_power_shellの単体テスト自動化
PDF
Getting Started with Testing using PHPUnit
PPTX
テストしなイカ? Seleniumで自動ブラウザテスト
PDF
20121019 jenkins勉強会lt資料
KEY
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
PPTX
単体テストで工数を短縮する
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
PDF
JustTechTalk#10 React開発における自動テスト実践
PDF
はこだてIKA 第4回勉強会 単体テスト
PDF
Awsで実現するseleniumテスト高速術
PPTX
EclipseでのデバッグTips
PDF
最近の単体テスト
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
PPTX
システムテスト自動化標準ガイド 5章発表資料
PPTX
Behat Driven Development
Eclipse を使った java 開発 111126 杉浦
Eclipseデバッガを活用するための31のtips
Test Plugins
nGrinder3 : だれもが簡単にできる性能テスト
Unit testで定時帰宅!
Bat vb script_power_shellの単体テスト自動化
Getting Started with Testing using PHPUnit
テストしなイカ? Seleniumで自動ブラウザテスト
20121019 jenkins勉強会lt資料
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
単体テストで工数を短縮する
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
JustTechTalk#10 React開発における自動テスト実践
はこだてIKA 第4回勉強会 単体テスト
Awsで実現するseleniumテスト高速術
EclipseでのデバッグTips
最近の単体テスト
reg-suitとQA Wolfを活用したVisual Regression Test
システムテスト自動化標準ガイド 5章発表資料
Behat Driven Development
Ad

Similar to PHP agile test tips (20)

PPT
Php unit extensions_selenium2_testcaseによる結合試験でらくらくテスト♪
PDF
Code igniterでテスト駆動開発 資料作成中
KEY
EC-CUBE + PHPUnit で 実践テスト駆動開発
PPTX
Selenium IDE for primer
PDF
テストを書くのに挫折したあとやったこと
PDF
Introduction to Continuous Test Runner MakeGood
PDF
あなたの安心を高速に守る Container-based CI
PDF
「Selenium実践入門」で学ぶテスト自動化の世界
PDF
海外のSeleniumカンファレンスではどんな発表がされているのか2014
PDF
Php勉強会資料20090629
PDF
JenkinsとSeleniumの活用事例
PPTX
Selenium
PDF
MakeGoodで快適なテスト駆動開発を
PDF
Prophecyを使ったユニットテスト
KEY
Behat+Symfony2ではじめるBDD超入門
PDF
JenkinsとjMeterで負荷テストの自動化
PDF
Code ignitertalk 01
PDF
Eclipse PDT + MakeGoodによるPHPコードのテスト
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
PPT
20120128 ci勉強会
Php unit extensions_selenium2_testcaseによる結合試験でらくらくテスト♪
Code igniterでテスト駆動開発 資料作成中
EC-CUBE + PHPUnit で 実践テスト駆動開発
Selenium IDE for primer
テストを書くのに挫折したあとやったこと
Introduction to Continuous Test Runner MakeGood
あなたの安心を高速に守る Container-based CI
「Selenium実践入門」で学ぶテスト自動化の世界
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Php勉強会資料20090629
JenkinsとSeleniumの活用事例
Selenium
MakeGoodで快適なテスト駆動開発を
Prophecyを使ったユニットテスト
Behat+Symfony2ではじめるBDD超入門
JenkinsとjMeterで負荷テストの自動化
Code ignitertalk 01
Eclipse PDT + MakeGoodによるPHPコードのテスト
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
20120128 ci勉強会
Ad

More from Tsutomu Chikuba (9)

PDF
Megurorb 15 lt
PDF
Ebisu.rb#15LT「turnipいいよturnip」
PDF
Meguro.rb#3LT「Ruby入門書を書いてて得られた知見5選+3α」
PDF
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
PDF
turnipとcapybaraとBDDと私
PDF
いよいよPHPerもリーンで行こう
PDF
behatで始めるBDD
PPT
【参観レポート】Lean startupnight real startup dialog
PPT
リーンソフトウェア開発で始めるFacebookアプリ開発
Megurorb 15 lt
Ebisu.rb#15LT「turnipいいよturnip」
Meguro.rb#3LT「Ruby入門書を書いてて得られた知見5選+3α」
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
turnipとcapybaraとBDDと私
いよいよPHPerもリーンで行こう
behatで始めるBDD
【参観レポート】Lean startupnight real startup dialog
リーンソフトウェア開発で始めるFacebookアプリ開発

PHP agile test tips

  • 1. PHP Agile テスト Tips 2012/11/07(Wed) T.Chikuba@bilcom
  • 2. about tchikuba  所属  ビルコム株式会社  自社サービス  ReBuy http://rebuy.jp/  Okkru https://okkru.jp  役割  開発 PM  PM = Playing Manager  いいね!  Linux 、ビール、宇宙平和  facebook/twitter  tchikuba
  • 3. テスト種別  Project としてテスト自動化して いるフェーズは以下の 2 つ  結合試験  単体試験  テスト着手の優先度は「該当フ ェーズ毎」にビジネス的に価値 の高いものを都度判断して決定 する
  • 4. テストフレームワーク種別  当 Project では PHPUnit を採用  採用している PHPUnit は大別して以 下の通り  単体試験用  PHPUnit_Framework_TestCase  Zend_Test_PHPUnit_ControllerTestCase  結合試験用 PHPUnit_Extensions_Selenium2TestCase ※ 単体試験用の 2 つとは全く別モノなので注 意!
  • 5. 必要な実行環境の要件  環境を用途により分ける必要性  ( ビルド ) デプロイ自動化  リポジトリ変更をタイムリーにハン ドル  デプロイ時に必ずテストを自動実行  開発者にタイムリーに通知  本番環境でユーザテスト実施  デザインモックをタイムリーに最新 化
  • 6. 実行環境  環境  開発環境:開発コード  ステージング環境:リポジトリ最新コード  本番環境:ある時点のリビジョン  Capistrano  環境毎のデプロイをコマンド化  DB 更新 (migrate)  facebook グループに更新内容を通知  Jenkins  テストケース実行  ステージング環境自動デプロイ  本番環境用フローチェック  デザインモック最新化  Facebook  テストユーザ  開発者用グループ  実装  ブランチ非採用  フラグ採用: β 版 view,js,css のみ
  • 7. PHPUnit_Framework_TestCa se  主に Model の単体試験に採用  複数の Model を多用する ServiceModel は setUp メソッド内に て MOCK_OBJECT を定義して疎結 合化  if(!defined('MOCK_OBJECT')) define('MOCK_OBJECT', true);  $this->getModel(‘[Model 名 ]’);  ※直接 new×  単体の Model で完結する Model はス テージング環境 DB に接続して試験
  • 8. Zend_Test_PHPUnit_ControllerTestCase  主に Controller の単体試験に採用  以下環境でサポート外なので注意  Zendframework1.x  PHPUnit3.6 以降  とはいえ意外と便利なので PHPUnit3.7 系でも無理やり使 用  無理やり使用 tips  テストケース落ちでも unserialize エラーが発生し実際のエ ラーの中身が不明  なので /usr/share/pear/PHPUnit/Util/PHP.php の 238 行目付 近をまさぐってテスト実行結果を /tmp 等に出力  出力内容に実際のエラーが記述されている  MOCK_OBJECT は基本必ず setUp() 内で定義  新規に手を入れる Action のテストケースをまず作成  結果、 Controller 実装における 3 大原則を守れるように  フローコントロールに注力するよう実装  Model データ引き回しは厳禁  セッションを多用しない
  • 9. PHPUnit_Extensions_Selenium2TestCase  現在本番環境デプロイ直後に Capistrano→Jenkins で自動実行  ユーザが実行する遷移を忠実に再現  クリティカルな問題を未然に防ぐ対 策  ホントはステージング環境でも動かし たい  CentOS で動く SeleniumServer に対 して実行  webDriver の擬似ブラウザで動作確 認
  • 10. Selenium2 のメリット/デメ リット  メリット  htmlunit が使える  Selenium1 系だと htmlunit が使用不可 ( そうだっ た)  最新なので更新が多頻度  デメリット  SeleniumIDE によるテストコード生成が出来な い  IDE によるケースが既にあれば移植の手間  ただし移植は比較的容易  ドキュメント皆無  github と戦う  フレームワークチェック用のテストコード参照で 書ける
  • 11. 結合試験デバッグ tips  テストコードサンプル  https://github.com/sebastianbergm ann/phpunit- selenium/blob/master/Tests/Seleni um2TestCaseTest.php  テスト対象 html  https://github.com/sebastianbergm ann/phpunit- selenium/tree/master/selenium-1- tests/html
  • 12. 以上 T.Chikuba@bilcom facebook/twitter :  tchikuba