SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Cucumber
Cucumberの概要
•   Cucumberの構成

    •   フィーチャ

    •   cucumberコマンド

    •   ステップ定義

•   実行の順序

    •   cucumberコマンドの実行
        →各シナリオのステップを解析し、ステップ定義にマッピング
        →対応するステップ定義が見つかったら、ステップ定義が処理を行う
フィーチャを構成する要素


• タイトル


• ナラティブ


• シナリオ
フィーチャを構成する要素


• タイトル


• ナラティブ


• シナリオ
Feature: 在庫管理者が在庫品目を追加する

Feature: 暗号解読者が推測を送信する

Feature: 新規に会員登録する
フィーチャを構成する要素


• タイトル


• ナラティブ


• シナリオ
•   ナラティブ

    •   物語

    •   Gherkinキーワードで始まる行が含まれてはならない

•   Connextraフォーマットで記述する(従わないといけない訳ではない)

    •   英語
        As a <role>
        I want <feature>
        So that <business value>

    •   日本語
        <だれだれ>が
        <なになに>したい
        なぜなら<こういうことをしたい>からだ
フィーチャを構成する要素


• タイトル


• ナラティブ


• シナリオ
Gherkinキーワード

• Feature              • Given

• Background           • When

• Scenario             • Then

• Scenario   Outline   • And

• Scenarios            • But

• Examples             •|   |、” ”、#
$ cucumber --i18n ja
    | feature      | "フィーチャ", "機能"                                       |
   | background        | "背景"                                |
   | scenario        | "シナリオ"                                    |
   | scenario_outline | "シナリオアウトライン", "シナリオテンプレート", "テンプレ", "シナリオテンプレ" |
   | examples         | "例", "サンプル"                                  |
   | given          | "* ", "前提"                 |
   | when            | "* ", "もし"                    |
   | then           | "* ", "ならば"                        |
   | and            | "* ", "かつ"                 |
   | but            | "* ", "しかし", "但し", "ただし"                               |
   | given (code)     | "前提"                             |
   | when (code)       | "もし"                                |
   | then (code)      | "ならば"                                    |
   | and (code)       | "かつ"                             |
   | but (code)       | "しかし", "但し", "ただし"                                       |
シナリオの書き方

Feature: Traveler books room
 ln order to reduce staff
 As a hotel owner
 l want travelers to book rooms on the web

 Scenario: Successful booking

 Scenario: Hotel is full

 Scenario: visitor forgets to enter email
シナリオの書き方
# language:en
Feature: Traveler books room
 ln order to reduce staff
 As a hotel owner
 l want travelers to book rooms on the web

 Scenario: Successful booking
  Given a hotel with “5” rooms and “0” bookings
$ cucumber
# language:en
Feature: Traveler books room
 ln order to reduce staff
 As a hotel owner
 l want travelers to book rooms on the web

 Scenario: Successful booking                      # features/book_room.feature:7
  Given a hotel with “5” rooms and “0” bookings # features/book_room.feature:8
1 scenario (1 undifined)
1 step (1 undefined)
0m0.001s


You can implement step definitions for undefined steps with these snippets:


Given /^a hotel with “([^”])” rooms and “([^”])” bookings$/ do |arg1, arg2|
 pending # express the regexp above with the code you wish you had
end
$ cucumber features/book_room.feature:7
   指定した行のシナリオのみ実行
Given、When、Then
•   Given

    •   シナリオにおいて事実として受け入れるもの

    •   事前条件ではない(満たさなくても先に進める)

    •   例:

        •   預金口座の残高が20ドルであるとすれば

        •   今日が休日であるとすれば
Given、When、Then
•   When

    •   シナリオにおけるイベントを示す

    •   どのシナリオでもイベントは1つであるのが理想

    •   例:

        •   15ドルを引き出した

        •   部屋の掃除をした
Given、When、Then

• Then

 • 期待される結果を示す


 • 例:


   • 残高は5ドルである
シナリオの記述の仕方
•   宣言型

    •   シナリオごとにカスタマイズされる傾向

    •   開発者がビジネス開発やテストする場合に向く

•   命令型

    •   少ないステップ定義でより多くのシナリオが書ける

    •   テキストシナリオを扱えるビジネスアナリストがいる場合に向く

•   同じプロジェクト内で命令形のシナリオと宣言型のシナリオの
    バランスを保つのが重要
    →最初のテストは命令形、確認済の事と同じような事をする場合は宣言型 等
