Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Behavior Driven Development

808 views

Published on

Automated Acceptance Criteria using SpecFlow with Selenium in .NET

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Behavior Driven Development

  1. 1. behavior drivendevelopment in.NETMICHAEL MCGUIRE@MONOCULARVISION
  2. 2. so what’s theproblem?
  3. 3. behavior driven development“BDD is a second-generation, outside–in,pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology.It describes a cycle of interactions with well-defined outputs, resulting in the delivery ofworking, tested software that matters.”- Dan North
  4. 4. BDD History Stemmed from confusion over TDD Where to start? What should I test? What should I not test? How big should a single test be? What should I name my tests? Grown to include agile analysis and automated testing
  5. 5. emphasize behavior over testing Test method names are sentences Keeps test methods focused Expressive test name is helpful when a test fails Test methods begin with “should” Keeps classes focused on doing one thing (SingleResponsibility Principle) Acceptance criteria should be executable Requirements are behavior too!
  6. 6. TDDMake ItPassRefactorWriteFailingUnit Test
  7. 7. BDD is TDDMake ItPassRefactorWriteFailingUnit TestWrite FailingAcceptanceTestMake It Pass
  8. 8. Automated Acceptance Criteria Structured user story format In order to <need> As a <role> I want to <feature> Focus put on the business need and benefit Scenarios give additional details about feature Given-When-Then
  9. 9.  http://www.specflow.org/ Open source framework for the creation and execution ofautomated acceptance tests in .NET Uses the Gherkin syntax for defining features and scenarios Generates NUnit or MSTest unit tests from feature file
  10. 10. SpecFlow Demo
  11. 11. driving your applicationSelenium http://seleniumhq.org Pros Most major browsers supported -PhantomJS, Chrome, IE, Firefoxand others Large community, many languagebindings Cons Simplistic APIWatiN http://watin.org/ Pros Fairly easy to use Rich API (specific element types) Cons Supports only Internet Explorer andFirefox Not a big community (.NETspecific)
  12. 12. Selenium + SpecFlow Demo
  13. 13. additional SpecFlow features Hooks [Before/After]TestRun [Before/After]Feature [Before/After]Scenario [Before/After]ScenarioBlock [Before/After]Step Tags/Tag Filtering on Hooks Step Argument Conversion [Scenario/Feature]Context Data Tables
  14. 14. additional considerations Setting up your application database for tests Attach/Detach database Clear/Load database tables Database transactions Faking/Mocking Database Imperative vs. Declarative tests http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html
  15. 15. Links Behavior-Driven Development with SpecFlow and WatiN:http://msdn.microsoft.com/en-us/magazine/gg490346.aspx Behavior Driven Development (BDD) with SpecFlow and ASP.NETMVC: http://blog.stevensanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/

×