300 likes | 469 Views
A programmer is going out for a stroll one evening. His wife asks him to swing by the store and pick up a gallon of milk, and if they had eggs, to get a dozen. He returned with twelve gallons of milk and said "They had eggs.". Favorite Movie. My dog. My Son. I’m Shawn. My Daughter. My Family.
E N D
A programmer is going out for a stroll one evening. His wife asks him to swing by the store and pick up a gallon of milk, and if they had eggs, to get a dozen. He returned with twelve gallons of milk and said "They had eggs."
Favorite Movie My dog My Son I’m Shawn My Daughter My Family I live here I a Marine Vet My Favorite Team Where I work
Fundamentally agile is about approaching the work in a different way.
It’s NOT easy • It is MUCH easier to slice up a backlog horizontally • Developers want to work horizontally (efficiency argument) http://simpleprogrammer.com/2011/11/21/understanding-the-vertical-slice/
http://www.deltamatrix.com/2012-04-17-04-37-50/horizontal-and-vertical-user-stories-slicing-the-cakehttp://www.deltamatrix.com/2012-04-17-04-37-50/horizontal-and-vertical-user-stories-slicing-the-cake
Why vertical slices? • It is about delivering working functionality as soon as possible. • Feedback.
http://www.deltamatrix.com/2012-04-17-04-37-50/horizontal-and-vertical-user-stories-slicing-the-cakehttp://www.deltamatrix.com/2012-04-17-04-37-50/horizontal-and-vertical-user-stories-slicing-the-cake
Why Behavior Driven Design • Work is done from the perspective of the user • Can slice vertically but narrowly • Tests behavior of the system • Executable requirements • Need to move as fast • as business • Appropriate feedback loop • Manual regression is • EXPENSIVE
Acceptance Tests vs. Unit and Integration Tests • Unit Tests confirm that you built it right (INSIDE OUT) • Acceptance Tests confirm that you build the right thing (OUTSIDE IN)
Benefits • Implementing changes more efficiently • Quick feedback • Higher product quality • Less rework • Better work alignment to priority • (not just for agile teams)
Describes how software should behave in plain text • Gherkin • Usable in many different human languages • Features can be written and understood by both non/technical project members • Not a replacement for unit testing; it’s not a low level testing/spec framework • Easy to execute in Continuous Integration environment (except MS TFS)
Technology Stack • Cucumber - Domain Specification • Ruby, JRuby or .NET - map cukes to application • UI testing framework - Watir, Watin, Selenium, Capybara (headless), anything that supports WebDriver • Open source • STRONG community support
Who’s Using the System What are they doing? Why do they care? Features
Scenarios • Features are defined by one or more scenarios • Sequence of steps thru the feature that exercises on path • Use BDD style – given-when-then • Scenario: <description> • <step 1> • … • <step 2>
Given - Sets up preconditions, or context, for the scenario • When - The action, or behavior, that we’re focused on • Then - Checks post-conditions and verifies that the right thing happened in the When stage Scenarios
Q&AFor more information... • cukes.info • Gojko Adzic • cuke4ninja.com • Specification by Example • https://github.com/aslakhellesoy/cucumber/wiki • http://groups.google.com/group/cukes • http://www.cheezyworld.com • The Cucumber Book, Matt Wayne, Aslak Hellesøy: http://pragprog.com/book/hwcuc/the-cucumber-book • The Rspec Book, David Chelimsky: http://www.pragprog.com/titles/achbd/the-rspec-book • http://simpleprogrammer.com/2011/11/21/understanding-the-vertical-slice/ • http://www.deltamatrix.com/2012-04-17-04-37-50/horizontal-and-vertical-user-stories-slicing-the-cake
Shawn Wallace • Work: shawn.wallace@centricconsulting.com • Personal: shawn@the-wallaces.net • Twitter: ShawnWallace • Blog: blog.shawnewallace.com • Shirt size: XXL • Shoe Size: 11.5