2. 1. testing new functionalities
2. non-regression testing
3. having conversation
4. writing scenario and automating it
5. using Cucumber/Specflow
6. other…
O
For You what is BDD About?
3@aloyer
6. Exercise: Chess moves
@aloyer 7
Specify the Knight movement rules
https://en.wikipedia.org/wiki/Rules_of_chess#Basic_moves
j
7. Exercise: Chess moves
@aloyer 8
A knight moves to the nearest square not on the
same rank, file, or diagonal.
https://en.wikipedia.org/wiki/Rules_of_chess#Basic_moves // https://en.wikipedia.org/wiki/Knight_(chess)
❝
j
8. Exercise: Chess moves
@aloyer 9
File
A column of the chessboard. A specific
file can be named either using its
position in algebraic notation, a–h, or
by using its position in descriptive
notation.
For example, the f-file or the king
bishop file comprises the squares f1–f8
(or KB1–KB8 in descriptive notation)
https://en.wikipedia.org/wiki/Glossary_of_chess#Rank
Rank
A row of the chessboard. In algebraic
notation, ranks are numbered 1–8
starting from White's side of the board;
however, players customarily refer to
ranks (but not files) from their own
perspectives.
For example: White's king and other
pieces start on his first (or "back") rank,
whereas Black calls the same rank the
eighth rank;
j
9. Exercise: Chess moves
@aloyer 10
Specify the Knight movement rules
https://en.wikipedia.org/wiki/Rules_of_chess#Basic_moves
jProvide some real examples ?
10. Exercise: Chess moves
@aloyer 11
j
a b c d e f g h
1
2
3
4
5
6
7
8
+
+
+
+ +
+
+
+
j
Given a Knight located at d4
Then the Knight should be able to move to:
b3, c2, b5, c6, e2, f3, e6, f5
11. Exercise: Chess moves
@aloyer 12
j
a b c d e f g h
1
2
3
4
5
6
7
8
+
+
+
+ +
+
+
+
j
Given a Knight located at d4
Then the Knight should be able to move to:
b3, c2, b5, c6, e2, f3, e6, f5
Do you need a valid game
setup to check this rule?
What would make impossible
the Knight to go to those
locations?
Deliberate Discovery
12. Exercise: Chess moves
@aloyer 13
j
a b c d e f g h
1
2
3
4
5
6
7
8
+
+
+
+ +
+
+
+
j
l n
l
Given a Knight located at d4
And a King located at c3
And …
When the Knight attempts to move to f5
Then …
13. Exercise: Chess moves
@aloyer 14
j
a b c d e f g h
1
2
3
4
5
6
7
8
+
+
+
+ +
+
+
+
jGiven a Knight located at d4
And a King located at c3
And …
When the Knight attempts to move to f5
Then …
l n
l
thewhite
white
14. Exercise: Chess moves
@aloyer 15
j
a b c d e f g h
1
2
3
4
5
6
7
8
+
+
+
+ +
+
+
+
j
Given the board c3, d4, e7, g7
When the move d4-f5 is attempted
Then …
l n
lBusiness Language
e.g. Algebraic chess notation
15. Exercise: Chess moves
@aloyer 16
j
a b c d e f g h
1
2
3
4
5
6
7
8
+
+
+
+ +
+
+
+
j
Given the following board
-- -- -- -- -- -- -- --
-- -- -- -- bK -- bB --
-- -- -- -- -- -- -- --
-- -- -- -- -- -- -- --
-- -- -- wN -- -- -- --
-- -- wK -- -- -- -- --
-- -- -- -- -- -- -- --
-- -- -- -- -- -- -- --
When … l n
lBusiness Language
e.g. Dedicated DSL
16. Exercise: Chess moves
@aloyer 17
A knight moves to the nearest square not on the
same rank, file, or diagonal.
https://en.wikipedia.org/wiki/Rules_of_chess#Basic_moves // https://en.wikipedia.org/wiki/Knight_(chess)
❝
j
Given a Knight located at d4
Then the Knight should be able to move to:
b3, c2, b5, c6, e2, f3, e6, f5
Rule
Example
~ Acceptance
Criteria
17. and discover unknowns
@aloyer 18
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
18. to gain a shared understanding of the desired behavior
and discover unknowns
@aloyer 19
Having conversations with domain experts
but
conversations only
are not enough
Curse of Knowledge
B E
?
?
?☃
℥
http://www.nytimes.com/2007/12/30/business/30know.html?_r=1&
19. and discover unknowns
@aloyer 20
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
Curse of Knowledge
20. and discover unknowns
@aloyer 21
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
21. and discover unknowns
@aloyer 22
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
Ubiquitous Language
22. and discover unknowns
@aloyer 23
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
Ubiquitous Language
Hunt for rules and
acceptance criteria
23. @aloyer 24
Exercise: Permissions Inheritance
Files and subfolders can inherit permissions from a parent folder. By default,
any new permissions you assign to a folder are passed on to subfolders as
well. Thus, when you create a new subfolder in your My Documents folder, it
inherits the permissions you've set for your profile. If you made your user profile
private, the new subfolder and any files you create or store within it will be private
as well.
You can prevent permissions from being inherited by changing the
inheritance options for a folder. You can specify that subfolders or files (or
both) no longer inherit permissions that have been assigned to the parent
folder containing them. Instead, only permissions you explicitly apply to files
and subfolders will apply.
25. and discover unknowns
@aloyer 26
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
26. and discover unknowns
@aloyer 27
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
27. and discover unknowns
@aloyer 28
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
conversation patterns
30. @aloyer 31
tap
.
I
deliver running water
hand
wash hands
What do I want? Why?Not how I’ll perform it
Describe the task not the function
Tips
31. @aloyer 32
.
I
What do I want? Why?Not how I’ll perform it
Describe the task not the function
In order to really appreciate my meal
As a sea food eater
I want to wash my hands afterwards
Tips
32. @aloyer 33
.
I
What do I want? Why?Not how I’ll perform it
Describe the task not the function
In order to really appreciate my meal
As a sea food eater
I want to wash my hands afterwards
In order to <achieve a vision/goal>
As a <stakeholder>
I want to <value>
Tips
33. @aloyer 34
Given-When-Then
Then an outcome should be observed
Given a context
When an event happens
3 phases
setup/arrange
exercise/act
verify/assert
Tips
34. @aloyer 35
Given-When-Then
Then an outcome should be observed
Given a context
When an event happens
3 phases
setup/arrange
exercise/act
verify/assert
behavior
Tips
35. @aloyer 36
Given-When-Then
Then an outcome should be observed
Given a context
When an event happens
3 phases
Business Language Only!!!
Tips
36. @aloyer 37
Exercise: Scenario Analysis
Scenario: A visitor can add an item to the basket
Given I am viewing a product "product/id/1"
When I click "#addNowButton"
Then I should see "Items added to basket"
what do you think ?
Tips
37. @aloyer 38
Scenario: A visitor can add an item to the basket
Given I am viewing a product "product/id/1"
When I click "#addNowButton"
Then I should see "Items added to basket"
Exercise: Scenario Analysis
???
authenticated
anonymous…
website? api? web-services?
technical details?
technical details?
Tips
38. @aloyer 39
In order to ease buying
As a visitor
I want to be able to add item in my basket
Scenario: A non authenticated visitor can add item to its basket
Given I was not yet authenticated
And I had no item in my basket
And I was looking at the book « Living Documentation »
When I add the book in my basket
Then my basket should contain the book « Living Documentation »
Scenario: A visitor can add an item to the basket
Given I am viewing a product "product/id/1"
When I click "#addNowButton"
Then I should see "Items added to basket"
Exercise: Scenario Analysis
only
1st…
2nd…
3rd…
nth draft
Tips
39. @aloyer 40
In order to ease buying
As a visitor
I want to be able to add item in my basket
Scenario: A non authenticated visitor can add item to its basket
Given I was not yet authenticated
And I had no item in my basket
And I was looking at the book « Living Documentation »
When I add the book in my basket
Then my basket should contain the book « Living Documentation »
Exercise: Scenario Analysis
only
there is already something in the basket
the book was already in the basket
it is the second time i visit the site anonymously…
a book was in the basket but not anymore available…
what if?
Tips
40. @aloyer 41
Scenario: A non authenticated visitor can add item to its basket
Given I was not yet authenticated
And I had no item in my basket
And I was looking at the book « Living Documentation »
When I add the book in my basket
Then my basket should contain only the book « Living Documentation »
Scenario: An authenticated visitor can add item to its basket
Given I was already authenticated as « Emma »
And I had no item in my basket
And I was looking at the book « Living Documentation »
When I add the book in my basket
Then my basket should contain only the book « Living Documentation »
Exercise: Scenario Analysis
Tips
41. How
@aloyer 42
Why
What/Intent
What if…?
use Should
Business Language only
Always assume you’re ignorant
Provide a context for your use-case
Rules for the conversation
Tips
Tips