PHP Agile テスト     Tips     2012/11/07(Wed)    T.Chikuba@bilcom
about tchikuba   所属       ビルコム株式会社   自社サービス       ReBuy http://rebuy.jp/       Okkru https://okkru.jp   役割       開発...
テスト種別   Project としてテスト自動化して    いるフェーズは以下の 2 つ     結合試験     単体試験   テスト着手の優先度は「該当フ    ェーズ毎」にビジネス的に価値    の高いものを都度判断して決定  ...
テストフレームワーク種別   当 Project では PHPUnit を採用   採用している PHPUnit は大別して以    下の通り       単体試験用           PHPUnit_Framework_TestCa...
必要な実行環境の要件   環境を用途により分ける必要性   ( ビルド ) デプロイ自動化   リポジトリ変更をタイムリーにハン    ドル   デプロイ時に必ずテストを自動実行   開発者にタイムリーに通知   本番環境でユーザテ...
実行環境   環境        開発環境:開発コード        ステージング環境:リポジトリ最新コード        本番環境:ある時点のリビジョン   Capistrano        環境毎のデプロイをコマンド化    ...
PHPUnit_Framework_TestCase   主に Model の単体試験に採用   複数の Model を多用する    ServiceModel は setUp メソッド内に    て MOCK_OBJECT を定義して疎結...
Zend_Test_PHPUnit_ControllerTestCase   主に Controller の単体試験に採用   以下環境でサポート外なので注意       Zendframework1.x       PHPUnit3....
PHPUnit_Extensions_Selenium2TestCase   現在本番環境デプロイ直後に    Capistrano→Jenkins で自動実行   ユーザが実行する遷移を忠実に再現   クリティカルな問題を未然に防ぐ対 ...
Selenium2 のメリット/デメリット   メリット       htmlunit が使える            Selenium1 系だと htmlunit が使用不可 ( そうだっ             た)       最...
結合試験デバッグ tips   テストコードサンプル     https://github.com/sebastianbergm     ann/phpunit-     selenium/blob/master/Tests/Seleni ...
以上    T.Chikuba@bilcomfacebook/twitter :  tchikuba
Upcoming SlideShare
Loading in …5
×

PHP agile test tips

991 views

Published on

PHPUnit_Framework_TestCase
Zend_Test_PHPUnit_ControllerTestCase
PHPUnit_Extensions_Selenium2TestCase

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
991
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PHP agile test tips

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

×