symfony2 behat-bdd

48
Symfony2 x BDD Symfony2 X BDD 日本Symfonyユーザー会 後藤 秀宣(@hidenorigoto)

Upload: hidenori-goto

Post on 28-May-2015

3.108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Symfony2 behat-bdd

Symfony2 x BDD

Symfony2XBDD

日本Symfonyユーザー会 後藤 秀宣(@hidenorigoto)

Page 2: Symfony2 behat-bdd

Symfony2 x BDD

 

Symfony2なら

Page 3: Symfony2 behat-bdd

Symfony2 x BDD

 

手軽にBDDを始められるッ

Page 4: Symfony2 behat-bdd

Symfony2 x BDD

準備

Page 5: Symfony2 behat-bdd

Symfony2 x BDD

準備するもの

●Symfony2 PR7●Behat●BehatBundle●PHPUnit

Page 6: Symfony2 behat-bdd

Symfony2 x BDD

 更新されたっぽい

Page 7: Symfony2 behat-bdd

Symfony2 x BDD

準備するもの

●Symfony2 PR7 (or PR9)●Behat●BehatBundle●PHPUnit

Page 8: Symfony2 behat-bdd

Symfony2 x BDD

準備するもの

●Symfony2 PR7 (or PR9)●Behat●BehatBundle●PHPUnit Behat の作者が開発

(Symfony2コミッター)

Behatdevelopブランチ

Page 9: Symfony2 behat-bdd

Symfony2 x BDD

参考URL● http://blog.symfony.jp/2011/03/26/337

「Symfony2とBehatでBDD」

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

Page 10: Symfony2 behat-bdd

Symfony2 x BDD

Symfony/Symfony2にはもともと

テストの機能があります

Page 11: Symfony2 behat-bdd

Symfony2 x BDD

Symfony2での位置づけ

 

標準 BDD機能(受入)テスト

Crawlerを使ったテスト(PHPUnit)

Behatによるテスト

ユニットテスト

PHPUnit PHPUnit

Page 12: Symfony2 behat-bdd

Symfony2 x BDD

 

Web開発の流れ

Page 13: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 14: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 15: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 16: Symfony2 behat-bdd

Symfony2 x BDD

 

BDDにすると

Page 17: Symfony2 behat-bdd

Symfony2 x BDD

BDDでのWeb開発の流れ●サイトの機能を考える フィーチャを書く

●機能ごとの入出力を決める●実装する

Page 18: Symfony2 behat-bdd

Symfony2 x BDD

BDDでのWeb開発の流れ●サイトの機能を考える フィーチャを書く

●機能ごとの入出力を決める シナリオを書く

●実装する

Page 19: Symfony2 behat-bdd

Symfony2 x BDD

BDDでのWeb開発の流れ●サイトの機能を考える フィーチャを書く

●機能ごとの入出力を決める シナリオを書く

●実装する 実装+ユニットテスト

Page 20: Symfony2 behat-bdd

Symfony2 x BDD

BDDでのWeb開発の流れ●サイトの機能を考える フィーチャを書く

●機能ごとの入出力を決める シナリオを書く

●実装する 実装+ユニットテスト

ステップを書く

Page 21: Symfony2 behat-bdd

Symfony2 x BDD

 

Symfony2+

BehatBundleでのやり方

Page 22: Symfony2 behat-bdd

Symfony2 x BDD

BehatBundleでBDD● バンドルを作っておく(autoload、AppKernel登録)

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

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

Page 23: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 24: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 25: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 26: Symfony2 behat-bdd

Symfony2 x BDD

1チケット

‖1機能‖

1フィーチャ‖

1フィーチャファイル‖

1Gitブランチ

Behatのルール

Page 27: Symfony2 behat-bdd

Symfony2 x BDD

1チケット

‖1機能‖

1フィーチャ‖

1フィーチャファイル‖

1Gitブランチ

Behatのルール

複数のシナリオ

Page 28: Symfony2 behat-bdd

Symfony2 x BDD

1チケット

‖1機能‖

1フィーチャ‖

1フィーチャファイル‖

1Gitブランチ

Behatのルール

複数のシナリオ

Page 29: Symfony2 behat-bdd

Symfony2 x BDD

1チケット

‖1機能‖

1フィーチャ‖

1フィーチャファイル‖

1Gitブランチ

Behatのルール

複数のシナリオ

Page 30: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 31: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 32: Symfony2 behat-bdd

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

Page 33: Symfony2 behat-bdd

Symfony2 x BDD

Behatのテストを実行フィーチャがテストとして実行されるようになるッ!

Page 34: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 35: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 36: Symfony2 behat-bdd

Symfony2 x BDD

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

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

Page 37: Symfony2 behat-bdd

Symfony2 x BDD

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

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

Page 38: Symfony2 behat-bdd

Symfony2 x BDD

 

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

↓実装

Page 39: Symfony2 behat-bdd

Symfony2 x BDD

 実装・ユニットテスト

(略)

Symfony2のドキュメント参照

Page 40: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 41: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 42: Symfony2 behat-bdd

Symfony2 x BDD

 

おまけ

Page 43: Symfony2 behat-bdd

Symfony2 x BDD

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

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

Page 44: Symfony2 behat-bdd

Symfony2 x BDD

 

まとめ

Page 45: Symfony2 behat-bdd

Symfony2 x BDD

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

Page 46: Symfony2 behat-bdd

Symfony2 x BDD

 

Symfony2やろうぜ!

Page 47: Symfony2 behat-bdd

Symfony2 x BDD

 

ありがとうございました

Page 48: Symfony2 behat-bdd

Symfony2 x BDD

Symfonyのステッカーを欲しい方は

懇親会で声かけてください!