BDD has got a bit conflated with acceptance testing in the PHP community because of tools like Behat and Codeception. BDD is more about workflow and mindset rather than tooling. To understand BDD, we must go back to its origins and see how it evolved out of the need to fix common problems in TDD.
7. TYPICAL DEV PROBLEMS IN TDD:
- W H E R E T O S T A R T
- W H A T T O T E S T
- W H A T N O T T O T E S T
- H O W M U C H T O T E S T
- W H A T T O C A L L T H E I R T E S T S
- H O W T O U N D E R S T A N D W H Y
A T E S T F A I L S
8. S T E P S T O W A R D S B D D
TEST METHOD NAMES SHOULD BE SENTENCES
01
9. S T E P S T O W A R D S B D D
TEST METHOD NAMES SHOULD BE SENTENCES
01
public class CustomerLookupTest extends TestCase {
testFindsCustomerById() {
}
testFailsForDuplicateCustomers() {
}
}
10. S T E P S T O W A R D S B D D
THE CONVENTION OF STARTING TEST METHOD NAMES
WITH THE WORD “SHOULD”
02
11. S T E P S T O W A R D S B D D
REMOVED ANY REFERENCE TO TESTING AND REPLACED
IT WITH A VOCABULARY BUILT AROUND VERIFYING
BEHAVIOUR
03
12. S T E P S T O W A R D S B D D
03
public class CustomerLookupTest extends TestCase {
testFindsCustomerById() {
}
testFailsForDuplicateCustomers() {
}
}
CustomerLookup
- should find customer by id
- should fail for duplicate customers
- ...
13. S T E P S T O W A R D S B D D
DISCOVERED THE CONCEPT OF BUSINESS VALUE
04
14. I HAD ALWAYS BEEN AWARE
THAT I WROTE SOFTWARE FOR
A REASON,
BUT I HAD NEVER REALLY
THOUGHT ABOUT THE VALUE
OF THE CODE I WAS WRITING
RIGHT NOW.
D A N N O R T H
15. S T E P S T O W A R D S B D D
WHAT’S THE NEXT MOST IMPORTANT THING
THE SYSTEM DOESN’T DO?
05
17. S T E P S T O W A R D S B D D
APPLY ALL OF THIS BEHAVIOUR-DRIVEN THINKING
TO DEFINING REQUIREMENTS
18. S T E P S T O W A R D S B D D
DEVELOP A CONSISTENT VOCABULARY FOR ANALYSTS,
TESTERS, DEVELOPERS, AND THE BUSINESS ...
19. S T E P S T O W A R D S B D D
...ELIMINATING SOME OF THE AMBIGUITY AND
MISCOMMUNICATION THAT OCCUR WHEN TECHNICAL
PEOPLE TALK TO BUSINESS PEOPLE.
20. A S T A R T I N G P O I N T .
USER STORY TEMPLATES
As a [X]
I want [Y]
so that [Z]
21. A S T A R T I N G P O I N T .
USER STORY TEMPLATES
As a [X]
I want [Y]
so that [Z]
I want [some feature]
So that... [I just do, ok?]
22. A S T A R T I N G P O I N T .
USER STORY TEMPLATES
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
23. IT SAYS NOTHING ABOUT THE BE BEHAVIOUR OF
THE ELEVATOR
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
24. A STORY’S BEHAVIOUR IS SIMPLY ITS
ACCEPTANCE CRITERIA
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
25. DESCRIBE THE ACCEPTANCE CRITERIA IN TERMS
OF SCENARIOS
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
26. DESCRIBE THE ACCEPTANCE CRITERIA IN TERMS
OF SCENARIOS
Given some initial context,
When an event occurs,
then ensure some outcomes.
27. ACCEPTANCE CRITERIA IN TERMS OF SCENARIOS
Scenario:
Given I am on the 0 floor
And the elevator is on the 0 floor
And a call for 3 floor is registered
And a call for -1 floor is registered
When I call elevator
And the elevator operates
Then the elevator opens door on -1 level
Then the elevator opens door on 0 level
Then the elevator opens door on 3 level
28. F I N A L L Y . . .
ACCEPTANCE CRITERIA COULD BE EXECUTABLE
29. THE VISION IS TO HAVE A
ROUND-TRIP EDITOR SO THAT
BA`S AND TESTERS CAN
CAPTURE STORIES IN A
REGULAR TEXT EDITOR THAT
CAN GENERATE STUBS FOR
THE BEHAVIOUR CLASSES, ALL
IN THE LANGUAGE OF THE
BUSINESS DOMAIN.
D A N N O R T H
30. BDD PRACTITIONERS
EXPLORE, DISCOVER, DEFINE,
THEN DRIVE OUT THE DESIRED
BEHAVIOUR OF SOFTWARE
USING CONVERSATIONS,
CONCRETE EXAMPLES AND
AUTOMATED TESTS.
M A T T W Y N N E
32. A GROUP OF PEOPLE
SPECIFYING HOW
SOFTWARE SHOULD
BEHAVE BEFORE
IMPLEMENTING IT.
D A N N O R T H
33. N O T T H I S !
HTTPS://TWITTER.COM/SEBROSE/STATUS/913080462444253184
34. C E R T A I N L Y N O T T H I S !
HTTP://LABS.IG.COM/CODE-COVERAGE-100-PERCENT-TRAGEDY
35. R E A D M O R E :
HTTPS://DANNORTH.NET/INTRODUCING-BDD/
HTTP://LABS.IG.COM/CODE-COVERAGE-100-
PERCENT-TRAGEDY
HTTPS://WWW.YOUTUBE.COM
/WATCH?V=L95DSKM5FBY
HTTPS://GITHUB.COM/MSEKNIBILEL/ELEVATOR-
BDD-KATA
36. T H A N K
Y O U !
A L I N P A N D I C H I
@ALINPANDICHI
ALIN.PANDICHI@MOZAICWORKS.COM