Cucumbered

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

    5 Favorites

    Cucumbered - Presentation Transcript

    1. Cucumbered 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 FutureRuby attendee
    5. Why are you here? In order ... As a FutureRuby attendee I want ...
    6. Why are you here? In order ... As a FutureRuby attendee I want ... I’ll show you a good time
    7. What’s your acceptance criteria?
    8. Scenario: Ecstatic FutureRuby 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. Outside-in Users interface
    12. “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
    13. def given_ruby_provides_a_great_dsl(*arg) developers.should be_happy end given_ruby_provides_a_great_dsl 'run away!'
    14. def given_ruby_provides_a_great_dsl(*arg) developers.should be_happy end given_ruby_provides_a_great_dsl 'run away!' Developer
    15. Why do I quote things? Why can Underscores! I not use ‘ $ Customer
    16. Customer Developer Tester
    17. Customer Developer Cucumber Tester
    18. Customer Developer Plaintext Ruby Tester
    19. For Cuke Sake Why? • Token Conversation • Acceptance Criteria • Design • Documentation • Functional test • Integration test
    20. 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>
    21. Plaintext Ruby Ruby
    22. Plaintext Step Given we like cukes Ruby Ruby
    23. Plaintext Step Given we like cukes Given /^we like (.*)$/i do |fruit| Step fruit.should == 'cukes' #assert_equal(fruit, 'cukes') definition end Ruby Ruby
    24. Plaintext Step Given we like cukes regexp match Given /^we like (.*)$/i do |fruit| Step fruit.should == 'cukes' #assert_equal(fruit, 'cukes') definition end Ruby Ruby
    25. Cucumber provides the venue Sinatra Rails Cuke4Duke
    26. Cucumber Gateway? World domination? Cucumber Java Virtual Machine Clojure
    27. Cucumber English
    28. Cucumber English
    29. огурец 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
    30. огурец 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
    31. # language: en-lol OH HAI: STUFFING MISHUN: CUCUMBR I CAN HAZ IN TEH BEGINNIN 3 CUCUMBRZ WEN I EAT 2 CUCUMBRZ DEN I HAS 2 CUCUMBERZ IN MAH BELLY AN IN TEH END 1 CUCUMBRZ KTHXBAI ICANHAZ /^IN TEH BEGINNIN (d+) CUCUMBRZ$/ do |n| @basket = Basket.new(n.to_i) end WEN /^I EAT (d+) CUCUMBRZ$/ do |n| @belly = Belly.new @belly.eat(@basket.take(n.to_i)) end DEN /^I HAS (d+) CUCUMBERZ IN MAH BELLY$/ do |n| @belly.cukes.should == n.to_i end
    32. How Cucumber supports 28+ languages
    33. How Cucumber supports 28+ languages grammar Feature ... end
    34. How Cucumber supports 28+ languages grammar Feature ... end compiled Ruby
    35. 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
    36. "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
    37. Once more unto the breach, dear friends brace yourself
    38. §
    39. Feature Request I want members to be able to rent a movie with a priority indicating how much they want to see the film
    40. Talk to me Token for Conversation
    41. Feature Injection Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Film member Needs to add movies to their rental list with a priority
    42. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Film member Needs to add movies to their rental list with a priority
    43. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Film member Needs to add movies to their rental list with a priority Role
    44. Feature Injection Value Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Film member Needs to add movies to their rental list with a priority Role Feature
    45. Are we Acceptance done yet? Definition of Done.
    46. Scenarios Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Film member Needs to add movies to their rental list with a priority Scenario: High priority
    47. Scenarios Feature: Film Member selects a movie to rent with priority In order to maximise allocation of films The Film member Needs to add movies to their rental list with a priority Scenario: High priority Given I'm logged in When I touch the movie "Casshern" And I touch the "Rent High priority" button Then I should see "Movie added to rental list" And I should see "Casshern" in my rental list And "Casshern" should be marked as "High priority"
    48. http://iphonemockup.lkmc.ch
    49. Cuking time About cuking time!
    50. Low Res: http://www.vimeo.com/5642761 High Res: http://www.screencast.com/t/cZZ2cofHupn
    51. Here’s one I Cuked earlier Tasty
    52. Low Res: http://www.vimeo.com/5642687 High Res: http://www.screencast.com/t/4JV2VQGMj2G
    53. Getting Customers using Cucumber
    54. Getting Customers using Cucumber I don’t bite
    55. 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#####"' """""
    56. Don’t force Feature: Title In order to <value> As a <role> structure I want <feature>
    57. Avoid Noise! Given I am able to login Given I am able to login
    58. Avoid Given I login Given I authenticate Inconsistency Given I gain access
    59. 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
    60. 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
    61. Tagging Eye Head Teeth Foam Dribble
    62. Tagging Feature: Verify billing @done Scenario: Missing product description @in-progress Scenario: Several products $ cucumber --tags ~@in-progress $ cucumber --tags @done
    63. Focused Testing @teleport Feature: Invent teleportation Run just enough tests @money Feature: Make lots of money
    64. Continuous Integration(WIP) Fail Work in Pass Done Pending progress add list $ cucumber --wip movies movies --tags @WIP features/ edit movies delete movies
    65. 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 add add add delete movies movies movies movies
    66. Further reading • http://cukes.info • http://wiki.github.com/ aslakhellesoy/cucumber • http://blog.josephwilk.net
    67. Thanks, Call me sometime joe@josephwilk.net http://github.com/josephwilk http://github.com/aslakhellesoy/cucumber

    + Joseph WilkJoseph Wilk, 4 months ago

    custom

    1293 views, 5 favs, 3 embeds more stats

    Presentation on Cucumber given at FutureRuby

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1293
      • 887 on SlideShare
      • 406 from embeds
    • Comments 0
    • Favorites 5
    • Downloads 46
    Most viewed embeds
    • 397 views on http://blog.josephwilk.net
    • 7 views on http://blog.webintellix.com
    • 2 views on http://aulenbac.tumblr.com

    more

    All embeds
    • 397 views on http://blog.josephwilk.net
    • 7 views on http://blog.webintellix.com
    • 2 views on http://aulenbac.tumblr.com

    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