SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Symfony2
                                   X
                                  BDD
                 日本Symfonyユーザー会 後藤 秀宣(@hidenorigoto)



Symfony2 x BDD
 




           Symfony2なら

Symfony2 x BDD
 



             手軽にBDDを
             始められるッ

Symfony2 x BDD
準備

Symfony2 x BDD
準備するもの
    ●
        Symfony2 PR7
    ●
        Behat
    ●
        BehatBundle
    ●
        PHPUnit

Symfony2 x BDD
 
   更新されたっぽい




Symfony2 x BDD
準備するもの
    ●
        Symfony2 PR7 (or PR9)
    ●
        Behat
    ●
        BehatBundle
    ●
        PHPUnit

Symfony2 x BDD
準備するもの
    ●
        Symfony2 PR7 (or PR9)
    ●
        Behat                 Behat
                         developブランチ
    ●
        BehatBundle
    ●
        PHPUnit        Behat の作者が開発
                      (Symfony2コミッター)


Symfony2 x BDD
参考URL
    ●
        http://blog.symfony.jp/2011/03/26/
        337
        「Symfony2とBehatでBDD」

    ●
        PHPUnitはこの辺使うと楽かも
        https://github.com/knplabs/phpunit
        -easyinstall


Symfony2 x BDD
Symfony/Symfony2には
              もともと
       テストの機能があります


Symfony2 x BDD
Symfony2での位置づけ

                 標準   BDD
    機能(受入) Crawlerを Behatによる
    テスト    使ったテス テスト
                 
           ト
           (PHPUnit)
    ユニットテ PHPUnit     PHPUnit
    スト
Symfony2 x BDD
 




                 Web開発の流れ



Symfony2 x BDD
Web開発の流れ
    ●
        サイトの機能を考える




Symfony2 x BDD
Web開発の流れ
    ●
        サイトの機能を考える
    ●
        機能ごとの入出力を決める




Symfony2 x BDD
Web開発の流れ
    ●
        サイトの機能を考える
    ●
        機能ごとの入出力を決める
    ●
        実装する




Symfony2 x BDD
 




                 BDDにすると



Symfony2 x BDD
BDDでのWeb開発の流れ
    ●
        サイトの機能を考える
         フィーチャを書く
    ●
        機能ごとの入出力を決める
    ●
        実装する


Symfony2 x BDD
BDDでのWeb開発の流れ
    ●
        サイトの機能を考える
         フィーチャを書く
    ●
        機能ごとの入出力を決める
         シナリオを書く
    ●
        実装する

Symfony2 x BDD
BDDでのWeb開発の流れ
    ●
        サイトの機能を考える
         フィーチャを書く
    ●
        機能ごとの入出力を決める
         シナリオを書く
    ●
        実装する
         実装+ユニットテスト
Symfony2 x BDD
BDDでのWeb開発の流れ
    ●
        サイトの機能を考える
         フィーチャを書く
    ●
        機能ごとの入出力を決める
         シナリオを書く
                 ステップを書く
    ●
        実装する
         実装+ユニットテスト
Symfony2 x BDD
 

                   Symfony2
                      +
                 BehatBundle
                  でのやり方
Symfony2 x BDD
BehatBundleでBDD
    ●
        バンドルを作っておく
        (autoload、AppKernel登録)


    ●
        バンドル内でBDD関連初期化

        behat:test:bundle --init バンドル名




Symfony2 x BDD
BehatBundleでBDD
    ●
        Behat:test:bundle --initで、BDD用の初期
        ファイルがバンドル内に生成される




Symfony2 x BDD
BehatBundleでBDD
   Behatのテストを実行できるようになる
   (まだシナリオやステップはない)




Symfony2 x BDD
これだけで
         BDDの「フィーチャ」などを
          書く準備ができました!!



Symfony2 x BDD
1チケット
                       ‖
                      1機能     Behatの
                       ‖       ルール
                    1フィーチャ
                       ‖
                 1フィーチャファイル
                       ‖
                   1Gitブランチ


Symfony2 x BDD
1チケット
                       ‖
                      1機能     Behatの
                       ‖       ルール
                    1フィーチャ
                       ‖
                 1フィーチャファイル
                       ‖
      複数の
                   1Gitブランチ
     シナリオ

Symfony2 x BDD
1チケット
                       ‖
                      1機能     Behatの
                       ‖       ルール
                    1フィーチャ
                       ‖
                 1フィーチャファイル
                       ‖
      複数の
                   1Gitブランチ
     シナリオ

