quality web-acceptance
DESCRIPTION
TRANSCRIPT
Amir Barylko - MvcConf MavenThought Inc.
AMIR BARYLKO
QUALITY DRIVENWEB ACCEPTANCE
TESTING
MVC CONFERENCEFEB 2011
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
WHO AM I?
• Architect
• Developer
• Mentor
• Great cook
• The one who’s entertaining you for the next hour!
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
BDD
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
WHY TRADITIONALPROJECTS FAIL?
• Delivering late or over budget
• Delivering the wrong thing
• Unstable in production
• Costly to maintain
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
BDD PRINCIPLES
• Behaviour Driven development is about implementing an application by describing its behaviour from the perspective of the stakeholder
• Enough is Enough
• Deliver stakeholder value
• It’s all behaviour
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
OUTSIDE IN APPROACH
Tuesday, February 8, 2011
Amir Barylko - BDD MavenThought Inc.
GHERKIN DSL
• Business readable DSL
• Flush out requirements
• Documentation
• Automated testing
• Used by Cucumber, SpecFlow, jBehave
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
CUCUMBER
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
• The following folder structure
features: Folder for all the .feature files
step_definitions: all your step implementations (.rb)
support: setup environment, capybara, etc (.rb)
WHAT DO I NEED?
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
SETUPfeatures/support/paths.rb
module NavigationHelpers # Maps a name to a path. Used by the # # When /^I go to (.+)$/ do |page_name| # # step definition in web_steps.rb # def path_to(page_name) case page_name
when /home/ '/' when /Movies/ '/Movies' ...
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
FEATURES
Feature: Addition In order to make my library grow As a registered user I want to add movies to the library
Scenario: Add a movie Given I have no movies And I am on "home" When I follow "create" And I fill in "movie_title" with "Young Frankenstein" And I press "Submit" Then I should see "Young Frankenstein"
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
STEPS
Given /^I have the following movies:$/ do |table| db = SQLite3::Database.new( "C:/temp/movielib.db" ) db.execute( "delete from Movie" ) ...end
Given /^I have no movies$/ do clear_databaseend
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
HOW DOES IT WORK?
• Read scenario step
Given I have no movies
• Match regular expression
Given /^I have no movies$/
• Run the code associated to the regular expression
clear_database
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
CAPYBARA
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
WHAT
• Gem to simplify integration tests
• Inspired by Webrat
• Can be used with Cucumber steps or in any other test
• Easy to install: gem install capybara
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
WHY
• Support for different web browsers (ie, firefox, chrome)
• Provides driver to run headless (virtual browser)
• Can tag scenarios to be run with a browser
• Supports remote web application (not rack)
• Supports asynchronous calls (AJAX)
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
SETUPfeatures/support/capybara.rb
require 'capybara/cucumber'require 'selenium-webdriver'
#Capybara.default_driver = :culerityCapybara.default_driver = :selenium
Capybara.app_host = "http://localhost:1591" Capybara.run_server = falseCapybara.default_wait_time = 5Capybara.default_selector = :css
Capybara.register_driver :selenium do |app| #Capybara::Driver::Selenium.new(app, :browser => :ie) Capybara::Driver::Selenium.new(app, :browser => :chrome)end
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
STEPS
• Given I am on the Home page
• When I go to the Projects page
• When I press “login”
• When I follow “help” within “support”
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
STEPS II
• When I fill “username” with “mel”
• When I select “Winnipeg” from “cities”
• When I check “remember_me”
• When I uncheck “remember_me”
• When I choose “Option”
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
STEPS III
• Then I should see “Welcome”
• Then I should not see “Welcome”
• Then the field “user” should contain “Mel”
• Then show me the page
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
DEMO
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
QUESTIONS?
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
RESOURCES
• Email: [email protected]
• Twitter : @abarylko
• Materials: http://www.orthocoders.com/presentations
Tuesday, February 8, 2011
Amir Barylko - MvcConf MavenThought Inc.
RESOURCES II
• Capybara: https://github.com/jnicklas/capybara
• Cucumber: https://github.com/aslakhellesoy/cucumber/wiki
• Culerity: https://github.com/langalex/culerity
• Celerity: http://celerity.rubyforge.org
• Selenium: http://seleniumhq.org
Tuesday, February 8, 2011