Talk: Watch your language! BDD as Design Practice
Speakers directory
Speaker:
Wouter Lagerweij
Talk description
Title:
Watch your language! BDD as Design Practice
Short synopsis:
It’s Behaviour Driven Design. So where’s the design? If you’re just using Gherkin to make writing UI testing scripts a little easier, the design part will be hard to find. In this talk I’ll show, by coding live on stage, why BDD is a design practice. We’ll see what the difference is between a BDD scenario using a (ubiquitous) domain language and a test script. We’ll see how that allows us to discover how our code can diverge from the realities of the business (the original technical debt), and how we can fix that. We’ll take a little detour to show how the TDD cycle fits within the BDD one, and, if we’re lucky, end on a green test at both levels.
Max size: 500 chars
Long synopsis (optional):
This talk takes a slice of the workshops I give with a focus on giving an integrated look on the different skills/practices necessary for successful delivery in an Agile team. The focus in on what makes for good BDD scenarios (business language vs. UI scripting language), and how to use that, and the implementation of those scenarios, to drive the design of a domain model. In the talk I mix that with the switch between BDD/ATDD and TDD cycles, a balance that many teams find hard to find. The talk is done by coding live on stage: reworking a scenario, generating step definitions, driving domain class interface through the step definition implementation, switching to TDD to drive (a very small slice of…) functionality, getting to green on both levels, before looking at how we’d switch to the next scenario (which we leave as is, or just re-write into the new format, depending on time). The outline is: * Show ‘script’ BDD scenario (running though UI/selenium) * Language! * Re-formulate on-stage in business terms * New stepdefs! Generate. * Fill in details: * Create cart object * Retrieve line item object * Add line item to cart * Get price from cart * Find out ‘Cart’ isn’t called ‘Cart’ (receipt?), price is ‘total’, ... * Don’t change stepdef, but rename classes using IDE refactorings * Technical Debt, the original definition * Small rant on ubiquitous language * Example: Search @ <client redacted> * Run it again, fast, no UI * Add discount to cart * Get price from cart * Failing acceptance test * Add discount functionality by generating method on cart * Switch to TDD to test drive discount * Back to scenarios, ‘handle’ next one
Max size: 5000 chars
Tags:
Speaker directory:
Listed in directory
Not listed
Speakers directory