Symfony2 x BDD
1チケット
                       ‖
                      1機能     Behatの
                       ‖       ルール
                    1フィーチャ
                       ‖
                 1フィーチャファイル
                       ‖
      複数の
                   1Gitブランチ
     シナリオ

Symfony2 x BDD
フィーチャ/シナリオを書く
    ●
        バンドルのTests/Featuresディレクトリ
        〜.feature ファイルを作成




Symfony2 x BDD
フィーチャ/シナリオを書く
    ●
        キーワード部分は日本語にもデフォルトで対応
        (先頭に language: ja が必要)




Symfony2 x BDD
フィーチャ/シナリオを書く
    ●
        フィーチャの構文
        Gherkin
        http://docs.behat.org/en/gherkin/index.html

        Cucumber
        http://cukes.info/

        Ryuzee.com
        [PHP]BehatとSeleniumを組み合わせ受け入れテ
        ストを自動化する
        http://www.ryuzee.com/contents/blog/3608
Symfony2 x BDD
Behatのテストを実行
   フィーチャがテストとして実行されるようになるッ!




Symfony2 x BDD
ステップは?
    ●
        BehatBundleにデフォルトのWeb Stepが組み込
        まれている
        (なので、ステップを記述しなくてもテストが
        実行された)




Symfony2 x BDD
BehatBundle組み込みのstep
    ●
        BehatBundle
          └Resources
              └features
                  └steps
                      browser_steps.php
                      form_steps.php
                      request_steps.php
                      response_steps.php




Symfony2 x BDD
browser_steps.php
   ステップはキーワードメソッドに正規表現パラ
   メータとして実装されている

   以下は「Given I am on 〜」というステップ




Symfony2 x BDD
ステップを日本語で書くには?
    ●
        書けばいい
         →Behatコマンド実行時に雛形

    ●
        最初から I am on〜の部分を翻訳した日本語ス
        テップを用意しておくこともOK




Symfony2 x BDD
 


       Behatのテストが出来上がった
              (RED)
                ↓
               実装


Symfony2 x BDD
 
                 実装・ユニットテスト

                    (略)

       Symfony2のドキュメント参照


Symfony2 x BDD
実装完了
        実装できたらBehatのテストを実行(GREEN)




Symfony2 x BDD
これが1サイクル
   ●
     このような流れを繰り返して実装していく




Symfony2 x BDD
 




                 おまけ

Symfony2 x BDD
日本語ステップ
    ●
        BehatBundle
          └Resources
              └features
                  └steps
               └i18n
                         ja.xliff

        ここに翻訳リソースをおけば、組み込みステッ
        プを日本語で利用可能



Symfony2 x BDD
 




                 まとめ

Symfony2 x BDD
まとめ
    Symfony2は、Behatをフレーム
   ワークに統合するための
   BehatBundleが提供されるてお
   り、BDDしたいという人にもオ
   ススメ


Symfony2 x BDD
 



                  Symfony2
                 やろうぜ!
Symfony2 x BDD
 




           ありがとうございました




Symfony2 x BDD
Symfony
        のステッカーを欲しい方は
       懇親会で声かけてください!



Symfony2 x BDD

Más contenido relacionado

Similar a Symfony2 behat-bdd

Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
Unity勉強会 ひとり親方
Unity勉強会 ひとり親方Unity勉強会 ひとり親方
Unity勉強会 ひとり親方マスタッシュ
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Hidenori Goto
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Kazuo Asano (@kazuo_asa)
 
Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門晃 遠山
 

Similar a Symfony2 behat-bdd (7)

Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 
Composer
 Composer Composer
Composer
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
Unity勉強会 ひとり親方
Unity勉強会 ひとり親方Unity勉強会 ひとり親方
Unity勉強会 ひとり親方
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
 
Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門
 

Más de Hidenori Goto

Excelで勤務時間合計2
Excelで勤務時間合計2Excelで勤務時間合計2
Excelで勤務時間合計2Hidenori Goto
 
Excelで勤務時間合計
Excelで勤務時間合計Excelで勤務時間合計
Excelで勤務時間合計Hidenori Goto
 
Symfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesSymfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesHidenori Goto
 
Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)Hidenori Goto
 
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Hidenori Goto
 
Symfony2 introduction
Symfony2 introductionSymfony2 introduction
Symfony2 introductionHidenori Goto
 
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeHidenori Goto
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話Hidenori Goto
 
