SlideShare a Scribd company logo
1 of 68
Behat+Symfony2ではじめる

     BDD超入門
       2012-08-25
        遠山 晃
自己紹介

遠山 晃

所属: 株式会社システナ

  主にWeb系の開発中心、iOSも少々

  最近はCI導入とかも色々やってます

https://github.com/vexus2
アジェンダ

TDD・BDDとは?

Behatについて

Symfony2について

Behatで振舞駆動
皆さん、テストコード

 書いてますか?
テスト書いてますか?
                     いつも書いてる
                     やり方がわからない
                     面倒なイメージ
        7%

  40%


             53%




                   ※数字はイメージです
そもそも・・・

テストコードってなに?
http://www.phpunit.de/manual/3.6/ja/writing-tests-for-phpunit.html
array_push()メソッドのテスト




http://www.phpunit.de/manual/3.6/ja/writing-tests-for-phpunit.html
配列に対して‘foo’をarray_pushした場合に、

配列の末尾に‘foo’が入っていることの確認
   http://www.phpunit.de/manual/3.6/ja/writing-tests-for-phpunit.html
代表的なテスティングFW
xUnit
  JUnit
  PHPUnit etc
xSpec
  RSpec
  JSSpec
BDDの説明に入る前に
TDDってなに?
T Driven Development(テスト駆動開
 est

発)

テストコードを先に書いて、

Red→Green→リファクタリングを繰り

返す開発手法

テストファーストと良く混同される
BDDってなに?
Beer Drinking Development
Behavior Driven Development(振舞駆動

開発)

TDDの類似開発技法。先に書くテスト

コードでアプリケーションの『振舞』

を記載する。
TDDとBDD

何が違うの?
TDDとの違い
コード品質を高めるという目的は同じ

テスト観点が『アプリケーション寄

り』だけでなく『ユーザ寄り』を含む

かどうかが大きな違い

二面性
本題に入る前に、

ざっくりSymfony2
Symfony2の特徴

PHP5.3以降に対応

フルスタックフレームワーク

Bundle
DIコンテナ
ディレクトリ構成
|-app/
  |-AppKernel.php
                      ←アプリケーションの設定系
  |-config/
  |-logs/
|- bin/
|- src/
  |-Regist/           ←主に開発で使う
     |-RegistBundle
  |-web/
     |-app_dev.php
     |-app.php
|-bundles/
Symfony2の起動イメージ

|-app/
  |-AppKernel.php
|- src/                ② app.phpがカーネルを呼び出す
  |-Regist/
     |-RegistBundle/
  |-web/         ③アプリケーションのバンドルを読み込む
     |-app.php
                       ① リクエスト
Bundleって?

Symfony2のアプリケーションの単位

要は「プラグイン」

基本的には「対話式ジェネレータ」を

使って作成
Bundleの構成
|-src/Mini
   |-BlogBundle
      |-Controller
             |-DefaultController
      |-DependencyInjection
             |-Configuration.php
             |-MiniBlogExtension.php
      |-Resources
             |-config
             |-routing.yml
             |-services.yml
      |-public
      |-doc
      |-views
             |-index.html.twig
   |-Test
Behatもざっくりと
Behatって?
PHP用のBDDフレームワーク

Gherkin
内部的にはSymfony2で作られてる

  Symfony2と親和性が高い

  Symfony系以外のFWでも利用可能
Behatを使うと
テスト自体が日本語で書ける!

 テスト内容がわかりやすい

ドキュメントとして出力させたものを

そのまま設計書にも出来る

 テストコード自身が「動く設計書」
Behat+Symfony2
   環境構築
Behat環境構築
PHPUnitの準備
 Pleiadesを入れていれば3.X系がイン
 ストール済み
 インストールされていなければ…
 $ pear channel-discover pear.phpunit.de
 $ pear channel-discover components.ez.no
 $ pear channel-discover pear.symfony-project.com
 $ pear install phpunit/PHPUnit
