Cucumber Ru09 Web

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    9 Favorites

    Cucumber Ru09 Web - Presentation Transcript

    1. Cucumber collaboration language discussion value customers acceptance Joseph Wilk
    2. Why are you here?
    3. Why are you here? In order ...
    4. Why are you here? In order ... As a Underground attendee
    5. Why are you here? In order ... As a Underground attendee I want ...
    6. Why are you here? In order ... As a Underground attendee I want ... I’ll show you a good time
    7. What’s your acceptance criteria?
    8. Scenario: Ecstatic Underground attendees Given people turned up When Joseph talks Then everyone should learn something new And no-one should fall asleep And no cucumbers should be thrown
    9. Pass Fail
    10. Pass Fail
    11. How do you know your finished? You’ll know when I’m finished
    12. Outside-in User Browser
    13. Outside-in User Browser Views
    14. Outside-in User Browser Views Controllers Models
    15. “I believe that the hardest part of software projects, the most common source of project failure, is communication with the customers and users of that software. By providing a clear yet precise language to deal with domains, a DSL can help improve this communication.” Martin Fowler
    16. def given_ruby_provides_a_great_dsl(*arg) developers.should be_happy end given_ruby_provides_a_great_dsl 'run away!'
    17. def given_ruby_provides_a_great_dsl(*arg) developers.should be_happy end given_ruby_provides_a_great_dsl 'run away!' Developer
    18. Why do I quote things? Why can Underscores! I not use ‘ $ Customer
    19. Customer Developer Tester
    20. Customer Developer Tester
    21. Customer Developer Microsoft Word Tester
    22. Customer Developer Cucumber Tester
    23. Customer Developer Plaintext Ruby Tester
    24. For Cuke Sake Why? • Token Conversation • Acceptance Criteria • Design • Documentation • Functional test • Integration test
    25. Cucumber Feature Feature: Be awesome Not Narrative executed Example of Scenario: title behaviour which rocks Given <some context> And <yet more context> When <some action> Steps And <more actions> Then <some outcome> And <more outcomes>
    26. Cucumber Feature Feature: Be awesome Not Narrative executed Example of Scenario: title behaviour which rocks Given <some context> And <yet more context> When <some action> Steps And <more actions> Then <some outcome> And <more outcomes>
    27. Plaintext Ruby Plaintext Plaintext Ruby Ruby
    28. Plaintext Step Given a foaming cuke Ruby Plaintext Plaintext Ruby Ruby
    29. Plaintext Step Given a foaming cuke Ruby Plaintext Plaintext Given /^a foaming (.*)$/i do |fruit| Step fruit.should == 'cukes' #assert_equal(fruit, 'cukes') definition end Ruby Ruby
    30. Plaintext Step Given a foaming cuke regexp match Ruby Plaintext Plaintext Given /^a foaming (.*)$/i do |fruit| Step fruit.should == 'cukes' #assert_equal(fruit, 'cukes') definition end Ruby Ruby
    31. Cucumber provides the venue Sinatra Rails Cuke4Duke
    32. Cucumber Gateway? World domination? Cucumber Java Virtual Machine Clojure
    33. Cucumber English
    34. Cucumber English
    35. огурец Russian concombre French Japanese Okurkový Czech Gurke German Cucumber English pepino Spanish cetriolo Italian agurk Danish ‫ﺍﳋﻴﺎﺭ‬ Arabic ketimun Indonesian ‫מְלָפְפֹון‬ Hebrew Cogombre Catalan CUCUMBR LOLCats Agurk Norwegian
    36. огурец Russian Korean concombre French gurka Swedish Japanese castravete Romanian Okurkový Czech ogórek Polish Gurke German Cucumber English Kurk Estonian pepino Spanish dưa chuột Vietnamese cetriolo Italian uhorka Slovak agurk Danish gurķis Latvian ‫ﺍﳋﻴﺎﺭ‬ Arabic Agurkas Lithuanian ketimun Indonesian Salátauborka Hungarian ‫מְלָפְפֹון‬ Hebrew Kurkku Finnish Cogombre Catalan Краставица Bulgarian CUCUMBR LOLCats Agurk Norwegian Pepino Portuguese
    37. # language: en-au Crikey: Eating Mate: cucumbers Ya now how I have 3 cucumbers When I eat 2 cucumbers Ya gotta have 2 cucumbers in the belly N I have 1 cucumber left YaNowHow /^I have (d+) cucumbers$/ do |n| @basket = Basket.new(n.to_i) end When /^I eat (d+) cucumbers$/ do |n| @belly = Belly.new @belly.eat(@basket.take(n.to_i)) end YaGotta /^have (d+) cucumbers in the belly$/ do |n| @belly.cukes.should == n.to_i end
    38. How Cucumber supports 28+ languages
    39. How Cucumber supports 28+ languages grammar Feature ... end
    40. How Cucumber supports 28+ languages grammar Feature ... end compiled Ruby
    41. How Cucumber supports 28+ languages grammar Feature grammar <%= keywords('grammar_name', true) %> ... rule step_keyword end (<%= keywords('given') %>) / (<%= keywords('when') %>) / (<%= keywords('then') %>) / compiled (<%= keywords('and') %>) / (<%= keywords('but') %>) end Ruby ... end
    42. "en-lol": "en-au": name: LOLCAT name: Australian native: LOLCAT native: Australian encoding: UTF-8 encoding: UTF-8 feature: OH HAI feature: Crikey background: B4 background: Background scenario: MISHUN scenario: Mate scenario_outline: MISHUN SRSLY scenario_outline: Blokes examples: EXAMPLZ examples: Cobber given: I CAN HAZ given: Ya know how when: WEN when: When then: DEN then: Ya gotta and: AN and: N but: BUT but: Cept space_after_keyword: true space_after_keyword: true
    43. Webrat Love visit home_path click_link "Web" fill_in "Email", :with => "Rat” click_button "Love" Bansky
    44. Once more unto the breach, dear friends brace yourself
    45. §
    46. Feature Request I want members to be able to rent a movie with a priority indicating how much they want to see the film
    47. Talk to me Token for Conversation
    48. Story Story: Film Member selects a movie to rent with priority As a Film member I want to add movies to my rental list with a priority So that ...
    49. Story Story: Film Member selects a movie to rent with priority As a Film member I want to add movies to my rental list with a priority So that ... Give me the movie NOW!
    50. Feature Injection Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with a priority
    51. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with a priority
    52. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with Role a priority
    53. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with Role a priority Role
    54. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with Role a priority Role Feature
    55. Are we Acceptance done yet? Definition of Done.
    56. Scenarios Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with a priority Scenario: High priority
    57. Scenarios Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Stock department Wants Film members to add movies to their rental list with a priority Scenario: High priority Given I'm logged in And I am viewing the movie "Casshern" When I choose "High priority" And I press "Rent" Then I should see "My rental list" And I should see "Casshern" in my rental list And "Casshern" should be marked as "High priority"
    58. http://iphonemockup.lkmc.ch
    59. Cuking time About cuking time!
    60. High Res: http://www.screencast.com/t/HbvPTbGy Low Res: http://www.vimeo.com/5751831
    61. Here’s one I Cuked earlier Tasty
    62. High Res: http://www.screencast.com/t/2E4nfzXotZ Low Res: http://www.vimeo.com/5751873
    63. Getting Customers using Cucumber
    64. Getting Customers using Cucumber I don’t bite
    65. The Art of War Plaintext , , @"===, ,_____cctI "?AAAAAAAAAAAAAAAA,,,,,,,,,,,,,,,,,,,,,;LLLLLLLLLL ~",,, 1""""""""""""###OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO '"EEEEE, !'"***"~~~~~~"OOOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ,EEEEE)>"'''???????"WWW!MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM "E.,)+="WWW~~~~~~#"OOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ,~:#")LLL!"+++???????"$$$1==========##/ &LLLLLLLLL;;;;;;;;;;;;,,,/ 1#LLLLLLLLLLLLLLLLLLLLLL! ,!###LLLLLL"'EEEE,'"LLLLL! !######LLL" "EEE" "LLLL" !#########L! "EEJ. "LL! !##########1 "JJ*,l" !############"! ,l" 1##########" 1"~~,~~" !##########" !###########! !###########1 !############! 1############# !"#############" !##############! 1##########"' A magnum, By calendron 1#####"' """""
    66. Don’t force Feature: Title In order to <value> As a <role> structure I want <feature>
    67. Avoid Noise! Given I am able to login Given I am able to login
    68. Avoid Given I login Given I authenticate Inconsistency Given I gain access
    69. Given I go to the login page Balance And I fill in "username" with "cuke" And I fill in "password" with "cuker" And I click "login" Abstraction Given I'm logged in
    70. Use Language Building blocks Given /I’m logged in/ do User.create!(:user => 'josephwilk', :password => "pass") Given 'I fill in "password" with "josephwilk"' Given 'I fill in "password" with "pass"' Given 'I click "login"' end
    71. Email Email-spec Webpages Webrat Forms Webrat Java/Swing Swinger
    72. Gherkin Metrics? Lack of narrative # language: en-au Crikey: Eating Mate: cucumbers Number Ya now how I have 3 cucumbers When I eat 2 cucumbers of steps Ya gotta have 2 cucumbers in the belly N I have 1 cucumber left Number of Semantically noise words similar words
    73. Need for SPEED Slick wheels!
    74. Spork require 'rubygems' require 'spork' # Sets up the Rails environment for Cucumber ENV["RAILS_ENV"] ||= "cucumber" Spork.prefork do $ spork cuc # Load all the heavy stuff... end Spork.each_run do $ cucumber --drb ... # Load the stuff just for this run... Before do Pages.delete_all end end
    75. Scaling - TestJour slaves master features Bonjour
    76. Need for speed Webrat 0.8 Celerity 12 Watir 12 Selenium 12.9 0 3.75 7.5 11.25 15 start-up time (seconds)
    77. Tagging Eye Head Teeth Foam Dribble
    78. Tagging Feature: Verify billing @javascript Scenario: Missing product description Scenario: Several products $ cucumber --tags ~@javascript $ cucumber --tags @javascript
    79. Tag Hooks Before(‘@teleport’) do teleport.prepare Attach code to tags end
    80. Focused Testing @teleport Feature: Invent teleportation Run just enough tests @money Feature: Make lots of money
    81. Continuous Integration(WIP) Fail Work in Pass Done Pending progress add list $ cucumber --wip movies movies --tags @WIP features/ edit movies delete movies
    82. Limiting Tags in Flow Work in Done progress add add add add movies movies movies movies $ cucumber --tags @WIP:3 features/ add add add edit movies movies movies movies limit 3 tags add add add delete movies movies movies movies
    83. Avoiding Unrealistic expectations
    84. Further reading • http://cukes.info • http://wiki.github.com/ aslakhellesoy/cucumber • http://blog.josephwilk.net
    85. Thanks, Call me sometime joe@josephwilk.net http://github.com/josephwilk http://github.com/aslakhellesoy/cucumber

    + Joseph WilkJoseph Wilk, 4 months ago

    custom

    1468 views, 9 favs, 2 embeds more stats

    Presentation on Cucumber given at Rails Underground more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1468
      • 1390 on SlideShare
      • 78 from embeds
    • Comments 0
    • Favorites 9
    • Downloads 0
    Most viewed embeds
    • 63 views on http://skillsmatter.com
    • 15 views on http://blog.josephwilk.net

    more

    All embeds
    • 63 views on http://skillsmatter.com
    • 15 views on http://blog.josephwilk.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories