Thursday, November 17, 2011

Adventures in Capybara presentation

This presentation is from my talk at  NYC Metro Selenium Users Meetup held on 17 Nov 2011. 

View more presentations from Mona Soni


BDD and Agile testing


         BDD has gain popularity among many Agile shops in past few years. It has helped teams to work more collaboratively and with focus on end user expectations and business goals.

        BDD with ubiquitous language gives the power to business and development teams to define the tests in business domain language. The Give…When…Then format let's you write the tests in readable english.

           Given I am a registered user
           When I enter my credentials
           Then I am on the user account page

    Above scenario gives a very clear picture of the tests intent without diving into the underlying technology and tools used.
   
      BDD framework gives the testing team an opportunity to provide their inputs to the story even before the development is kicked off. QAs can write BDD scenario before the story with Product team which can then be used for automation tests. This establishes a very cohesive model where acceptance criteria are translated into a well functioning feature drive by BDD scenarios. It proves to be very successful as the automation of the features is done right with the development and the QA cycle doesn't lags behind the development cycle. BDD scenarios bridges the gap of documentation, lack of which is mostly feared by big organisations while adopting Agile. It covers for both requirements and manual tests which are difficult to maintain and often loose their worth in long running and big projects.

     Given the wide acceptance of BDD in projects, frameworks are available for most of the popular technologies used, here are the few popular ones :
  •  Cucumber            : mostly used for ruby projects
  •  Jbehave                : Java
  •  Cucumber-JVM   : Cucumber compatible for Java
  •  Spinach                : new kid, mostly ruby
  •  Jasmine                : JavaScript tests 
  •  SpecFlow             : .Net
  •  Specs2                  : Scala