Uploaded on

Introduce you Cucumber architecture and how to use Cucumber

Introduce you Cucumber architecture and how to use Cucumber

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,492
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
93
Comments
0
Likes
4

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. What is Cucumber?Cucumber is a tool that executes plain-text functional descriptions asautomated tests.Here is an example:BDD: Behavior Driven Development
  • 2. Running test cases
  • 3. How Cucumber works: Gherkin• Gherkin is the language that Cucumber understands.• It is a Business Readable, Domain Specific Language that lets you describe software’s behaviour without detailing how that behaviour is implemented.• So everyone can write Gherkin.• Gherkin serves two purposes – documentation and automated tests. The third is a bonus feature – when it yells in red it’s talking to you, telling you what code you should write.
  • 4. Gherkin Example1: Feature: Some terse yet descriptive text of what is desired2: In order to realize a named business value3: As an explicit system actor4: I want to gain some beneficial outcome which furthers the goal5:6: Scenario: Some determinable business situation7: Given some precondition8: And some other precondition9: When some action by the actor10: And some other action11: And yet another action12: Then some testable outcome is achieved13: And something else we can check happens too14:15: Scenario: A different situation16: ...
  • 5. Gherkin Documents
  • 6. How Cucumber works: Backgrounder• Language: Ruby, etc.Gherkin:Scenario: Users can enter an invoice item . . . Then I enter a product quantity of 5Step definition:When /enter a product quantity of (d+)/ do |quantity| pending "TODO: Do we need to have a product code passed as well?"End
  • 7. How Cucumber works: Capybara• Capybara helps you test Rails and Rack applications by simulating how a real user would interact with your app.• It is agnostic about the driver running your tests and comes with Rack::Test and Selenium support built in.
  • 8. Capybara ExampleWhen /^I sign in$/ do within("#session") do fill_in Login’, with => user@example.com fill_in Password’, with => password end click_link Sign inend
  • 9. Capybara DSL• Navigation: visit• Interact: attach_file, text, check, choose, click_link_or_button, click_button, click_link, field_labeled, fill_in, select, unselect, uncheck, click_on• Find: all, first, find, find_button, find_by_id, find_field, find_link• Query: has_content?, has_css?, has_no_content?, has_no_css?, has_no_xpath?, has_xpath?, has_link?, has_no_link?, has_button, has_no_button?, has_field?, has_no_field?, has_checked_field?, has_unchecked_field?, has_no_table?, has_table?, has_select?, has_no_select?, has_selector?, has_no_selector?, has_no_checked_field?, has_no_unchecked_field?• Debugging: save_page, save_and_open_page
  • 10. Capybara Drivers• RackTest – Default driver – Doesn’t support Javascript• Webkit – Uses QtWebKit to start a rendering engine process. – Execute Javascript• Selenium – Start a Firefox to test
  • 11. Cucumber Architecture Cucumber Gherkin Backgrounder Given When Then Ruby code Capybara DSL DriversNavigating Interaction Querying Finding Scoping Debugging RackTest Webkit Selenium Firefox …
  • 12. Install cucumber in Rails 2.3gem "capybara", "1.1.1"gem "cucumber", "1.1.0"gem "cucumber-rails", "0.3.2”$ script/generate cucumber --capybaracreate config/cucumber.yml #cucumber command paramscreate config/environments/cucumber.rb #cucumber rails envcreate script/cucumbercreate features/step_definitions #step definitionscreate features/step_definitions/web_steps.rb #generalstep definitionscreate features/support #cucumber configure filescreate features/support/paths.rb #cucumber path configurecreate features/support/env.rb #cucumber env configurecreate lib/tasks #cucumber rake taskscreate lib/tasks/cucumber.rake
  • 13. Write your first cucumber test caseIt’s really, really recommended that you write your features by hand – in collaborationwith your customer / business analyst / domain expert / interaction designer.However, to get you started you can use the feature generator to generate the firstfew features:$ script/generate feature Frooble name:string color:string description:textexists features/step_definitionscreate features/manage_froobles.feature #gherkin, user storiescreate features/step_definitions/frooble_steps.rb #ruby, step definitions
  • 14. How to use Cucumber?1. Describe behaviour in plain text2. Write a step definition in Ruby3. Run and watch it fail4. Write code to make the step pass5. Run again and see the step pass6. Repeat 2-5 until green like a cuke7. Repeat 1-6 until the money runs out
  • 15. More info?