HTC Desireについて
HTC DesireについてHTC Desireについて
HTC DesireについてHidenori Goto
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Hidenori Goto
 
TwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使うTwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使うHidenori Goto
 
TwitterのStreaming APIについて
TwitterのStreaming APIについてTwitterのStreaming APIについて
TwitterのStreaming APIについてHidenori Goto
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsyncHidenori Goto
 
Osc Nagoya 2009 symfonyの紹介
Osc Nagoya 2009 symfonyの紹介Osc Nagoya 2009 symfonyの紹介
Osc Nagoya 2009 symfonyの紹介Hidenori Goto
 

Más de Hidenori Goto (20)

Excelで勤務時間合計2
Excelで勤務時間合計2Excelで勤務時間合計2
Excelで勤務時間合計2
 
Excelで勤務時間合計
Excelで勤務時間合計Excelで勤務時間合計
Excelで勤務時間合計
 
Symfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesSymfony2 3rd-Party Bundles
Symfony2 3rd-Party Bundles
 
翻訳について
翻訳について翻訳について
翻訳について
 
Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)
 
Symfony2 workshop-2
Symfony2 workshop-2Symfony2 workshop-2
Symfony2 workshop-2
 
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
 
Symfony2 workshop-1
Symfony2 workshop-1Symfony2 workshop-1
Symfony2 workshop-1
 
Symfony2 introduction
Symfony2 introductionSymfony2 introduction
Symfony2 introduction
 
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
 
Orm Designer
Orm DesignerOrm Designer
Orm Designer
 
Symfony tdd
Symfony tddSymfony tdd
Symfony tdd
 
Symfony2 caching
Symfony2 cachingSymfony2 caching
Symfony2 caching
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
 
HTC Desireについて
HTC DesireについてHTC Desireについて
HTC Desireについて
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
 
TwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使うTwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使う
 
TwitterのStreaming APIについて
TwitterのStreaming APIについてTwitterのStreaming APIについて
TwitterのStreaming APIについて
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsync
 
Osc Nagoya 2009 symfonyの紹介
Osc Nagoya 2009 symfonyの紹介Osc Nagoya 2009 symfonyの紹介
Osc Nagoya 2009 symfonyの紹介
 

