Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Symfony2                                   X                                  BDD                 日本Symfonyユーザー会 後藤 秀宣(@hi...
            Symfony2ならSymfony2 x BDD
              手軽にBDDを             始められるッSymfony2 x BDD
準備Symfony2 x BDD
準備するもの    ●        Symfony2 PR7    ●        Behat    ●        BehatBundle    ●        PHPUnitSymfony2 x BDD
    更新されたっぽいSymfony2 x BDD
準備するもの    ●        Symfony2 PR7 (or PR9)    ●        Behat    ●        BehatBundle    ●        PHPUnitSymfony2 x BDD
準備するもの    ●        Symfony2 PR7 (or PR9)    ●        Behat                 Behat                         developブランチ    ● ...
参考URL    ●        http://blog.symfony.jp/2011/03/26/        337        「Symfony2とBehatでBDD」    ●        PHPUnitはこの辺使うと楽かも ...
Symfony/Symfony2には              もともと       テストの機能がありますSymfony2 x BDD
Symfony2での位置づけ                 標準   BDD    機能(受入) Crawlerを Behatによる    テスト    使ったテス テスト                            ト      ...
                  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でのWeb開発の流れ    ●        サイトの機能を考える         フィーチャを書く    ●        機能ごとの入出力を決める         シナリオを書く    ●        実装する         実装...
BDDでのWeb開発の流れ    ●        サイトの機能を考える         フィーチャを書く    ●        機能ごとの入出力を決める         シナリオを書く                 ステップを書く    ...
                    Symfony2                      +                 BehatBundle                  でのやり方Symfony2 x BDD
BehatBundleでBDD    ●        バンドルを作っておく        (autoload、AppKernel登録)    ●        バンドル内でBDD関連初期化        behat:test:bundle -...
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チケット                       ‖                      1機能     Behatの                       ‖       ルール                    1フィ...
1チケット                       ‖                      1機能     Behatの                       ‖       ルール                    1フィ...
1チケット                       ‖                      1機能     Behatの                       ‖       ルール                    1フィ...
フィーチャ/シナリオを書く    ●        バンドルのTests/Featuresディレクトリ        〜.feature ファイルを作成Symfony2 x BDD
フィーチャ/シナリオを書く    ●        キーワード部分は日本語にもデフォルトで対応        (先頭に language: ja が必要)Symfony2 x BDD
フィーチャ/シナリオを書く    ●        フィーチャの構文        Gherkin        http://docs.behat.org/en/gherkin/index.html        Cucumber      ...
Behatのテストを実行   フィーチャがテストとして実行されるようになるッ!Symfony2 x BDD
ステップは?    ●        BehatBundleにデフォルトのWeb Stepが組み込        まれている        (なので、ステップを記述しなくてもテストが        実行された)Symfony2 x BDD
BehatBundle組み込みのstep    ●        BehatBundle          └Resources              └features                  └steps           ...
browser_steps.php   ステップはキーワードメソッドに正規表現パラ   メータとして実装されている   以下は「Given I am on 〜」というステップSymfony2 x BDD
ステップを日本語で書くには?    ●        書けばいい         →Behatコマンド実行時に雛形    ●        最初から I am on〜の部分を翻訳した日本語ス        テップを用意しておくこともOKSymf...
        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    ...
                  まとめSymfony2 x BDD
まとめ    Symfony2は、Behatをフレーム   ワークに統合するための   BehatBundleが提供されるてお   り、BDDしたいという人にもオ   ススメSymfony2 x BDD
                   Symfony2                 やろうぜ!Symfony2 x BDD
            ありがとうございましたSymfony2 x BDD
Symfony        のステッカーを欲しい方は       懇親会で声かけてください!Symfony2 x BDD
Upcoming SlideShare
Loading in …5
×

Symfony2 behat-bdd

3,727 views

Published on

  • Be the first to comment

Symfony2 behat-bdd

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

×