PHPUni t _Ext ensi ons
_Sel eni um2Test Case
による結合試験でらくら
            くテスト♪
             2012/ 11/ 19( Mon)
                  t chi kuba@ l com
                             bi
about t chi kuba


          所属
              – ビルコム株式会社
          自社サービス
              – ReBuy ht t p: / / r ebuy. j p/
              – Okkr u ht t ps: / / okkr u. j p
          役割
              – 開発 PM
              – PM = Pl ayi ng Manager
          いいね!
              – Li nux 、ビール、宇宙平和
          f acebook/ t wi t t er
              – t chi kuba
ビルコム株式会社 BI LCOM I NC
                ,

デジタルエージェンシー i n Asi a
自社サービスご紹介: ReBuy
自社サービスご紹介: Okkr u
本題に入る前に・・
        ・
聞いてみたいことがあります。

PHPer な皆さんはどういう開発プロセスですか?
我々の開発プロセス

リーンソフトウェア開発! キタ━ ( ゚∀゚ ) ━!  ※
 詳細省略
我々の諸環境

• OS : Cent OS( ni f t y cl oud)
• web サーバ: Ngi nx / Apache
• DB サーバ: M     ySQL
• CI サーバ: Jenki ns / Sel eni um     Ser ver
• 言語: PHP / Zendf r am     ewor k /
  j Quer y( Mobi l e)
• SCM: Subver si on→Gi t
• BTS : Bac kl og
我々のテストスタイル

V モデル vs Wモデル
我々のテストスタイル

V モデル vs Wモデル
具体的なテストの肝は・
         ・・
自
動
徹底的に自動化すべし!

Pr oj ect としてテスト自動化しているフェーズは
  以下の 2 つ
   – 受入試験:ユーザ主動線をカバー
   – 結合/単体試験:ユニットテスト
テスト着手の優先度
   – ビジネス価値:単体<結合<受入
   – 開発フェーズ:単体>結合>受入

※ 「該当フェーズ毎」にビジネス的に価値の高い
 ものを
  都度判断して決定
テストフレームワーク種別

• 当 Pr oj ect では PHPUni t を採用
• 採用している PHPUni t は大別して以下の通り
  – 単体/結合試験用
   • PHPUni t _Fr amewor k_Test Case
   • Zend_Test _PHPUni t _Cont r ol l er Test Case

 – 受入試験用
   • PHPUni t _Ext ensi ons_Sel eni um2Test Case
   • ※ 単体試験用の 2 つとは全く別モノなので注意!
リーンな実行環境の要件

• 環境を用途により分ける必要性

• ( ビルド ) デプロイ自動化

• リポジトリ変更をタイムリーにハンドル

• デプロイ時に必ずテストを自動実行

• 開発者にタイムリーに通知

• 本番環境でユーザテスト実施

• デザインモックをタイムリーに最新化
我々の CI 環境
•   環境
     – 開発環境:開発コード
     – ステージング環境:リポジトリ最新コード
     – 本番環境:ある時点のリビジョン
•   Capi st r ano
     – 環境毎のデプロイをコマンド化
     – DB 更新 ( m gr at e)
                  i
     – f acebook グループに更新内容を通知
•   Jenki ns
     – テストケース実行
     – ステージング環境自動デプロイ
     – 本番環境用フローチェック
     – デザインモック最新化
•   Facebook
     – テストユーザ
     – 開発者用グループ
•   実装
     – ブランチ非採用
     – フラグ採用: β 版 vi ew, j s, css のみ
【 FYI 】 PHPUni t _Fr amewor k_Test Ca
se
• 主に M    odel の単体/結合試験に採用
• 複数の M      odel を多用する Ser vi ceM       odel は set Up メ
  ソッド内にて M          OCK_OBJECT を定義して疎結合化
   – i f ( ! def i ned( ' MOCK_OBJECT' ) )
     def i ne( ' M  OCK_OBJECT' , t r ue) ;
   – $t hi s- >get M  odel ( ‘ [ Model 名 ] ’ ) ;  ※直接
     new×