Symfony2 behat-bdd

  • 1. Symfony2 X BDD 日本Symfonyユーザー会 後藤 秀宣(@hidenorigoto) Symfony2 x BDD
  • 2.   Symfony2なら Symfony2 x BDD
  • 3.   手軽にBDDを 始められるッ Symfony2 x BDD
  • 5. 準備するもの ● Symfony2 PR7 ● Behat ● BehatBundle ● PHPUnit Symfony2 x BDD
  • 6.   更新されたっぽい Symfony2 x BDD
  • 7. 準備するもの ● Symfony2 PR7 (or PR9) ● Behat ● BehatBundle ● PHPUnit Symfony2 x BDD
  • 8. 準備するもの ● Symfony2 PR7 (or PR9) ● Behat Behat developブランチ ● BehatBundle ● PHPUnit Behat の作者が開発 (Symfony2コミッター) Symfony2 x BDD
  • 9. 参考URL ● http://blog.symfony.jp/2011/03/26/ 337 「Symfony2とBehatでBDD」 ● PHPUnitはこの辺使うと楽かも https://github.com/knplabs/phpunit -easyinstall Symfony2 x BDD
  • 10. Symfony/Symfony2には もともと テストの機能があります Symfony2 x BDD
  • 11. Symfony2での位置づけ 標準 BDD 機能(受入) Crawlerを Behatによる テスト 使ったテス テスト   ト (PHPUnit) ユニットテ PHPUnit PHPUnit スト Symfony2 x BDD
  • 12.   Web開発の流れ Symfony2 x BDD
  • 13. Web開発の流れ ● サイトの機能を考える Symfony2 x BDD
  • 14. Web開発の流れ ● サイトの機能を考える ● 機能ごとの入出力を決める Symfony2 x BDD
  • 15. Web開発の流れ ● サイトの機能を考える ● 機能ごとの入出力を決める ● 実装する Symfony2 x BDD
  • 16.   BDDにすると Symfony2 x BDD
  • 17. BDDでのWeb開発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める ● 実装する Symfony2 x BDD
  • 18. BDDでのWeb開発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める  シナリオを書く ● 実装する Symfony2 x BDD
  • 19. BDDでのWeb開発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める  シナリオを書く ● 実装する  実装+ユニットテスト Symfony2 x BDD
  • 20. BDDでのWeb開発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める  シナリオを書く ステップを書く ● 実装する  実装+ユニットテスト Symfony2 x BDD
  • 21.   Symfony2 + BehatBundle でのやり方 Symfony2 x BDD
  • 22. BehatBundleでBDD ● バンドルを作っておく (autoload、AppKernel登録) ● バンドル内でBDD関連初期化 behat:test:bundle --init バンドル名 Symfony2 x BDD
  • 23. BehatBundleでBDD ● Behat:test:bundle --initで、BDD用の初期 ファイルがバンドル内に生成される Symfony2 x BDD
  • 24. BehatBundleでBDD Behatのテストを実行できるようになる (まだシナリオやステップはない) Symfony2 x BDD
  • 25. これだけで BDDの「フィーチャ」などを 書く準備ができました!! Symfony2 x BDD
  • 26. 1チケット ‖ 1機能 Behatの ‖ ルール 1フィーチャ ‖ 1フィーチャファイル ‖ 1Gitブランチ Symfony2 x BDD
  • 27. 1チケット ‖ 1機能 Behatの ‖ ルール 1フィーチャ ‖ 1フィーチャファイル ‖ 複数の 1Gitブランチ シナリオ Symfony2 x BDD
  • 28. 1チケット ‖ 1機能 Behatの ‖ ルール 1フィーチャ ‖ 1フィーチャファイル ‖ 複数の 1Gitブランチ シナリオ Symfony2 x BDD
  • 29. 1チケット ‖ 1機能 Behatの ‖ ルール 1フィーチャ ‖ 1フィーチャファイル ‖ 複数の 1Gitブランチ シナリオ Symfony2 x BDD
  • 30. フィーチャ/シナリオを書く ● バンドルのTests/Featuresディレクトリ 〜.feature ファイルを作成 Symfony2 x BDD
  • 31. フィーチャ/シナリオを書く ● キーワード部分は日本語にもデフォルトで対応 (先頭に language: ja が必要) Symfony2 x BDD
  • 32. フィーチャ/シナリオを書く ● フィーチャの構文 Gherkin http://docs.behat.org/en/gherkin/index.html Cucumber http://cukes.info/ Ryuzee.com [PHP]BehatとSeleniumを組み合わせ受け入れテ ストを自動化する http://www.ryuzee.com/contents/blog/3608 Symfony2 x BDD
  • 33. Behatのテストを実行 フィーチャがテストとして実行されるようになるッ! Symfony2 x BDD
  • 34. ステップは? ● BehatBundleにデフォルトのWeb Stepが組み込 まれている (なので、ステップを記述しなくてもテストが 実行された) Symfony2 x BDD
  • 35. BehatBundle組み込みのstep ● BehatBundle └Resources └features └steps browser_steps.php form_steps.php request_steps.php response_steps.php Symfony2 x BDD
  • 36. browser_steps.php ステップはキーワードメソッドに正規表現パラ メータとして実装されている 以下は「Given I am on 〜」というステップ Symfony2 x BDD
  • 37. ステップを日本語で書くには? ● 書けばいい  →Behatコマンド実行時に雛形 ● 最初から I am on〜の部分を翻訳した日本語ス テップを用意しておくこともOK Symfony2 x BDD
  • 38.   Behatのテストが出来上がった (RED) ↓ 実装 Symfony2 x BDD
  • 39.   実装・ユニットテスト (略) Symfony2のドキュメント参照 Symfony2 x BDD
  • 40. 実装完了 実装できたらBehatのテストを実行(GREEN) Symfony2 x BDD
  • 41. これが1サイクル ● このような流れを繰り返して実装していく Symfony2 x BDD
  • 42.   おまけ Symfony2 x BDD
  • 43. 日本語ステップ ● BehatBundle └Resources └features └steps        └i18n ja.xliff ここに翻訳リソースをおけば、組み込みステッ プを日本語で利用可能 Symfony2 x BDD
  • 44.   まとめ Symfony2 x BDD
  • 45. まとめ Symfony2は、Behatをフレーム ワークに統合するための BehatBundleが提供されるてお り、BDDしたいという人にもオ ススメ Symfony2 x BDD
  • 46.   Symfony2 やろうぜ! Symfony2 x BDD
  • 47.   ありがとうございました Symfony2 x BDD
  • 48. Symfony のステッカーを欲しい方は 懇親会で声かけてください! Symfony2 x BDD