Your SlideShare is downloading. ×
Benkyokai
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Benkyokai

127
views

Published on

Feature: IACC_LAB seminar slide …

Feature: IACC_LAB seminar slide

Given I'm working at IACC
When I read The RSpec Book
Then I make a presentation


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
127
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cucumber+Rspecではじめる BDD開発 13/10/21 IACCラボ勉強会
  • 2. BDDとは • ビヘイビア駆動型開発 • TDD(テスト駆動開発)がさらに進んだ(?)もの
  • 3. BDDとは • ビヘイビア駆動型開発 • TDD(テスト駆動開発)がさらに進んだ(?)もの ( ◠‿◠ ) ・・・???
  • 4. テストと振る舞いの違い(イメージ) テスト ビヘイビア • Test “tweet” do • Scenario “ツイートする” do ツイートを投稿するコード 投稿の反映を確認するコード • ツイートを送信すると、 • TLに反映される • End • End →プログラマ寄りの記述 →ノンプログラマでも読める記 述 (※実装は別で与える)
  • 5. 振る舞いを書く特徴・メリット • 実装構造ではなく、振る舞いを基準として動作を分解 →開発者、顧客双方が触れやすい形式 • 仕様書として機能する →顧客/開発者間の認識の齟齬を減らしうる • 自然言語に近い形で記述できる →ステークホルダー(顧客)にとって理解しやすい
  • 6. Cucumber – ビヘイビアの書き方 • シナリオを書く Feature: FizzBuzz output FizzBuzz is a game that has gained in popularity as a programming assignment to weed out non-programmers during job interviews. The object of the assignment is less about solving it correctly according to the below rules and more about showing the programmer understands basic, necessary tools such as if-/else-statements and loops. The rules of FizzBuzz are as follows: For a given number X, if X is divisible by 3 print Fizz; if X is divisible by 5 print Buzz; if X is divisible by 3 and 5 (15) print FizzBuzz; else, print X. Scenario: Fizz Given I start FizzBuzz When X is 3 Then I should see “Fizz”
  • 7. Cucumber – ビヘイビアの書き方 • シナリオを書く Feature: FizzBuzz FizzBuzz is a game that has gained in popularity as a programming assignment to weed out non-programmers during job interviews. The object of the assignment is less about solving it correctly according to the below rules and more about showing the programmer understands basic, necessary tools such as if-/else-statements and loops. The rules of FizzBuzz are as follows: For a given number X, if X is divisible by 3 print Fizz; if X is divisible by 5 print Buzz; if X is divisible by 3 and 5 (15) print FizzBuzz; else, print X. ドキュメントを自然言語で書き 下す(コメント行) Scenario: Fizz Given I start FizzBuzz When X is 3 Then I should see “Fizz” ドキュメントが満たすべきシナ リオ →別で定義が与えられる
  • 8. Cucumber – シナリオの各ステップ定義 • 1行1行定義を与える • これを書く時点でFizzBuzzクラスを作っていなくても良い • 最もその挙動に相応しい(と信じる)コードをとりあえず書く Given I start FizzBuzz When X is 3 Then I should see “Fizz” Given /^I start FizzBuzz&/ do @myfizzbuzz = FizzBuzz.new End When /^X is “*%d++”&/ do |number| @myfizzbuzz.num = number End Then /^I should see “(*^”+)”&/ do |answer| @myfizzbuzz.answer().should == answer end Given(動作前の状態) When(いま行う動作) Then(その動作に対応する挙動) の形式で書くのが一般的
  • 9. Rspecとの連携 • 抽象的な振る舞いを、より具体的な処理に落とし込んでテスト を作る • 処理を入れ子にした階層的な記述が可能 • 振る舞いだけでなく、実際の処理の流れを意識した記述になる module FizzBuzz describe “Fizz” do it “3の倍数かつ5の倍数でないとき、Fizzが出力される” do (↑の条件に合った数に対して、Fizzが出力されることを試すコード) end it “その他のとき、Fizz以外が出力される” do (Fizz以外が出力されることを試すコード) end end describe “Buzz” do (後略)
  • 10. Rspec(など)との連携(実際作業の進め 方) • Red(とりあえず書くけど、実装前なのでテストは落ちる) • Green(Redになったテストを通す最小限のコードを書く) • Refactor(Green状態を維持しつつコードの質を高める) Cucumber side RED GREEN RED RSpec side GREEN REFACTOR REFACTOR
  • 11. 疑問点 • CucumberとRspecの棲み分け • 漏れのないテストケースの作成
  • 12. 与太話:FizzBuzzEnterpriseEdition
  • 13. おわり