SlideShare a Scribd company logo
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

More Related Content

PDF
20apr2012 kernelvm7-main
PDF
MMIO on VT-x
PPTX
Swiftからlibuvを呼び出すTIPS
PDF
130831 fpgax3 yos
PPTX
Git svnではじめる忍者のごとく潜むgit
PDF
Symfony2 Behat/BDD (#Symfony2study 4)
PDF
Symfony2 intro-20111204
PDF
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
20apr2012 kernelvm7-main
MMIO on VT-x
Swiftからlibuvを呼び出すTIPS
130831 fpgax3 yos
Git svnではじめる忍者のごとく潜むgit
Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 intro-20111204
Symfony2 チュートリアル イントロダクション osc 2011 nagoya

Similar to Symfony2 behat-bdd (6)

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

More from Hidenori Goto (20)

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

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