Behat環境構築
プロジェクトを準備
 今回はKnpIpsumのパッケージを使用
   http://knplabs.jp/blog/knpipsum


 以下のコマンドでインストール実行
Windowsでやる場合
コマンドプロンプト上で

はUTF-8文字列が表示出

   来ないので
Windowsで環境構築
Behatコマンドを実行するとこうなる
Windowsで環境構築
Behatコマンドを実行するとこうなる




       chcp 65001なんて悪あがきは、

       試すだけ時間の無駄なのでやめよう!
どうすればいい?
今すぐ買いに行く
それでもWindowsでやる

     なら!
Windowsで環境構築
CygwinとTeraTermを入れて、

TeraTerm上からCygwinを起動させる!
Windowsで環境構築
CygwinとTeraTermを入れて、

TeraTerm上からCygwinを起動させる!




              これで十分実用レベル!!
流れ
フィーチャを書く

→Red→Green→リファ

クタリング→フィーチャ

    を書く....
ひたすら繰り返すのみ!!

習うより慣れろな感覚
まずはフィーチャファイ

 ルを書いてみよう
フィーチャファイル
Regist.feature

 # language:ja
 フィーチャ: トップページ表示
  トップページを表示した際のメッセージを表示する。

  シナリオ: Welcomeメッセージの表示
   前提 "/" を表示している
   ならば "ここから初める(予定)" と表示されていること
フィーチャファイル
Regist.feature
                 言語を指定
 # language:ja
 フィーチャ: トップページ表示
  トップページを表示した際のメッセージを表示する。

  シナリオ: Welcomeメッセージの表示
   前提 "/" を表示している
   ならば "ここから初める(予定)" と表示されていること
フィーチャファイル
Regist.feature
                      フィーチャ
 # language:ja
 フィーチャ: トップページ表示
  トップページを表示した際のメッセージを表示する。

  シナリオ: Welcomeメッセージの表示
   前提 "/" を表示している
   ならば "ここから初める(予定)" と表示されていること
フィーチャファイル
Regist.feature

 # language:ja
 フィーチャ: トップページ表示
  トップページを表示した際のメッセージを表示する。
                           [シナリオ]
  シナリオ: Welcomeメッセージの表示 特定の振舞について記載
   前提 "/" を表示している
   ならば "ここから初める(予定)" と表示されていること
フィーチャファイル
Regist.feature

 # language:ja
 フィーチャ: トップページ表示
  トップページを表示した際のメッセージを表示する。

  シナリオ: Welcomeメッセージの表示   [ステップ]
   前提 "/" を表示している          前提条件
   ならば "ここから初める(予定)" と表示されていること
フィーチャファイル
Regist.feature

 # language:ja
 フィーチャ: トップページ表示
  トップページを表示した際のメッセージを表示する。

  シナリオ: Welcomeメッセージの表示    [ステップ]
   前提 "/" を表示している         期待動作を記載
   ならば "ここから初める(予定)" と表示されていること
フィーチャファイル
Regist.feature
                 半角スペースを空ける
 # language:ja
 フィーチャ:○トップページ表示
  トップページを表示した際のメッセージを表示する。

  シナリオ:○ Welcomeメッセージの表示
   前提○"/"○を表示している
   ならば○"ここから初める(予定)"○と表示されていること
実行してみる。
フィーチャ実行


          シナリオ実行
フィーチャ実行




          実行結果
いきなりGreen
なんで?
フィーチャファイル
 シナリオ: つぶやきを投稿する
  もし "/" を表示している
  ならば "ここから初める(予定)" と表示されていること

本来なら指定されたURLにアクセスするためのテスト

コードを書かないと動かないけど、

『特定の記法』に沿って書いた場合に、決められた動

きをしてくれる!!
=組み込みフィーチャ
組み込みフィーチャ


予め定義されている文言どおりに

フィーチャを書くだけで、特定の動作

のテストをしてくれる!
組み込みフィーチャ

『もし “/” を表示している』


ような場合、自動的に指定された

