BDD Overview of Cucumber Capybara What is BDD The main focus is on the expected behavior of the application and its components User stories created and maintained collaboratively by all stakeholders ID: 642163
Download Presentation The PPT/PDF document "BEHAVIOR DRIVEN DEVELOPMENT / TESTING" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
BEHAVIOR DRIVEN DEVELOPMENT / TESTING (BDD)
Overview of Cucumber / Capybara Slide2
What is BDD?The main focus is on the expected behavior of the application and it’s components.
User
stories created and maintained collaboratively by all stakeholders What are the benefits? Define verifiable, executable and unambiguous requirements Developing features that truly add business value Preventing defects rather than finding defects Bring QA involvement to the forefront, great for team dynamics
Behavior Driven Development/TestingSlide3
Testing tool based on BDD written in Ruby.
Tests are written in plain language called Gherkin based
BDD style of Given, When, Then, which any layperson can understand.Tests are grouped into feature files with .feature extension.E.g. Feature: As a Myish user I should be able to loginScenario: Successful loginGiven I am on the Myish home page
When I fill in email and password
And I click login buttonThen I should be able to click on the profile
Cucumber BasicsSlide4
Capybara is a web-based automation framework used for creating functional tests that simulate how users would interact with the application Capybara is library/gem built to be used on top of underlying web-based driverOffers user-friendly DSL ( Domain Specific Language )
Supported driver
Rack::testDefault driver. No JavaScript support Selenium-WebdriverMostly used in web-based automation FWCapybara-WebkitFor true headless testing with JavaScript support
CAPYBARASlide5
Basic DSL :Visit('page_url
') # navigate to page
Click_link('id_of_link') # click link by idClick_link('link_text') # click link by link textClick_button('button_name') # fill text fieldFill_in('First Name', :with => 'John') # choose radio buttonChoose('
radio_button
') # choose radio buttonCheck('checkbox') # check in checkboxUncheck('checkbox') # uncheck in checkbox
Select
('option', :from=>'
select_box
') # select from dropdownAttach_file('image', 'path_to_image') # upload file
CAPYBARA: Slide6
Pre-requisites
Java
- JRERubyRubyGems installation – use “gem install <name of gem>” command. CucumberCapybaraRspecSlide7
DEMO
Project Structure
: Slide8
DEMO
Project
Structure :Features – folder to host all your feature files.Step_Definitions – folder to host all your step definition Ruby files.Support – folder to host your configuration files (env.rb
).
Gemfile – defines the top-level gems to be used in your project.
Slide9
DEMO Sample:
simple_search.feature
: – Describes the features that a user will be able to use in the program.Feature: As a user I should be able to perform simple google search.Scenario: A simple google search scenario
Given
I am on the main google searchWhen I fill in "q" with "Cucumber test"And I click "gbqfb
" button
And
I click on the first result
Then I should see "Cucumber lets software development teams describe how software should behave in plain text."
Slide10
Sample: search_step.rb– describes the actions that user will do for each step.
Given /^I am on the main google search$/ do
visit ('/')end When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value| fill_in(field, :with => value)end
Then /^I click "([^"]*)" button$/ do |button| click_button(button)
end
Then /^I click on the first result$/ do
find(:xpath, "//html/body/div[3]/div[2]/div/div[5]/div[2]/div[2]/div/div[2]/div/ol/li/div/h3/a").click
end
Then /^I should see "([^"]*)"$/ do |text|
page.should
have_content
(text)
end
Slide11
Sample: env.rb
– hosts all configuration files
Project structure : require 'capybara' require 'capybara/cucumber' Capybara.default_driver = :seleniumCapybara.app_host = "
http://
www.google.com" Capybara.default_wait_time = 20
World(Capybara
)
Slide12
Sample: Gemfile– a format for describing gem dependencies required to execute Ruby codes
source "
http://rubygems.org" group(:test) dogem 'cucumber'gem 'capybara'gem 'rspec'endSlide13
Main cucumber commands:
command to run the script :
cucumber features/<name of the feature file>.featurecommand to generate the report:run this command by going to your project directorycucumber features --format html --out reportsSlide14
RESOURCES:
https://
github.com/jnicklas/capybarahttps://shvets.github.io/blog/2013/10/12/acceptance_tricks.htmlhttps://github.com/cucumber/cucumber/wikihttp://
www.ibm.com
/developerworks/library/a-automating-ria/Useful resources (and lots of examples):
http://
books.openlibra.com
/pdf/
cuke4ninja-2011-03-16.pdf < awesome free eBook – fun to read, too.http://www.slideshare.net/
lunivore
/behavior-driven-development-11754474 < Liz really knows her stuff!
http://
dannorth.net
/2011/01/31/whose-domain-is-it-anyway/
https://
www.google.co.uk
/
search?q
=
declarative+vs+imperative+BDD
< go Team Declarative!