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
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
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!
BDD is TDDMake ItPassRefactorWriteFailingUnit TestWrite FailingAcceptanceTestMake It Pass
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
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
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)
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
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
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/
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.