BDD – Collaboration & Hands-on practices Kostas Mamalis Principal Engineer – MagenTys
BDD – Collaboration &
Hands-on practices
Kostas Mamalis
Principal Engineer – MagenTys
“The most important problem that we face as software professionals is this: If somebody thinks of a good idea,
how do we deliver it to users as quickly as possible?”
- “Continuous Delivery” book
➜ Because we have to deliver
‘software that matters’ – Agile
Manifesto
➜Because BDD “describes a
cycle of interactions with well-
defined outputs, resulting in
the delivery of working, tested
software that matters”.
Why do we need to focus on software
behaviour
➜ Ubiquitous Language or DSL
➜ Focus on business value
➜ Living Documentation
➜ Specifying By Example
How does BDD come to the picture?
In order to _________ As a __________ I want ___________
“Here’s the water you’ve asked for, sir!”
The Power of the 3 voices
The Voice of
the Solution
The Voice of
Quality
The Client’s
Voice
It’s all about:…
And Scenarios of course!
Who writes the Scenarios and When?
A few tips & ideas
Definition of Ready & Definition of Done
- Definition of Ready
- Definition of Done
- 2 parallel boards
Acceptance Criteria & Example Mapping
- Acceptance Criteria – how are they related to
Scenarios?
- Example Mapping
- How about Non Functional Requirements/Criteria?
- Automation is not always the outcome of a
Specification session
- Team Rotation?
Roles
- Do we need Developers in Test?
- We are all developers
- Testers you are still needed!!!
• What happens when business are
not as involved into your processes?
• Product Owner/Business Analysts
are a catalyst to the BDD process
• Unit & Integration Tests, then
Acceptance
Business Involvement + Test-First Maturity
Test Pyramid (no Ice-Cream cones please!)
- BDD describes behaviour
- BDD doesn’t need UI
- BDD doesn’t restrict on one layer of your
system
- You can do BDD with xUnit frameworks
- Unit + Service tests with Test Doubles
- Drive majority of tests from API
- How about SPAs?
I’m a full-stack developer, can I do BDD?
“Given, Given, And, Then, When, Then…”
How about Fluent APIs then?
What if Gherkin language gets in the way?
MISSION PATTERN
A pattern for Fluent
APIs:
http://magentys.io/blogsPlace your screenshot here
https://dzone.com/articles/mission-pattern-a-means-to-modularise-automation-c
http://cherryframe.work
BDD Dashboard
MagenTys toolset for Less boilerplate code, More meaningful reporting
- Collaboration, Collaboration, Collaboration
- Drive your tests using Specifications, don’t
automate after
- Use Cucumber/Jbehave etc. when it’s
meaningful for your project.
- Fluent APIs can help you apply BDD
- It’s all about continuous quality-focused
delivery of software that matters
The message is…
Thanks!You can find me at:
@mamalisk
http://kostasmamalis.com
http://magentys.io/blogs/