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
Exercise: Chess moves
@aloyer 7
Specify the Knight movement rules
https://en.wikipedia.org/wiki/Rules_of_chess#Basic_moves
j
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
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
Exercise: Chess moves
@aloyer 10
Specify the Knight movement rules
https://en.wikipedia.org/wiki/Rules_of_chess#Basic_moves
jProvide some real examples ?
Exercise: Chess moves
@aloyer 11
j
a b c d e f g h
1
2
3
4
5
6
7
8
++
++ +
+
++
jGiven a Knight located at d4 Then the Knight should be able to move to: b3, c2, b5, c6, e2, f3, e6, f5
Exercise: Chess moves
@aloyer 12
j
a b c d e f g h
1
2
3
4
5
6
7
8
++
++ +
+
++
jGiven 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 ga
me
setup to ch
eck this ru
le?
What would make impossible
the Knight to go to those
locations?
Deliberate Discovery
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 …
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
Exercise: Chess moves
@aloyer 15
j
a b c d e f g h
1
2
3
4
5
6
7
8
++
++ +
+
++
jGiven the board �c3, �d4, �e7, �g7 When the move �d4-f5 is attempted Then …
l n
lBusiness Languagee.g. Algebraic chess notation
Exercise: Chess moves
@aloyer 16
j
a b c d e f g h
1
2
3
4
5
6
7
8
++
++ +
+
++
jGiven the following board -- -- -- -- -- -- -- -- -- -- -- -- bK -- bB -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- wN -- -- -- -- -- -- wK -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- When … l n
lBusiness Languagee.g. Dedicated DSL
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
and discover unknowns
@aloyer 18
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
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&
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
and discover unknowns
@aloyer 21
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
and discover unknowns
@aloyer 22
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
Ubiquitous Language
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
@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.
Fix Example
and discover unknowns
@aloyer 26
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
and discover unknowns
@aloyer 27
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
and discover unknowns
@aloyer 28
Having conversations with domain experts
and using examples
to gain a shared understanding of the desired behavior
conversation patterns
@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 functionTips
@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
@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
@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
@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
@aloyer 36
Given-When-Then
Then an outcome should be observed
Given a context
When an event happens
3 phases
Business Language Only!!!
Tips
@aloyer 37
Exercise: Scenario AnalysisScenario: 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
@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
@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
@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
@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 AnalysisTips
How
@aloyer 42
Why
What/Intent
What if…?
use Should
Business Language only
Always assume you’re ignorantProvide a context for your use-case
Rules for the conversationTips
Tips
http://yellowpencil.com/blog/testing-testing-1-2-3/ @aloyer 44http://www.isixsigma.com/industries/software-it/defect-prevention-reducing-costs-and-enhancing-quality/
Relative Costs to Fix Software Defects (Source: IBM Systems Sciences Institute)
automation
Top Related