(base_url)URLにアクセスする
組み込みフィーチャ例
前提 /^(?:|ユーザーは )"(?P<page>[^s]+)" を表示している$/
もし /^(?:|ユーザーが )"(?P<page>[^s]+)" へ移動する$/
もし /^(?:|ユーザーが )ページをリロードする$/
もし /^(?:|ユーザーが )"(?P<button>(?:[^"]|")*)" ボタンをクリックする$/
もし /^(?:|ユーザーが )"(?P<link>(?:[^"]|")*)" のリンク先へ移動する$/
もし /^(?:|ユーザーが)次のように入力する:$/
ならば /^(?:|ユーザーが )(?P<page>[^s]+) を表示していること$/
ならば /^(?:|画面に )"(?P<text>(?:[^"]|")*)" と表示されていること$/
ならば /^(?:|画面に )"(?P<text>(?:[^"]|")*)" と表示されていないこと$/
ならば /^レスポンスに "(?P<text>(?:[^"]|")*)" が含まれていないこと$/
ならば /^"(?P<element>[^"]*)" エレメントに "(?P<text>(?:[^"]|")*)" と表示されていること$/
ならば /^最後のレスポンスを表示$/
ならば /^最後のレスポンスをブラウザで表示$/
組み込みフィーチャ例
前提 /^(?:|ユーザーは )"(?P<page>[^s]+)" を表示している$/
もし /^(?:|ユーザーが )"(?P<page>[^s]+)" へ移動する$/
もし /^(?:|ユーザーが )ページをリロードする$/
もし /^(?:|ユーザーが )"(?P<button>(?:[^"]|")*)" ボタンをクリックする$/
もし /^(?:|ユーザーが )"(?P<link>(?:[^"]|")*)" のリンク先へ移動する$/
もし /^(?:|ユーザーが)次のように入力する:$/
ならば /^(?:|ユーザーが )(?P<page>[^s]+) を表示していること$/
ならば /^(?:|画面に )"(?P<text>(?:[^"]|")*)" と表示されていること$/
ならば /^(?:|画面に )"(?P<text>(?:[^"]|")*)" と表示されていないこと$/
ならば /^レスポンスに "(?P<text>(?:[^"]|")*)" が含まれていないこと$/
ならば /^"(?P<element>[^"]*)" エレメントに "(?P<text>(?:[^"]|")*)" と表示されていること$/
ならば /^最後のレスポンスを表示$/
ならば /^最後のレスポンスをブラウザで表示$/
                                                   $ behat -dl
                                                   で確認可能
組み込みフィーチャでカ

バー出来ない範囲は、

自分でステップを定義
フィーチャ実行

          失敗(赤)
フィーチャ実行


          スキップ(青)
フィーチャ実行

          ステップ未定義(黄色)
フィーチャ実行
未定義ステップがある場

合は、実装すべきメソッ

 ドを教えてくれる
フィーチャ実行



      そのままコピペして使える!
実際に

手を動かしてみよう
みなさまの開発ライフの

一助になれば幸いです。
ご清聴

ありがとうございました。

More Related Content

What's hot

8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
Windows で PHP をビルドしてみた
Windows で PHP をビルドしてみたWindows で PHP をビルドしてみた
Windows で PHP をビルドしてみたy-uti
 
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼンゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン光晶 上原
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試したy-uti
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件y-uti
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshopYoichiro Sakurai
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-賢 秋穂
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードy-uti
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くshinjiigarashi
 
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...Kazuhiro Hara
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」Hiroaki NAKADA
 
インフラエンジニア勉強会hbstudyについて
インフラエンジニア勉強会hbstudyについてインフラエンジニア勉強会hbstudyについて
インフラエンジニア勉強会hbstudyについてToshiaki Baba
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い sasezaki
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 

What's hot (20)

8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
Windows で PHP をビルドしてみた
Windows で PHP をビルドしてみたWindows で PHP をビルドしてみた
Windows で PHP をビルドしてみた
 
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼンゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
go-apt-cacher/mirror
go-apt-cacher/mirrorgo-apt-cacher/mirror
go-apt-cacher/mirror
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
 
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
 
インフラエンジニア勉強会hbstudyについて
インフラエンジニア勉強会hbstudyについてインフラエンジニア勉強会hbstudyについて
インフラエンジニア勉強会hbstudyについて
 
2009 PHP初心者
2009 PHP初心者2009 PHP初心者
2009 PHP初心者
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 

Viewers also liked

Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門leverages_event
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
BDD with Behat and Symfony2
BDD with Behat and Symfony2BDD with Behat and Symfony2
BDD with Behat and Symfony2katalisha
 
Codeceptionの受け入れテストをマネる
Codeceptionの受け入れテストをマネるCodeceptionの受け入れテストをマネる
Codeceptionの受け入れテストをマネるinfinite_loop
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界Nozomi Ito
 
いつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYAいつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYAkyon mm
 
サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】
サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】
サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】dreamarts_pr
 
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)真吾 吉田
 
