390 likes | 564 Vues
Getting Started With. Behavior Driven Development. Lee Brandt. Senior Consultant. Adventure Tech Group. 10 Yrs Programming Early .NET Betas TDD / BDD Enthusiast. leebrandt@gmail.com. www.codebucket.org Twitter: leebrandt. DISCLAIMERS. My opinions are mine, not my employer’s.
E N D
Getting Started With Behavior Driven Development
Lee Brandt Senior Consultant Adventure Tech Group 10 Yrs Programming Early .NET Betas TDD / BDD Enthusiast leebrandt@gmail.com www.codebucket.org Twitter: leebrandt
DISCLAIMERS • My opinions are mine, not my employer’s. If you don’t like what you hear, blame me. • My opinions are my opinions as of TODAY. And are based on what I know TODAY. • I ALWAYS love to learn if I am doing something wrong. • Continuous learning… ‘nuff said.
Test Fixture Class
TDD Comes Up Short not the intent the language misleads not about testing
BDD is a shift in TDD language that helps guide you to do TDD the way it was meant to be done.
(User Voice) Ubiquitous Language
BDD DDD TDD
Questions and Techniques • Implicit Requirements • Garage Example • Foundation • Electrician • Building Permit • Inspection • Outside-In Development • Start with the outermost layer (layer closest to the stakeholder/consumer) • Work your way down the layers • Stay in User Voice
#START:title_and_narrative Feature: code-breaker starts game As a code-breaker I want to start a game So that I can break the code #END:title_and_narrative #START:scenario_only Scenario: start game Given I am not yet playing When I start a new game Then the game should say "Welcome to Mastermind!" And the game should say "Enter guess:" #END:scenario_only
Two Types of BDD • Story-Based (Concentric Circle) • Outside Circle => JBehave, NBehave, Cucumber • Inside Circle => NSpec, MSpec, Rspec • Context-Specification • Outside => Interactions (Lots of Mocks) • Inside => Specs for each Outside Mock
Scrum, Kanban & XP OH MY! • User Stories • Role – Goal – Motivation • As a [Role] I need to [Goal] so that [Motivation] • As an Account Holder I need to be able to transfer funds from my savings to my checking so that I don’t bounce checks. • Scenarios • Context – Action – Observation • Given [Context] When [Action] Then [Observation] • LANGUAGE • All about expressing the user’s needs and • what it means to the user to have those needs filled.
Given I have an inventory of Floogles When loading the floogle search page The System should load an empty search form
Web Interface Windows Interface User Interface User Interface Layer Presentation Layer Domain Objects Services Persistence
.Net Frameworks • SpecUnit.Net • Scott Bellware • MSpec • Part of MultiFunctionMachineMachine • Aaron Jensen & Jacob Lewallen • Nbehave • Jbehave • Joe Ocampo & Jimmy Bogard • NSpecify • Maruis Marais
Thank You • Papers • http://behaviour-driven.org • http://dannorth.net/introducing-bdd/ • Videos • http://domaindrivendesign.org/events/oopsla2007/dan_north/ • http://video.google.com/videoplay?docid=8135690990081075324 • http://blog.wekeroad.com/mvc-storefront/kona-3/ • Blogs • http://techblog.daveastels.com/ • http://lizkeogh.com/ • http://dannorth.net/ Lee Brandt Email: leebrandt@gmail.com Twitter: @leebrandt www.codebucket.org