Bdd, cucumber and freinds

Download Bdd, cucumber and freinds

Post on 05-Jul-2015

160 views

Category:

Technology

5 download

Embed Size (px)

TRANSCRIPT

  • 1. Frank Duan Kinesis 2010

2. Introduction to BDD Introduction to Cucumber Stories and Cucumber features Building Cucumber Scenarios and Steps Tools Slicing Cucumber Cucumber Catalyst 3. FAIL 4. 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 5. To meet requirement To guarantee quality verify confidence Design Behaviour 6. GAP 7. Outside-In 8. Feature 9. Scenario Scenario: title Given [Context] And [More Context] When [Action] And [Other Action] Then [Expected Outcome] But [Unexpected Outcome] 10. A story 11. Token for Conversation 12. Meet Gherkin 13. Scenario: search by director Given the store has movies directed by Steven Spielberg When I search for Steven Spielberg Then I should see all of the movies directed by Steven Spielberg 14. Meet Advanced Gherkin TABLE Scenario: search by director Given the following movies are in stock: | Title | Director | Year | | Jaws | Steven Spielberg | 1975 | | Star Wars | George Lucas | 1975 | | Dawn of the Dead | George Romero | 1978 | | E.T. | Steven Spielberg | 1982 | When I search for "Spielberg" under "Director" Then I should see the following table: | Title | Director | Year | | Jaws | Steven Spielberg | 1975 | | E.T. | Steven Spielberg | 1982 | 15. Meet Advanced Gherkin Multi-Line String Scenario: register successfully Given I am on on the registration page When I sign up as "Jojo Binks" Then I should receive the following email: """ Thanks for signing up Jojo! Important information about here. """ 16. Meet Advanced Gherkin Scenario Outlines Scenario Outline: search by director Given the following movies are in stock: | Title | Director | Year | | Jaws | Steven Spielberg | 1975 | | Star Wars | George Lucas | 1975 | | Dawn of the Dead | George Romero | 1978 | | E.T. | Steven Spielberg | 1982 | When I search for "" under "Director" Then I the search results should be "" Examples: | Director Query | Search Results | | Steve | E.T., Jaws | | George | Dawn of the Dead, Star Wars | | Lucas | Star Wars | 17. Building step definition (Example) Scenario: Create a new company Given I am logged in When I create a new company named Acme Then I should see that a company named Acme exists 18. Building step definition Given Given == Setup Given "I am logged in" do user = Factory(:user) visits new_session_path fills_in Login, :with => user.login fills_in Password, :with => user.password clicks_button Login end 19. Building step definition When When == Change When "I create a new company named $name" do |name| visits new_company_path fills_in 'Name', :with => name clicks_button 'Create' end 20. Building step definition Then Then == Outcome Then "I should see that a company named $name exists" do |name| response.body.should =~ Regexp.new(name) end 21. Hooks Before and After Generic hooks or hooks by tags Background 22. Adpating rspec DSL for validation DOESNT adpate rspec mock module Use factory_girl instead 23. factory_girl: load data into database for test Given "I am logged in" do user = Factory(:user) visits new_session_path fills_in Login, :with => user.login fills_in Password, :with => user.password clicks_button Login end Factory.sequence(:email) {|n| "user#{n}@example.com" } Factory.define :user do |user| user.name 'User' user.email { Factory.next(:email) } user.login {|u| u.email } user.password 'password' user.password_confirmation 'password' end 24. Simulating or drive Browsers Feature on Javascript test Flexibility on switching drivers to achieve different test demand Flexibility on switching between css and xpath selector Covering most of the popular browser driving Remote calling (for IE test on VM) 25. Highlight keywords in Gherkin Autocomplete by hotkey Run by hotkey and present visual report 26. A DRb server for testing frameworks (RSpec / Cucumber currently) that forks before each run to ensure a clean testing state. 27. Soren knows all about that : s 28. Lazy coverage-aware running of Cucumber acceptance tests Run a scenario if it needs to 29. Distributed testing framework Spread your tests over processors and/or multiple machines to test your code faster 30. Dont force structure Avoid Noise! Avoid Inconsistency Balance Abstraction 31. Building step abstraction from steps Tagging Tagging for focused testing Tagging for categorizing test by purpose and environs Tagging for loading capybara configuration 32. Slow builds are the enemy of continuous integration Reuse Spork, Cucover Run Just Enough Tests Slicing Features with tags Just enough Database and try NullDB Distributed testing - hydra 33. The Rspec Book http://www.slideshare.net/josephwilk/rocket-fuelled- cucumbers http://www.slideshare.net/bkeepers/behavior-driven- development-with-cucumber-presentation http://www.slideshare.net/josephwilk/cucumbered http://www.slideshare.net/bmabey/cucumber- automating-the-requirements-language-you-already- speak 34. Thanks for your patience