【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD
【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD
【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD満徳 関
 
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~Masahito Zembutsu
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 

Viewers also liked (13)

behatで始めるBDD
behatで始めるBDDbehatで始めるBDD
behatで始めるBDD
 
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
BDD with Behat and Symfony2
BDD with Behat and Symfony2BDD with Behat and Symfony2
BDD with Behat and Symfony2
 
Codeceptionの受け入れテストをマネる
Codeceptionの受け入れテストをマネるCodeceptionの受け入れテストをマネる
Codeceptionの受け入れテストをマネる
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
いつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYAいつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYA
 
nginxの紹介
nginxの紹介nginxの紹介
nginxの紹介
 
サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】
サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】
サーバレスアーキテクチャにしてみた【デブサミ2017 17-E-2】
 
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
 
【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD
【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD
【17-D-3】リーンスタートアップとスマートなエンジニアリングの葛藤 #devsumi #devsumiD
 
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 

Similar to Behat+Symfony2ではじめるBDD超入門

Symfony2 How to create your Bundle
Symfony2 How to create your BundleSymfony2 How to create your Bundle
Symfony2 How to create your Bundlechobi e
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストYoichiro Sakurai
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方Ryo Tomidokoro
 
20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそHiromu Shioya
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワークTakuya Sato
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
退職PDFメーカーの作り方
退職PDFメーカーの作り方退職PDFメーカーの作り方
退職PDFメーカーの作り方Yo Ya
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみたMori Shingo
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14Takako Miyagawa
 
テンプレートエンジンって何?
テンプレートエンジンって何?テンプレートエンジンって何?
テンプレートエンジンって何?Shoichi Takahashi
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiTomohiro Kumagai
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuronekoKohki Nakashima
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
SATySFiでDSLを作る/使うと便利って話
SATySFiでDSLを作る/使うと便利って話SATySFiでDSLを作る/使うと便利って話
SATySFiでDSLを作る/使うと便利って話YuitoMurase1
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 

Similar to Behat+Symfony2ではじめるBDD超入門 (20)

Symfony2 How to create your Bundle
Symfony2 How to create your BundleSymfony2 How to create your Bundle
Symfony2 How to create your Bundle
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
 
20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
退職PDFメーカーの作り方
退職PDFメーカーの作り方退職PDFメーカーの作り方
退職PDFメーカーの作り方
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14
 
テンプレートエンジンって何?
テンプレートエンジンって何?テンプレートエンジンって何?
テンプレートエンジンって何?
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansai
 
PHP With Windows binary
PHP With Windows binaryPHP With Windows binary
PHP With Windows binary
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
SATySFiでDSLを作る/使うと便利って話
SATySFiでDSLを作る/使うと便利って話SATySFiでDSLを作る/使うと便利って話
SATySFiでDSLを作る/使うと便利って話
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 

Behat+Symfony2ではじめるBDD超入門

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n