symfony2 behat-bdd

Post on 28-May-2015

3.123 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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