Cucumber #TechLunch

Cucumber #TechLunch

2012/05/16(水) @ Livesense TechLunch
発表者:塩足 拓也

E60aa4f80303f3f386898546ddb3686a?s=128

Livesense Inc.

April 23, 2014
Tweet

Transcript

  1. Cucumber Takuya Shiotari

  2. 前回の復習(BDDとは) ▪ TDDの派生 ▪ 振る舞い(要求仕様)を自然言語で併記しなが らテストコードを記述 ▪ テスト≒要求仕様 ▪ BDDフレームワーク

    ◦ ストーリーフレームワーク(Cucumber) <- 今回はコレ ◦ スペックフレームワーク(RSpec)
  3. Cucumberとは ▪ 受け入れテストのテスティングフレームワーク ▪ 自然言語に近い => 非エンジニアでも読み書き 可能 ▪ RSpecだけではモヤモヤしている部分の解消

    ▪ RSpecは内部仕様をテストするのに対して、 Cucumberは外部仕様をテストする
  4. RSpecとCucumber RSpec red 2 red red green refacto r 3

    1 4 5 green refacto r 6 7 Cucumber ① 1つのシナリオに焦点を合わせる ② 失敗するステップ定義を書く (Cucumberで始める) ③ 失敗するサンプルを書く ④ サンプルを成功させる ⑤ リファクタリング (RSpecに進む) (ステップが成功したら) ⑦ リファクタリング 6
  5. Cucumberのファイル構成 ▪ フィーチャファイル(Gherkin) ◦ タイトル ◦ 自由形式のナラティブ ◦ 任意の数のシナリオ •

    任意の数のステップ ▪ ステップ定義ファイル(システム言語) ◦ Given(前提) ◦ When(もし) ◦ Then(ならば) ◦ And(かつ)
  6. フィーチャファイル # language: ja フィーチャ: 加算 バカな間違いを避けるために 数学オンチとして 2つの数の合計を知りたい シナリオ:

    2つの数の加算について 前提 "1" を入力 かつ "2" を入力 もし add を押した ならば "3" を表示 タイトル ナラティブ シナリオ ステップ
  7. ステップ定義ファイル # -*- coding: UTF-8 -*- Before do @calc =

    Calculator.new end 前提 "$n を入力" do |n| @calc.push n.to_i end もし /addを押した/ do @result = @calc.add end ならば /(.*) を表示/ do |result| @result.should == result.to_f end
  8. メリット ▪ セッションやフォーム周りは必須 ▪ 単体テストの穴が分かる=>もやもやが解消さ れる ▪ テストと自然言語の仕様がセットで記述できる

  9. 課題 ▪ RSpecでは単体テストしか書かないので、全ア クションのテストした方がよいのか? ▪ Javascriptのテストはどうするか? ▪ 別ドメインへリダイレクトする場合に、selenium が必要だけど、seleniumはテストが遅くなるの で、別のアプローチが欲しい

  10. 次回テーマ gerrit

  11. Cucumberの位置づけ RSpec red 2 red red green refacto r 3

    1 4 5 green refacto r 6 7 Cucumber ① 1つのシナリオに焦点を合わせる ② 失敗するステップ定義を書く (Cucumberで始める) ③ 失敗するサンプルを書く ④ サンプルを成功させる ⑤ リファクタリング (RSpecに進む) (ステップが成功したら) ⑦ リファクタリング 6