+ All Categories
Home > Technology > BDD training v5.0.1

BDD training v5.0.1

Date post: 26-Jan-2017
Category:
Upload: arnauld-loyer
View: 888 times
Download: 0 times
Share this document with a friend
45
2 Behavior Driven Development & Specification by Example s with @aloyer
Transcript

2

Behavior Driven Development

&

Specification by Exampleswith

@aloyer

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: Draw a 12 points Star

@aloyer 4

Exercise: Draw a 12 points Star

@aloyer 5

Q12Q10

Q14J

@aloyer 6

shared understanding@jeffpatton

Shared documentsaren’t

C LN❝

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

@aloyer 25

Exercise: Password Rules

List Sesame RulesExamples?

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

How

@aloyer 29

Why

What/Intent

Rules for the conversation

five why rules

Tips

Tips

@aloyer 30https://pragprog.com/magazines/2012-01/the-dude-abides

@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

C QExamples

LO

A P

LLLRequirements

N3 Amigos Workshop

development / tests

uat@aloyer 43

when

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

Examples Tests

Requirements

elaborate

can become

verify

@aloyer 45

automation

Three Amigos

Specifications

Requirements

Validate Examples Development

Automation Living Documentation

Examples

Validatio

n

Non-Regression

Right Software

@aloyer 46


Recommended