命令型のシナリオ
Scenario: transfer money (imperative)
 Given I have $100 in Checking
 And I have $20 in savings
 When I go to the transfer form
 And I select "Checking" from "Source Account"
 And I select "Savings" from "Target Account"
 And I fill in "Amount" with "15"
 And I press "Execute Transfer"
 Then I should see that l have $85 in checking
 And I should see that l have $35 in savings
宣言型のシナリオ

Scenario: transfer money (declarative)
 Given I have $100 in checking
 And I have $20 in savings
 When I transfer $15 from checking to savings
 Then I should have $85 in checking
 And I should have $35 in savings
フィーチャの構成
features         $ cucumber features
  insurance      $ cucumber features/insurance
    medical      $ cucumber features/insurance/medical
    dental       $ cucumber features/insurance/ dental
    life         $ cucumber features/insurance/ life
    disability   $ cucumber features/insurance/ disability
  pto            $ cucumber features/pto
    accrual      $ cucumber features/pto/accrual
    usage        $ cucumber features/pto/usage
タグ

• タグのつけ方

@approved @iteration_12
Feature: patient requests appointment

 @wip
 Scenario: patient selects available time

• 実行方法

$ cucumber --tags @wip
複雑なタグ式
$ cucumber --tags @foo,@bar
→@foo || @var

$ cucumber --tags @foo --tags @bar
→@foo && @var

$ cucumber --tags ~@dev
→!@dev

$ cucumber --tags @foo,~@bar --tags @baz
→(@foo || !@var) && @baz
タグ式のその他の用途

•   特定の環境のみで実行されるシナリオ

•   ワークフローとビジネスルールなど、さまざまな種類の
    テストを表すシナリオを示す

•   高速に実行されるシナリオだけを実行する

•   フィーチャセットまたはテーマに関連するシナリオを実
    行する
Cucumberの詳細
ステップ定義


• 定義されていないStepを含むfeatureを実行すると、

cucumberはStep Definifionのひな形を出力してくれる。

• 正規表現を通してステップに引数を渡す場合は、

すべてStringとして渡される。
Worldオブジェクト

• 全てのシナリオはWorldオブジェクトのコンテキストで

実行される

• WorldオブジェクトはデフォルトではObjectクラスのイ

ンスタンス
(Object以外のインスタンスにする方法は後述)
ヘルパーメソッド
module MyHelper
 def some_helper
  ・・・
 end
end

World(MyHelper)
WorldをObject以外にする
          class MyWorld
            def some_helper
             ・・・
           end
          end

          World do
           MyWorld.new
          end

• cucumber-railsは、WorldをActionController::IntegrationTest

 のインスタンスとして設定している
ステップ定義から
   ステップ定義を呼び出す
When I select checking as the source account
And I select savings as the target account
And I set $20.00 as the amount
And I click transfer



When I transfer $20.00 from checking to savings
When /I transfer (.*) from (.*) to (,*)/ do |amount, source, target|
 When "I select #{source} as the source account"
 When "I select #{target} as the target account"
 When "I set #{amount} as the amount"
 When "I click transfer"
end

When /I transfer (.*) from (.*) to (.*)/ do |amount, source, target|
 steps %Q{
   When I select #{source} as the source account
   And I select #{target} as the target account
   And I set #{amount} as the amount
   And I click transfer
 }
end
• ステップ定義からステップ定義を呼び出すとDRYには

なるが、間接化が1段増える

• 階層が増えると、失敗の原因を特定しづらくなる


• ステップ定義ごとに異なる抽象化


• feature→ステップ


• feature→ステップ→ステップ→ステップ


• 結局は読みやすさと保守性のバランスを見てどうする

か決めるしかない
フック
•   featuresディレクトリの下にあるRubyファイルで設定できる
    features/support/hooks.rbに書くのがおすすめ?

•   フックはいくつあってもよい

•   Cucumberのフックは3種類

    •   Before

        •   すべてのシナリオの前に実行される

    •   After

        •   すべてのシナリオの後に実行される

    •   AfterStep

        •   すべてのステップの後に実行される
タグ付きフック

Before("@foo") do
 puts "This will run before each scenario tagged with @foo"
end



Before("@foo,~@bar", "@zap") do
 puts "This will run before each scenario tagged with @foo or not @bar AND @zap"
end
バックグラウンド

•   フックはRubyファイルに書くため、技術者以外の人にはイミフ