• 単体の M      odel で完結する M        odel はステージング環境
  DB に接続して試験
【 FYI 】 Zend_Test _PHPUni t _Cont r ol l er Test Case


• 主に Cont r ol l er の単体試験に採用
• 以下環境でサポート外なので注意
   – Zendf r amewor k1. x
   – PHPUni t 3. 6 以降
• とはいえ意外と便利なので PHPUni t 3. 7 系でも無理やり使用
• 無理やり使用 t i ps
   – テストケース落ちでも unser i al i ze エラーが発生し実際のエ
     ラーの中身が不明
   – なので / usr / shar e/ pear / PHPUni t / Ut i l / PHP. php の 238
     行目付近をまさぐってテスト実行結果を / t m 等に出力                p
   – 出力内容に実際のエラーが記述されている
• MOCK_OBJECT は基本必ず set Up( ) 内で定義
• 新規に手を入れる Act i on のテストケースをまず作成
• 結果、 Cont r ol l er 実装における 3 大原則を守れるように
   – フローコントロールに注力するよう実装
   – Model データ引き回しは厳禁
   – セッションを多用しない
PHPUni t _Ext ensi ons_Sel en
               i um2Test Case
【本命】 PHPUni t _ Ext ens i ons_Sel eni um2Test Cas e


• 現在本番環境デプロイ直後に Capi st r ano→Jenki ns で
  自動実行
• ユーザが実行する遷移を忠実に再現
• クリティカルな問題を未然に防ぐ対策
   – ホントはステージング環境でも動かしたい
• Cent OS で動く Sel eni um     Ser ver に対して実行
• webDr i ver の擬似ブラウザで動作確認
   – $t hi s- >set Br owser ( ' ht m uni t ' ) ;
                                    l
結合試験デバッグ t i ps

テストコードサンプル
 – ht t ps: / / gi t hub. com sebast i anber gm
                             /                 ann/

テスト対象 ht m      l
 – ht t ps: / / gi t hub. com sebast i anber gm
                             /                 ann/
見れば分かるさ♪
以上
     tc hikuba @  bilcom
facebook/twitter :  tchikuba
・・・あまりにも酷いよ
うな気がするので・・・
phpuni t . de マニュアルより抜粋

f r om
    ht t p: / / www. phpuni t . de/ manual / cur r ent / j a/ sel eni um h
                                                                        .
    tm l
phpuni t . de マニュアルより抜粋

f r om
    ht t p: / / www. phpuni t . de/ manual / cur r ent / j a/ sel eni um h
                                                                        .
    tm l
以上!




・・・まじっすかw
phpuni t . de マニュアルより抜粋

 f r om
     ht t p: / / www. phpuni t . de/ manual / cur r ent / j a/ sel eni um h
                                                                         .
     tm l




ん?
Sel eni um2Test Case の gi t hub

・・・まぁリンクあるだけましか・・・w
f r om ht t ps: / / gi t hub. com sebast i anber gm
                                 /                 ann/ phpuni t - sel eni um bl ob/ m
                                                                             /        ast er / Test s/ Sel eni um2Test CaseTest . php
gi t hub サンプルの見方

URL とタイトルのアサーション
f r om ht t ps: / / gi t hub. com sebast i anber gm
                                 /                 ann/ phpuni t - sel eni um bl ob/ m
                                                                             /        ast er / Test s/ Sel eni um2Test CaseTest . php
gi t hub サンプルの見方

テスト対象は超絶シンプルな ht ml
f r om
         ht t ps: / / gi t hub. com sebast i anber gm
                                   /                 ann/ phpuni t - sel eni um bl ob/ m
                                                                               /        ast er / sel eni um 1- t est s/ ht m / Cam CasePage. ht m
                                                                                                           -                l     el             l
gi t hub サンプルの見方

