symfony2 behat-bdd
Post on 28-May-2015
3.123 Views
Preview:
TRANSCRIPT
Symfony2 x BDD
Symfony2XBDD
日本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●BehatBundle●PHPUnit Behat の作者が開発
(Symfony2コミッター)
Behatdevelopブランチ
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を使ったテスト(PHPUnit)
Behatによるテスト
ユニットテスト
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でBDDBehatのテストを実行できるようになる(まだシナリオやステップはない)
Symfony2 x BDD
これだけでBDDの「フィーチャ」などを書く準備ができました!!
Symfony2 x BDD
1チケット
‖1機能‖
1フィーチャ‖
1フィーチャファイル‖
1Gitブランチ
Behatのルール
Symfony2 x BDD
1チケット
‖1機能‖
1フィーチャ‖
1フィーチャファイル‖
1Gitブランチ
Behatのルール
複数のシナリオ
Symfony2 x BDD
1チケット
‖1機能‖
1フィーチャ‖
1フィーチャファイル‖
1Gitブランチ
Behatのルール
複数のシナリオ
Symfony2 x BDD
1チケット
‖1機能‖
1フィーチャ‖
1フィーチャファイル‖
1Gitブランチ
Behatのルール
複数のシナリオ
Symfony2 x BDD
フィーチャ/シナリオを書く● バンドルのTests/Featuresディレクトリ〜.feature ファイルを作成
Symfony2 x BDD
フィーチャ/シナリオを書く● キーワード部分は日本語にもデフォルトで対応(先頭に language: ja が必要)
Symfony2 x BDD
フィーチャ/シナリオを書く● フィーチャの構文Gherkin http://docs.behat.org/en/gherkin/index.html
Cucumberhttp://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のステッカーを欲しい方は
懇親会で声かけてください!
top related