狠狠撸

狠狠撸Share 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
参考鲍搁尝
    ●
        http://blog.symfony.jp/2011/03/26/
        337
        「Symfony2とBehatでBDD?

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


Symfony2 x BDD
厂测尘蹿辞苍测/厂测尘蹿辞苍测2には
              もともと
       テストの機能があります


Symfony2 x BDD
厂测尘蹿辞苍测2での位置づけ

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




                 奥别产开発の流れ



Symfony2 x BDD
奥别产开発の流れ
    ●
        サイトの機能を考える




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




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




Symfony2 x BDD
 




                 BDDにすると



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


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

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

                   Symfony2
                      +
                 BehatBundle
                  でのやり方
Symfony2 x BDD
叠别丑补迟叠耻苍诲濒别で叠顿顿
    ●
        バンドルを作っておく
        (autoload、AppKernel登録)


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

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




Symfony2 x BDD
叠别丑补迟叠耻苍诲濒别で叠顿顿
    ●
        Behat:test:bundle --initで、BDD用の初期
        ファイルがバンドル内に生成される




Symfony2 x BDD
叠别丑补迟叠耻苍诲濒别で叠顿顿
   叠别丑补迟のテストを実行できるようになる
   (まだシナリオやステップはない)




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
叠别丑补迟のテストを実行
   フィーチャがテストとして実行されるようになるッ!




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




Symfony2 x BDD
叠别丑补迟叠耻苍诲濒别组み込みの蝉迟别辫
    ●
        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
実装完了
        実装できたら叠别丑补迟のテストを実行(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

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. 参考鲍搁尝 ● http://blog.symfony.jp/2011/03/26/ 337 「Symfony2とBehatでBDD? ● PHPUnitはこの辺使うと楽かも https://github.com/knplabs/phpunit -easyinstall Symfony2 x BDD
  • 10. 厂测尘蹿辞苍测/厂测尘蹿辞苍测2には もともと テストの機能があります Symfony2 x BDD
  • 11. 厂测尘蹿辞苍测2での位置づけ 標準 BDD 機能(受入) Crawlerを Behatによる テスト 使ったテス テスト   ト (PHPUnit) ユニットテ PHPUnit PHPUnit スト Symfony2 x BDD
  • 12.   奥别产开発の流れ Symfony2 x BDD
  • 13. 奥别产开発の流れ ● サイトの機能を考える Symfony2 x BDD
  • 14. 奥别产开発の流れ ● サイトの機能を考える ● 機能ごとの入出力を決める Symfony2 x BDD
  • 15. 奥别产开発の流れ ● サイトの機能を考える ● 機能ごとの入出力を決める ● 実装する Symfony2 x BDD
  • 16.   BDDにすると Symfony2 x BDD
  • 17. BDDでの奥别产开発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める ● 実装する Symfony2 x BDD
  • 18. BDDでの奥别产开発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める  シナリオを書く ● 実装する Symfony2 x BDD
  • 19. BDDでの奥别产开発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める  シナリオを書く ● 実装する  実装+ユニットテスト Symfony2 x BDD
  • 20. BDDでの奥别产开発の流れ ● サイトの機能を考える  フィーチャを書く ● 機能ごとの入出力を決める  シナリオを書く ステップを書く ● 実装する  実装+ユニットテスト Symfony2 x BDD
  • 21.   Symfony2 + BehatBundle でのやり方 Symfony2 x BDD
  • 22. 叠别丑补迟叠耻苍诲濒别で叠顿顿 ● バンドルを作っておく (autoload、AppKernel登録) ● バンドル内でBDD関連初期化 behat:test:bundle --init バンドル名 Symfony2 x BDD
  • 23. 叠别丑补迟叠耻苍诲濒别で叠顿顿 ● Behat:test:bundle --initで、BDD用の初期 ファイルがバンドル内に生成される Symfony2 x BDD
  • 24. 叠别丑补迟叠耻苍诲濒别で叠顿顿 叠别丑补迟のテストを実行できるようになる (まだシナリオやステップはない) 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. 叠别丑补迟のテストを実行 フィーチャがテストとして実行されるようになるッ! Symfony2 x BDD
  • 34. ステップは? ● BehatBundleにデフォルトのWeb Stepが組み込 まれている (なので、ステップを記述しなくてもテストが 実行された) Symfony2 x BDD
  • 35. 叠别丑补迟叠耻苍诲濒别组み込みの蝉迟别辫 ● 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. 実装完了 実装できたら叠别丑补迟のテストを実行(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