• テストケースのおさらい
publ i c f unc t i on t es t Cam Cas eUrl s AreSupport ed( )
                                     el
{
        $t hi s - >ur l ( ' ht m / Cam CasePage. ht m ' ) ;
                                l     el                l
        $t hi s - >asser t St r i ngEndsW t h( ' ht m / Cam CasePage. ht m ' , $t hi s - >ur l ( ) ) ;
                                         i           l     el                l
        $t hi s - >asser t Equal s( ' Cam Case page' , $t hi s - >t i t l e( ) ) ;
                                         el
}



• 分かること
  – $t hi s - >ur l ( ) でコール
  – $t hi s - >asser t St r i ngEndsW t h( ) で URL チェッ
                                          i
    ク
  – $t hi s - >t i t l e( ) で <t i t l e> タグの値が引ける
我々のテストケース

こんな感じ


            L.21 // error check
            ・問合せにアクセス
            ・何も入力せずサブミット
            ・エラーメッセージ出力を確認
            ・ email 入力フォーム/確認フォームに
            a/b と入力してサブミット
            ・エラーメッセージ出力を確認
我々のテストケース

こんな感じ
我々のテストケース   L.36 // facebook login 以降
            (ざっくり)
            ・ FB コネクト
こんな感じ       ・正常系で問合せ入力
            ・確認画面の表示チェック
            ・完了画面の表示チェック
まとめ
我々のテストケース

• 今日紹介したのは一部
• 特に Okkr u フローは複雑
  – ユーザ A :商品・友人を選んで受注
  – ユーザ B :住所入力
  – ユーザ A :決済
• ビジネスモデル
  – 売上の~ %が我々の利益
  – どのフローで止まっても利益が得られない!
我々のテストケース

• 今日紹介したのは一部
• 特に Okkr u フローは複雑
  – ユーザ A :商品・友人を選んで受注
  – ユーザ B :住所入力
  – ユーザ A :決済
• ビジネスモデル
  – 売上の~ %が我々の利益
  – どのフローで止まっても利益が得られない!
フローチェックの継続的なトータルサポートは
 ビジネスモデルからも理に適っている!
Sel eni um のメリット/デメリット
          2

メリット
  – ht m uni t が使える
        l
     •   Sel eni um 系だと ht m uni t が使用不可 ( そうだった )
                   1        l
  – 最新なので更新が多頻度
     •   使えるメソッドもリアルタイムで増えてる
  – Sebast i an Ber gmann な恩恵(謎)
デメリット
  – Sel eni um DE によるテストコード生成が出来ない
              I
     •   I DE によるケースが既にあれば移植の手間
     •   ただし移植は比較的容易 ( Sel eni um前提知識必須 )
  – ドキュメント皆無
     •   gi t hub と戦う ( って程でもないかな? )
     •   フレームワークチェック用のテストコード参照で書ける
Sel eni um のメリット/デメリット
          2

メリット
  – ht m uni t が使える
        l
     •   Sel eni um 系だと ht m uni t が使用不可 ( そうだった )
                   1        l
  – 最新なので更新が多頻度
     •   使えるメソッドもリアルタイムで増えてる
  – Sebast i an Ber gmann な恩恵(謎)
デメリット
  – Sel eni um DE によるテストコード生成が出来ない
              I
     •   I DE によるケースが既にあれば移植の手間
     •   ただし移植は比較的容易 ( Sel eni um前提知識必須 )
  – ドキュメント皆無
     •   gi t hub と戦う ( って程でもないかな? )
     •   フレームワークチェック用のテストコード参照で書ける


       デメリット以上のメリットが大きいので
     PHPer な方にはとっつきやすい ( と思われる )
      PHPUnit_Extensions_Selenium2TestCase
        でテストケースを書いてみましょう~
( 時間あれば ) うちの Jenki ns さん
を紹介
本日の Jenki ns さんの
ごきげん
↓
Let ’ s
PHPUni t _ Ext ens i ons_Sel eni um2Test Cas e
                       !!!
以上
     tc hikuba @  bilcom
facebook/twitter :  tchikuba

