<<

Overview of /

❖ 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

❖ 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 login

Scenario: Successful login Given I am on the Myish home page When I fill in email and password And I click login button Then I should be able to click on the profile

❖ 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 driver ❖ Offers user-friendly DSL ( Domain Specific Language ) ❖ Supported driver ➢ Rack::test ■ Default driver. No JavaScript support ➢ -Webdriver ■ Mostly used in web-based automation FW ➢ Capybara-Webkit ■ For true headless testing with JavaScript support

❖ Basic DSL :

➢Visit('page_url') # navigate to page ➢Click_link('id_of_link') # click link by id ➢Click_link('link_text') # click link by link text ➢Click_button('button_name') # fill text field ➢Fill_in('First Name', :with => 'John') # choose radio button ➢Choose('radio_button') # choose radio button ➢Check('checkbox') # check in checkbox ➢Uncheck('checkbox') # uncheck in checkbox ➢Select('option', :from=>'select_box') # select from dropdown ➢Attach_file('image', 'path_to_image') # upload file

❖ Java - JRE ❖ Ruby ❖ RubyGems installation – use “gem install ” command. ➢ Cucumber ➢ Capybara ➢ Rspec

Project Structure :

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.

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 search When 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 development teams describe how software should behave in plain text."

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(:, "///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

Project structure : require 'capybara' require 'capybara/cucumber'

Capybara.default_driver = :selenium Capybara.app_host = "http://www.google.com" Capybara.default_wait_time = 20

World(Capybara) source "http://rubygems.org" group(:test) do gem 'cucumber' gem 'capybara' gem '' end

command to run the script : cucumber features/.feature command to generate the report: run this command by going to your project directory cucumber features --format html --out reports

https://github.com/jnicklas/capybara https://shvets.github.io/blog/2013/10/12/acceptance_tricks.html

https://github.com/cucumber/cucumber/wiki http://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!