SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
今更はじめる
Cucumber
Tomohiro NISHIMURA
自己紹介

西村 友裕 (Sixeight)

大学院へ進学しました

シリコンバレーに行ってきました

緊張しています
Cucumberはプレーンテキストで書か

れた機能テストを実行するツールです
Cucumberはプレーンテキストで書か

れた機能テストを実行するツールです
フィーチャ: 除算
 バカな間違いを避けるために
 有理数も計算できること


 シナリオ: ふつうの数値
  前提 3 を入力
  かつ 2 を入力
  もし divide を押した
  ならば 1.5 を表示
フィーチャ: 除算
 バカな間違いを避けるために
 有理数も計算できること


 シナリオ: ふつうの数値
  前提 3 を入力
  かつ 2 を入力
  もし divide を押した
  ならば 1.5 を表示
実演
どうやってるの?
feature = プレーンテキストで書か
れたテストコード

step = Rubyで書かれたスクリプト

   features
   ¦-- addition.feature
   ¦-- division.feature
   `-- step_definitons
       `-- calculator_steps.rb
# -*- encoding: utf-8 -*-

require 'spec/expectations'
require 'cucumber/formatter/unicode'

$:.unshift(File.dirname(__FILE__) + '/../../lib')
require 'calculator'

Before do
  @calc = Calculator.new
end

After do
end

Given "$n を入力" do |n|
  @calc.push n.to_i
end

When /(w+) を押した/ do |op|
  @result = @calc.send op
end

Then /(.*) を表示/ do |result|
  @result.should == result.to_f
end
step

     Before do
       @calc = Calculator.new
     end

     After do
     end                                            feature
     Given "$n を入力" do |n|             フィーチャ: 除算
前                                       バカな間違いを避けるために
       @calc.push n.to_i
提    end                                有理数も計算できること


も    When /(w+) を押した/ do |op|          シナリオ: ふつうの数値
       @result = @calc.send op
し    end
                                         前提 3 を入力
                                         かつ 2 を入力
な    Then /(.*) を表示/ do |result|         もし divide を押した
ら      @result.should == result.to_f     ならば 1.5 を表示
ば    end
+ Webrat
Cucumber + Webrat
Cucumber + Webrat
アンカーテキストでリンクを辿れる
➡ 新規エントリ をクリックする
ラベルで指定できる
➡ タイトル に 今カナダにいます と入力する
➡ 本文 に スタンフォードに行くぞ と入力する
ボタンを押せる
➡ 作成 を押す
情報源




http://wiki.github.com/aslakhellesoy/cucumber
まとめ

プレーンテキストなテストが実行できる

裏方のStepが重要(使い回せる)

Webratとの組み合わせが良い感じ

外堀から埋めて行く(outside-in)
ごちそうさまでした
ありがとうございました
おまけ
フィーチャ: 加算
 バカな間違いを避けるために
 数学オンチとして
 2つの数の合計を知りたい


 シナリオテンプレート: 2つの数の加算について
  前提 <値1> を入力
  かつ <値2> を入力
  もし <ボタン> を押した
  ならば <結果> を表示


 例:
  | 値1 | 値2 | ボタン       | 結果 |
  | 20   | 30   | add   | 50   |
  | 2    | 5    | add   | 7    |
  | 0    | 40   | add   | 40   |
フィーチャ: 加算
 バカな間違いを避けるために
 数学オンチとして
 2つの数の合計を知りたい


 シナリオテンプレート: 2つの数の加算について
  前提 <値1> を入力
  かつ <値2> を入力
  もし <ボタン> を押した
  ならば <結果> を表示


 例:
  | 値1 | 値2 | ボタン       | 結果 |
  | 20   | 30   | add   | 50   |
  | 2    | 5    | add   | 7    |
  | 0    | 40   | add   | 40   |

Contenu connexe

Similaire à 今更はじめるCucumber

プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードShigenori Sagawa
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„和弘 井之上
 
20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITO20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITOAkihiro ITO
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitYasuhiko Yamamoto
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和schoowebcampus
 