More Related Content

PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PPTX
Ocaml lecture slides 01 at axsh
PDF
Unity2015_No10_~UGUI&Audio~
PDF
組み込みでこそC++を使う10の理由
PDF
Swift 2.0 の Error Handling #yhios
PPTX
Visual C++で使えるC++11
PDF
PHPの今とこれから2014
PPT
ZFSのソースコードをチラ見してみる
BoostAsioで可読性を求めるのは間違っているだろうか
Ocaml lecture slides 01 at axsh
Unity2015_No10_~UGUI&Audio~
組み込みでこそC++を使う10の理由
Swift 2.0 の Error Handling #yhios
Visual C++で使えるC++11
PHPの今とこれから2014
ZFSのソースコードをチラ見してみる

What's hot (20)

PDF
ゲーム開発者のための C++11/C++14
PDF
Template Meta Programming入門から応用まで
PDF
Hack/HHVM 入門
PDF
PDF
君はまだ,本当のプリプロセスを知らない
PDF
第2回勉強会スライド
PDF
第1回勉強会スライド
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
PPTX
エラーハンドリング
PDF
PHPにおけるI/O多重化とyield
PDF
プログラムの処方箋~健康なコードと病んだコード
KEY
Objc lambda
PDF
templateとautoの型推論
PPTX
C++0x総復習
PDF
Swift 2.0 で変わったところ「前編」 #cswift
PDF
中3女子が狂える本当に気持ちのいい constexpr
PPTX
C# 8.0 null許容参照型
PDF
SEH on mingw32
PPTX
最新C++事情 C++14-C++20 (2018年10月)
PPT
2008.10.18 L4u Tech Talk
ゲーム開発者のための C++11/C++14
Template Meta Programming入門から応用まで
Hack/HHVM 入門
君はまだ,本当のプリプロセスを知らない
第2回勉強会スライド
第1回勉強会スライド
C++コンパイラ GCCとClangからのメッセージをお読みください
エラーハンドリング
PHPにおけるI/O多重化とyield
プログラムの処方箋~健康なコードと病んだコード
Objc lambda
templateとautoの型推論
C++0x総復習
Swift 2.0 で変わったところ「前編」 #cswift
中3女子が狂える本当に気持ちのいい constexpr
C# 8.0 null許容参照型
SEH on mingw32
最新C++事情 C++14-C++20 (2018年10月)
2008.10.18 L4u Tech Talk
Ad

Viewers also liked (13)

PPT
PDF
boots_memory
PDF
Housemobile
PPTX
Christmas adrián . f . y david . c .
PDF
ГРУППА ЭНЕРГОСЕРВИС ТЕХНОПЛАСТ
PPT
Pk thn 3 keusahawanan
PDF
Jobs 12
PPT
Changing the focus of a sentence
PDF
Villard WritingSample Cybersecurity and International Law
PPTX
Christhmas Rafa
PPTX
Christmas Manuel
PPTX
PDF
CMD 2015: Automation completes Valmet's offering
boots_memory
Housemobile
Christmas adrián . f . y david . c .
ГРУППА ЭНЕРГОСЕРВИС ТЕХНОПЛАСТ
Pk thn 3 keusahawanan
Jobs 12
Changing the focus of a sentence
Villard WritingSample Cybersecurity and International Law
Christhmas Rafa
Christmas Manuel
CMD 2015: Automation completes Valmet's offering
Ad

Similar to Php unit extensions_selenium2_testcaseによる結合試験でらくらくテスト♪ (20)