•   featureファイルにBeforeフックのようなものを明示したい場合
    はバックグラウンドを用いる

•   バックグラウンドは与えられたfeature内の全てのシナリオの前
    に実行される

•   Beforeフックはバックグラウンドより前に実行される
Feature: Invite friends
 Background: Logged in
  Given I am logged in as "Aslak"
  And the following people exist:
    | name | friend? |
    | David | yes |
    | Vidkun | no      |

 Scenario: Invite someone who is alreadv a friend

 Scenario: Invite someone who is not a friend

 Scenario: Invite someone who doesn't have an account
マルチラインテキスト
Scenario: pending implementation
 Given a file named "example_without_block_spec.rb" with:
  """
  describe "an example" do
    it "is a pending example" end
  """
 When I run "rspec example_without_block_spec.rb"
 Then the exit code should be 0
 And the output should contain "1 example, 0 failures, 1 pending"
 And the output should contain "Not Yet Implemented"
 And the output should contain "example_without_block_spec.rb:2"
複数行のテキストは正規表現でキャプチャする必要はない。
正規表現に含まれなかった文字列はブロックの最後の引数に入る。


Given /a file named "([^"]*)" with:/ do |filename, text|
 # ...
end

Then /the stdout should include/ do |text|
 # ...
end
ステップ内のテーブル

• cucumberは行の最初に   "|" を見つけたときにパースし
 て、Cucumber::Ast::Tableオブジェクトにする

• ステップ内でCucumber::Ast::Tableオブジェクトを用いる

 場合は、Cucumber::Ast::Table#hashesを使う

• CucumberはCucumber::Ast::Tableをステップ定義中の最後

 のブロック引数として渡す
シナリオアウトライン

• Scenariosキーワードで、Scenario   Outlineに流し込むデー
 タをテーブルで定義できる

• ScenariosのエイリアスとしてExamplesキーワードもある


• 複数行のテキストや、テーブルの値にもscenario          outline
 は使える
Scenario Outline:
 submit guess Given the secret code is "<code>"
 When I guess "<guess>"
 Then the mark should be "<mark>"
Scenarios: all numbers correct
 | code | guess | mark |
 | 1234 | 1234 | ++++ |
 | 1234 | 1243 | ++-- |
 | 1234 | 1423 | +--- |
 | 1234 | 4321 | ---- |
Scenario Outline:
  Given a discount of <discount> When I order the
following book:
    | title	

| price	

 |
    | Healthy eating for programmers | <price> |
 Then the statement should read:
    """
    Statement for David
    Total due:	

 <total>
    """
Scenarios:
  | discount | price | total |
  | 10%	

 | $29.99 | $26.99 |
  | 15%	

 | $29.99 | $25.49 |
プロファイル


• cucumberのオプションをあらかじめ書いておくための

ファイル

• cucumber.yml

• config/cucumber.yml
wip: --tags @wip features


$ cucumber -p wip

$ cucumber --tags @wip features

Weitere ähnliche Inhalte

Was ist angesagt?

モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015OpenID Foundation Japan
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現Hitachi, Ltd. OSS Solution Center.
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させようYuki Hattori
 
Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Mineo Matsuya
 
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチYusuke Suzuki
 
Spring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるSpring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるapkiban
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyKazuhito Miura
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) Hironobu Isoda
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春VerMasahito Zembutsu
 
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよMasakazu Ikeda
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 

Was ist angesagt? (20)

モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
Proxy War
Proxy WarProxy War
Proxy War
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう
 
Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~
 
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
 
Spring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるSpring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わる
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 

Ähnlich wie BDD勉強会 第6回

JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiTomohiro Kumagai
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうHishikawa Takuro
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようKoichi Sasada
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会zakihaya
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareerKyosuke MOROHASHI
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているpocketberserker
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3Masahiro Wakame
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)icchy
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonmasahitojp
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かきNishida Kansuke
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話Masahito Zembutsu
 
Enumはデキる子 ~ case .Success(let value): ~
 Enumはデキる子 ~ case .Success(let value): ~ Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~Takaaki Tanaka
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 

Ähnlich wie BDD勉強会 第6回 (20)

Haikara
HaikaraHaikara
Haikara
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareer
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
 
Enumはデキる子 ~ case .Success(let value): ~
 Enumはデキる子 ~ case .Success(let value): ~ Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 

BDD勉強会 第6回

Hinweis der Redaktion

  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