ji-5. 繰り返し計算
ji-5. 繰り返し計算ji-5. 繰り返し計算
ji-5. 繰り返し計算kunihikokaneko1
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料Toshio Ehara
 

Similaire à 今更はじめるCucumber (13)

Lt会01_uetch
Lt会01_uetchLt会01_uetch
Lt会01_uetch
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
Tokyo r33 beginner
Tokyo r33 beginnerTokyo r33 beginner
Tokyo r33 beginner
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
 
講座C入門
講座C入門講座C入門
講座C入門
 
20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITO20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITO
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
 
ji-5. 繰り返し計算
ji-5. 繰り返し計算ji-5. 繰り返し計算
ji-5. 繰り返し計算
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
 
Python入門
Python入門Python入門
Python入門
 

Plus de Tomohiro Nishimura

逃げ道をなくすということについて、僕の持っている知見を話します。
逃げ道をなくすということについて、僕の持っている知見を話します。逃げ道をなくすということについて、僕の持っている知見を話します。
逃げ道をなくすということについて、僕の持っている知見を話します。Tomohiro Nishimura
 
シュッとふりかえる Ruby 2.0 以降
シュッとふりかえる Ruby 2.0 以降シュッとふりかえる Ruby 2.0 以降
シュッとふりかえる Ruby 2.0 以降Tomohiro Nishimura
 
DSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることDSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることTomohiro Nishimura
 
Rubyist のための HTML5 入門 -Content Models-
Rubyist のための HTML5 入門 -Content Models-Rubyist のための HTML5 入門 -Content Models-
Rubyist のための HTML5 入門 -Content Models-Tomohiro Nishimura
 
NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法Tomohiro Nishimura
 
It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.Tomohiro Nishimura
 

Plus de Tomohiro Nishimura (20)

逃げ道をなくすということについて、僕の持っている知見を話します。
逃げ道をなくすということについて、僕の持っている知見を話します。逃げ道をなくすということについて、僕の持っている知見を話します。
逃げ道をなくすということについて、僕の持っている知見を話します。
 
シュッとふりかえる Ruby 2.0 以降
シュッとふりかえる Ruby 2.0 以降シュッとふりかえる Ruby 2.0 以降
シュッとふりかえる Ruby 2.0 以降
 
DSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることDSLについて語るときに僕の語ること
DSLについて語るときに僕の語ること
 
Atom ことはじめ
Atom ことはじめAtom ことはじめ
Atom ことはじめ
 
The way to the Kyoto.rb
The way to the Kyoto.rbThe way to the Kyoto.rb
The way to the Kyoto.rb
 
Kyotorb#4
Kyotorb#4Kyotorb#4
Kyotorb#4
 
Kyotorb#3
Kyotorb#3Kyotorb#3
Kyotorb#3
 
Kyotorb Meetup #2
Kyotorb Meetup #2Kyotorb Meetup #2
Kyotorb Meetup #2
 
Kyoto.rb
Kyoto.rbKyoto.rb
Kyoto.rb
 
2010年ふりかえる
2010年ふりかえる2010年ふりかえる
2010年ふりかえる
 
Rubyist のための HTML5 入門 -Content Models-
Rubyist のための HTML5 入門 -Content Models-Rubyist のための HTML5 入門 -Content Models-
Rubyist のための HTML5 入門 -Content Models-
 
NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法
 
Boys, do LiveCoding
Boys, do LiveCodingBoys, do LiveCoding
Boys, do LiveCoding
 
Vim Text Object
Vim Text ObjectVim Text Object
Vim Text Object
 
Introduce the LiveCoding
Introduce the LiveCodingIntroduce the LiveCoding
Introduce the LiveCoding
 
2009年ふりかえり
2009年ふりかえり2009年ふりかえり
2009年ふりかえり
 
It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.
 
Lazyselect
LazyselectLazyselect
Lazyselect
 
Introduce the Hacobu
Introduce the HacobuIntroduce the Hacobu
Introduce the Hacobu
 
Rubyで始めるGTD
Rubyで始めるGTDRubyで始めるGTD
Rubyで始めるGTD
 

今更はじめるCucumber