PDF
Inside FastEnum
PPT
ビジネス的に高価値なアジャイルテスト
PPT
PHP agile test tips
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
PPT
Yapc::Asia 2011 rejectConf Slide
PPT
Start!! Ruby
PDF
CRF を使った Web 本文抽出
PDF
Frequency with nltk
PDF
Getting Started with Testing using PHPUnit
PDF
密着!わたしのコンソールアプリ開発環境
PDF
Perlのテストがわからない
PPTX
Php in ruby
PDF
Ilstudy001_20110806
PDF
super_unkoをスーパーキレイにした
PPT
2009年のPHPフレームワーク
PDF
C++コミュニティーの中心でC++をDISる
PDF
ユーザーストーリー:ファースト・ジェネレーション
PDF
おまえらこのライブラリ使ってないの? m9 (2013-07)
PPTX
Behat Driven Development
PDF
Enumはデキる子 ~ case .Success(let value): ~
Inside FastEnum
ビジネス的に高価値なアジャイルテスト
PHP agile test tips
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Yapc::Asia 2011 rejectConf Slide
Start!! Ruby
CRF を使った Web 本文抽出
Frequency with nltk
Getting Started with Testing using PHPUnit
密着!わたしのコンソールアプリ開発環境
Perlのテストがわからない
Php in ruby
Ilstudy001_20110806
super_unkoをスーパーキレイにした
2009年のPHPフレームワーク
C++コミュニティーの中心でC++をDISる
ユーザーストーリー:ファースト・ジェネレーション
おまえらこのライブラリ使ってないの? m9 (2013-07)
Behat Driven Development
Enumはデキる子 ~ case .Success(let value): ~

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 unit extensions_selenium2_testcaseによる結合試験でらくらくテスト♪

  • 1. PHPUni t _Ext ensi ons _Sel eni um2Test Case による結合試験でらくら くテスト♪ 2012/ 11/ 19( Mon) t chi kuba@ l com bi
  • 2. about t chi kuba 所属 – ビルコム株式会社 自社サービス – ReBuy ht t p: / / r ebuy. j p/ – Okkr u ht t ps: / / okkr u. j p 役割 – 開発 PM – PM = Pl ayi ng Manager いいね! – Li nux 、ビール、宇宙平和 f acebook/ t wi t t er – t chi kuba
  • 3. ビルコム株式会社 BI LCOM I NC , デジタルエージェンシー i n Asi a
  • 9. 我々の諸環境 • OS : Cent OS( ni f t y cl oud) • web サーバ: Ngi nx / Apache • DB サーバ: M ySQL • CI サーバ: Jenki ns / Sel eni um Ser ver • 言語: PHP / Zendf r am ewor k / j Quer y( Mobi l e) • SCM: Subver si on→Gi t • BTS : Bac kl og
  • 14. 徹底的に自動化すべし! Pr oj ect としてテスト自動化しているフェーズは 以下の 2 つ – 受入試験:ユーザ主動線をカバー – 結合/単体試験:ユニットテスト テスト着手の優先度 – ビジネス価値:単体<結合<受入 – 開発フェーズ:単体>結合>受入 ※ 「該当フェーズ毎」にビジネス的に価値の高い ものを   都度判断して決定
  • 15. テストフレームワーク種別 • 当 Pr oj ect では PHPUni t を採用 • 採用している PHPUni t は大別して以下の通り – 単体/結合試験用 • PHPUni t _Fr amewor k_Test Case • Zend_Test _PHPUni t _Cont r ol l er Test Case – 受入試験用 • PHPUni t _Ext ensi ons_Sel eni um2Test Case • ※ 単体試験用の 2 つとは全く別モノなので注意!
  • 16. リーンな実行環境の要件 • 環境を用途により分ける必要性 • ( ビルド ) デプロイ自動化 • リポジトリ変更をタイムリーにハンドル • デプロイ時に必ずテストを自動実行 • 開発者にタイムリーに通知 • 本番環境でユーザテスト実施 • デザインモックをタイムリーに最新化
  • 17. 我々の CI 環境 • 環境 – 開発環境:開発コード – ステージング環境:リポジトリ最新コード – 本番環境:ある時点のリビジョン • Capi st r ano – 環境毎のデプロイをコマンド化 – DB 更新 ( m gr at e) i – f acebook グループに更新内容を通知 • Jenki ns – テストケース実行 – ステージング環境自動デプロイ – 本番環境用フローチェック – デザインモック最新化 • Facebook – テストユーザ – 開発者用グループ • 実装 – ブランチ非採用 – フラグ採用: β 版 vi ew, j s, css のみ
  • 18. 【 FYI 】 PHPUni t _Fr amewor k_Test Ca se • 主に M odel の単体/結合試験に採用 • 複数の M odel を多用する Ser vi ceM odel は set Up メ ソッド内にて M OCK_OBJECT を定義して疎結合化 – i f ( ! def i ned( ' MOCK_OBJECT' ) ) def i ne( ' M OCK_OBJECT' , t r ue) ; – $t hi s- >get M odel ( ‘ [ Model 名 ] ’ ) ;  ※直接 new× • 単体の M odel で完結する M odel はステージング環境 DB に接続して試験
  • 19. 【 FYI 】 Zend_Test _PHPUni t _Cont r ol l er Test Case • 主に Cont r ol l er の単体試験に採用 • 以下環境でサポート外なので注意 – Zendf r amewor k1. x – PHPUni t 3. 6 以降 • とはいえ意外と便利なので PHPUni t 3. 7 系でも無理やり使用 • 無理やり使用 t i ps – テストケース落ちでも unser i al i ze エラーが発生し実際のエ ラーの中身が不明 – なので / usr / shar e/ pear / PHPUni t / Ut i l / PHP. php の 238 行目付近をまさぐってテスト実行結果を / t m 等に出力 p – 出力内容に実際のエラーが記述されている • MOCK_OBJECT は基本必ず set Up( ) 内で定義 • 新規に手を入れる Act i on のテストケースをまず作成 • 結果、 Cont r ol l er 実装における 3 大原則を守れるように – フローコントロールに注力するよう実装 – Model データ引き回しは厳禁 – セッションを多用しない
  • 20. PHPUni t _Ext ensi ons_Sel en i um2Test Case
  • 21. 【本命】 PHPUni t _ Ext ens i ons_Sel eni um2Test Cas e • 現在本番環境デプロイ直後に Capi st r ano→Jenki ns で 自動実行 • ユーザが実行する遷移を忠実に再現 • クリティカルな問題を未然に防ぐ対策 – ホントはステージング環境でも動かしたい • Cent OS で動く Sel eni um Ser ver に対して実行 • webDr i ver の擬似ブラウザで動作確認 – $t hi s- >set Br owser ( ' ht m uni t ' ) ; l
  • 22. 結合試験デバッグ t i ps テストコードサンプル – ht t ps: / / gi t hub. com sebast i anber gm / ann/ テスト対象 ht m l – ht t ps: / / gi t hub. com sebast i anber gm / ann/
  • 24. 以上 tc hikuba @ bilcom facebook/twitter :  tchikuba
  • 26. phpuni t . de マニュアルより抜粋 f r om ht t p: / / www. phpuni t . de/ manual / cur r ent / j a/ sel eni um h . tm l
  • 27. phpuni t . de マニュアルより抜粋 f r om ht t p: / / www. phpuni t . de/ manual / cur r ent / j a/ sel eni um h . tm l
  • 29. phpuni t . de マニュアルより抜粋 f r om ht t p: / / www. phpuni t . de/ manual / cur r ent / j a/ sel eni um h . tm l ん?
  • 30. Sel eni um2Test Case の gi t hub ・・・まぁリンクあるだけましか・・・w f r om ht t ps: / / gi t hub. com sebast i anber gm / ann/ phpuni t - sel eni um bl ob/ m / ast er / Test s/ Sel eni um2Test CaseTest . php
  • 31. gi t hub サンプルの見方 URL とタイトルのアサーション f r om ht t ps: / / gi t hub. com sebast i anber gm / ann/ phpuni t - sel eni um bl ob/ m / ast er / Test s/ Sel eni um2Test CaseTest . php
  • 32. gi t hub サンプルの見方 テスト対象は超絶シンプルな ht ml f r om ht t ps: / / gi t hub. com sebast i anber gm / ann/ phpuni t - sel eni um bl ob/ m / ast er / sel eni um 1- t est s/ ht m / Cam CasePage. ht m - l el l
  • 33. gi t hub サンプルの見方 • テストケースのおさらい publ i c f unc t i on t es t Cam Cas eUrl s AreSupport ed( ) el {         $t hi s - >ur l ( ' ht m / Cam CasePage. ht m ' ) ; l el l         $t hi s - >asser t St r i ngEndsW t h( ' ht m / Cam CasePage. ht m ' , $t hi s - >ur l ( ) ) ; i l el l         $t hi s - >asser t Equal s( ' Cam Case page' , $t hi s - >t i t l e( ) ) ; el } • 分かること – $t hi s - >ur l ( ) でコール – $t hi s - >asser t St r i ngEndsW t h( ) で URL チェッ i ク – $t hi s - >t i t l e( ) で <t i t l e> タグの値が引ける
  • 34. 我々のテストケース こんな感じ L.21 // error check ・問合せにアクセス ・何も入力せずサブミット ・エラーメッセージ出力を確認 ・ email 入力フォーム/確認フォームに a/b と入力してサブミット ・エラーメッセージ出力を確認
  • 36. 我々のテストケース L.36 // facebook login 以降 (ざっくり) ・ FB コネクト こんな感じ ・正常系で問合せ入力 ・確認画面の表示チェック ・完了画面の表示チェック
  • 38. 我々のテストケース • 今日紹介したのは一部 • 特に Okkr u フローは複雑 – ユーザ A :商品・友人を選んで受注 – ユーザ B :住所入力 – ユーザ A :決済 • ビジネスモデル – 売上の~ %が我々の利益 – どのフローで止まっても利益が得られない!
  • 39. 我々のテストケース • 今日紹介したのは一部 • 特に Okkr u フローは複雑 – ユーザ A :商品・友人を選んで受注 – ユーザ B :住所入力 – ユーザ A :決済 • ビジネスモデル – 売上の~ %が我々の利益 – どのフローで止まっても利益が得られない! フローチェックの継続的なトータルサポートは ビジネスモデルからも理に適っている!
  • 40. Sel eni um のメリット/デメリット 2 メリット – ht m uni t が使える l • Sel eni um 系だと ht m uni t が使用不可 ( そうだった ) 1 l – 最新なので更新が多頻度 • 使えるメソッドもリアルタイムで増えてる – Sebast i an Ber gmann な恩恵(謎) デメリット – Sel eni um DE によるテストコード生成が出来ない I • I DE によるケースが既にあれば移植の手間 • ただし移植は比較的容易 ( Sel eni um前提知識必須 ) – ドキュメント皆無 • gi t hub と戦う ( って程でもないかな? ) • フレームワークチェック用のテストコード参照で書ける
  • 41. Sel eni um のメリット/デメリット 2 メリット – ht m uni t が使える l • Sel eni um 系だと ht m uni t が使用不可 ( そうだった ) 1 l – 最新なので更新が多頻度 • 使えるメソッドもリアルタイムで増えてる – Sebast i an Ber gmann な恩恵(謎) デメリット – Sel eni um DE によるテストコード生成が出来ない I • I DE によるケースが既にあれば移植の手間 • ただし移植は比較的容易 ( Sel eni um前提知識必須 ) – ドキュメント皆無 • gi t hub と戦う ( って程でもないかな? ) • フレームワークチェック用のテストコード参照で書ける デメリット以上のメリットが大きいので PHPer な方にはとっつきやすい ( と思われる ) PHPUnit_Extensions_Selenium2TestCase でテストケースを書いてみましょう~
  • 42. ( 時間あれば ) うちの Jenki ns さん を紹介 本日の Jenki ns さんの ごきげん ↓
  • 43. Let ’ s PHPUni t _ Ext ens i ons_Sel eni um2Test Cas e !!!
  • 44. 以上 tc hikuba @ bilcom facebook/twitter :  tchikuba