&
FÉLIX-ANTOINE
BOURBONNAIS
B.ING., M.SC, PSM
Agile Tour Québec 2017
Le BDD: Une conversation pour
découvrir et spécifier les besoins
d’affaires
PASCAL ROY
ING., CSM, PSM, PMP
Slide 2
Slide 2 text
Diapositives et références
http://conferences.elapsetech.com/bdd-spec-affaires/
Cette présentation s’adresse à un public
débutant désirant s’initier au BDD.
Slide 3
Slide 3 text
Le BDD n’est pas une technique de test
Slide 4
Slide 4 text
Le BDD peut être fait sans outils
comme Cucumber, SpecFlow, etc.
Slide 5
Slide 5 text
Le BDD est un processus pour
découvrir, spécifier et documenter les
requis d’affaires
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
Cadre de la conférence
Public cible
Cette présentation
s’adresse à un public
débutant désirant
s’initier au BDD.
Nos objectifs
• Comprendre (survol) ce qu’est le BDD
et pouvoir continuer à explorer le sujet
• Le BDD n’est pas une technique de test
• Le BDD est une approche pour la
découverte et la spécification
Slide 8
Slide 8 text
8
Qui sommes-nous ?
Pascal Roy
Ing., PSM, CSM, PMP
Félix-Antoine Bourbonnais
B.ing., PSM, M.Sc.
Quels sont les défis typiques
concernant la documentation ?
Slide 12
Slide 12 text
> Transmission et distorsion de l’information
Passage de documents souvent sans explications et contexte
> Interprétations différentes
Impossibilité de transmettre directement un modèle mental
> Documentation pas à jour
Quelle est la quantité réaliste que l’on pourra garder à jour?
> La qualité ≠ la quantité
Plus de texte ≠ plus clair
Problèmes concernant la documentation
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
Est-ce que je produis
la bonne chose?
(« Building the right thing »)
14
Slide 15
Slide 15 text
BDD :
« Behavior-Driven Development »
BDD ?!? 15
Slide 16
Slide 16 text
16
Un processus
pour comportement
souhaité d’un
système
le
Explorer
Découvrir
Spécifier
Piloter
Slide 17
Slide 17 text
Comportement
(« behavior »)
* Système au sens large et peut englober plusieurs systèmes « physiques »
ou applications dans certains cas.
Comportement ?!?
17
Contexte
Action
Conséquence
(« outcome »)
Slide 18
Slide 18 text
18
Explorer
Découvrir
Spécifier
Piloter
le développement avec
des tests automatisés
et piloter
une spécification
exécutable
=
la conversation et
des exemples concrets
utilisant
une compréhension
commune du problème
pour forger
Slide 19
Slide 19 text
Les ingrédients
BDD
+
=
Spécification par
l’exemple
1
Automatisation des
scénarios en tests
2
Conversations
∀
Slide 20
Slide 20 text
Tests
Fonctionne comme prévu? + vérifie et valide le développement
BDD
Bon comportement/produit? + guide le développement
BDD versus Tests
Slide 21
Slide 21 text
Il était une fois…
Sprint courant
Sprint -1
Story 4
• Alice --> Propriétaire du produit
• Jean --> Assurance qualité
• Bob --> Développeur
• La Story 4 devrait être
réalisée dans le prochain
sprint
Explorons la Story 4…
• Sa portée
• Ses critères d’acceptation et règles d’affaires
• Etc.
Slide 22
Slide 22 text
1
Slide 23
Slide 23 text
Où ?
Découverte
Slide 24
Slide 24 text
Atelier de découverte
Atelier de découverte
… plus de…
… plus petites …
Compréhension
commune
Règles d’affaires
(critères d’acceptation)
Questions
Exemples
(scénarios)
Story /
Fonctionnalité
28
Affaires
A le contexte, le
pourquoi
et connaît la valeur.
QA / UX
Pense naturellement
aux détails et à
l’utilisabilité
Dev & Ops
Pense à la faisabilité et
aux aspects techniques
et à la complexité
Slide 29
Slide 29 text
Comment ?
Découverte
Slide 30
Slide 30 text
User Story /
Fonctionnalité • Règles d’affaires; et/ou
• Critères d’acceptation;
• Conditions de succès
Mais avons-nous compris la
même chose ?
Est-ce que ça veut dire X
ou Y ?
décrite par
Slide 31
Slide 31 text
BDD
centré autour
Des
conversations
Slide 32
Slide 32 text
J’ai écrit mes
« BDDs »
Voici les
scénarios
Slide 33
Slide 33 text
Le BDD permet à l’équipe de
découvrir et s’approprier la
spécification
Voici
les scénarios
Slide 34
Slide 34 text
Donne-moi un exemple!
34
Slide 35
Slide 35 text
On utilise des exemples pour
communiquer et découvrir les règles.
Slide 36
Slide 36 text
Déroulement
Exemple
Et si..
Dans ce
cas…
Questions
sous forme
d’exemples
Slide 37
Slide 37 text
Ainsi, on valide que tous ont la même
compréhension et qu’il ne manque pas
de règles importantes.
Slide 38
Slide 38 text
Pour une activité ludique sur l’interprétation des
règles à faire avec votre équipe:
https://www.slideshare.net/Reloaddk/bdd-how-to-solve-
communication-problems
Slide 39
Slide 39 text
Le principe
39
Scénario
(exemple)
Règle /
Critère
illustre
Slide 40
Slide 40 text
Concrètement ?
Découverte
Slide 41
Slide 41 text
Limite quotidienne de retrait
Si limite=1000
Et déjà retrait =500 le 7 Nov.
Montant=500 le 7 Nov.
->OK
Si limite=1000
Et déjà retrait =500 le 7 Nov.
Montant=501 le 7 Nov.
->Refusé
Si limite=1000
Et déjà retrait =500 le 7 Nov. 23h59
Montant=501 le 8 Nov. 00h01
->?????
Story: Retirer au guichet
Slide 42
Slide 42 text
Limite quotidienne de retrait
Si limite=1000
Et déjà retrait =500 le 7 Nov. 13h00
Montant=500 le 7 Nov. 14h00
->OK
Si limite=1000
Et déjà retrait =500 le 7 Nov. 13h00
Montant=501 le 7 Nov. 14h00
->Refusé
Si limite=1000
Et déjà retrait =500 le 7 Nov. 23h59
Montant=501 le 8 Nov. 00h01
->Refusé
Si limite=1000
Et déjà retrait =500 le 7 Nov. 23h59
Montant=501 le 9 Nov. 00h00
->OK
Story: Retirer au guichet
Autre règle
Exemple 1
…
Slide 43
Slide 43 text
Il existe des activités pour mener les ateliers
(ex.: Example Mapping, Feature Mapping, …)
Slide 44
Slide 44 text
Activité: « Example Mapping »
Fonctionnalité /
Story
Règle
Exemple
Questions à
valider
Nouvelle Story
Nouvelle Story
Règle Règle
Exemple
Exemple
Exemple Exemple
Exemple
Slide 45
Slide 45 text
Démonstration
Example Mapping Story:
Retirer au guichet
Doit avoir assez
de fonds
Par tranche de 20$ Limite quotidienne
Si carte 123 est bloquée
Et j’essaie de retirer
????
20$ -> OK
21$ -> Err
40$ -> OK
1000$ @ 13h
1$ @ 14h Non
1000$ @ 13h le 7
1$ @ 13h le 8 -> OK
1000$ @ 23h59
1$ @ 00h01 -> NON
…
…
Distribution $$
exclue
Déjà authentifié
Limites (scope):
Slide 46
Slide 46 text
Pour en savoir plus sur l’Example Mapping
https://cucumber.io/blog/2015/12/08
/example-mapping-introduction
Slide 47
Slide 47 text
2
Slide 48
Slide 48 text
Quand ?
Qui ?
Spécification
Slide 49
Slide 49 text
fnc.feature
Déroulement
Scénarios
Découvrir 1
Atelier de découverte
Exemple
Spécifier 2
Description du contexte
- Règle
- Règle
Slide 50
Slide 50 text
1. Prendre les règles et les exemples trouvés lors de la découverte
2. Mettre au propre (pas en groupe!) --> Spécification
3. L’équipe s’entend sur le comportement
Écrire la spécification
Slide 51
Slide 51 text
Sous quel format?
Spécification
Slide 52
Slide 52 text
Des exemples
sous différentes formes!
Slide 53
Slide 53 text
On utilise généralement le Gherkin : un
langage simple et textuel
Slide 54
Slide 54 text
Comportement
(« Behavior”)
Le Gherkin
54
Contexte
Action
Conséquence
(« Outcome”)
Étant donné
(« Given »)
Quand
(« When »)
Alors
(« Then »)
Slide 55
Slide 55 text
Des exemples concrets
Scénario: Retirer avec un solde suffisant
Étant donné un compte avec 600$
Quand je fais un retrait de 400$
Alors le retrait est autorisé
Et le solde du compte est de 200$
Gherkin
Slide 56
Slide 56 text
Scénario Gherkin versus tests
Test: Retirer avec un solde suffisant
1. Se connecter avec compte ‘C37362’
2. Aller dans les opérations > Retrait
3. Faire un retrait de 400$
4. => un message montre que c’est
accepté
5. Aller dans le sommaire
6. => Le solde doit être de 200$
Scénario: Retirer avec un solde suffisant
Étant donné un compte avec 600$
Quand je fais un retrait de 400$
Alors le retrait est autorisé
Et le solde du compte est de 200$
Impératif
Étapes --> Actions
Déclaratif
Étapes --> Comportements
Slide 57
Slide 57 text
« Feature File »
Slide 58
Slide 58 text
Nos fonctionnalités composées de règles et de
scénarios constituent maintenant une
documentation
Slide 59
Slide 59 text
3
Slide 60
Slide 60 text
Déroulement
Découvrir 1
Atelier de
découverte
Exemple
Spécifier 2
fnc.feature
Scénarios
Description du contexte
- Règle
- Règle
1
2
3 TDD
Piloter 3
Image du rapport: http://blog.jonasbandi.net/2010/03/classifying-bdd-tools-unit-test-driven.html
Automatisation des tests
Feature:
Scenario: …
Given …
When …
Then ..
Scenario: ...
Automatisation
Scénario
Étant donné un scénario
Quand nous l’avons
Alors il est le point rassembleur
Un scénario pour tous!
Spécification
Tests automatisés
Documentation
<
Livraison
&
Slide 65
Slide 65 text
Tests fonctionnels automatisés
≠
Tests bout-en-bout via l’interface et la BD
Slide 66
Slide 66 text
Image par Gamma-Ray Productions sur Flickr
Attention en automatisant !
% du portfolio
de tests auto. Large (L)
Moyen (M)
Petit (S)
~10%
~20%
~70%
Bout-en-bout
Toutes composantes
Une ou quelques classes
Une composante
intégrée
Fragilité des tests
Slide 67
Slide 67 text
No content
Slide 68
Slide 68 text
En résumé…
68
1 En découvrant ensemble les scénarios et les règles, nous
bâtissons une compréhension commune et forte.
2 Les scénarios servent d’exemples pour piloter le
développement.
3 Les scénarios sont attachés à des tests automatisés qui
démontrent l’avancement et préviennent la régression
4 Les scénarios et règles documentent la fonctionnalité de
manière permanente et vivante…
Slide 69
Slide 69 text
Cynefin Framework
Quand utiliser ou ne pas utiliser le BDD?
69
Simple
Compliqué
Complexe
Chaos
Slide 70
Slide 70 text
Le BDD est particulièrement utile pour découvrir
et spécifier des règles impliquant de la logique
d’affaires complexe
Slide 71
Slide 71 text
merci .
Slide 72
Slide 72 text
Site
elapsetech.com
Twitter
@fbourbonnais
Courriel
[email protected][email protected]
conferences.elapsetech.com
Toutes nos présentations
conferences.elapsetech.com
/bdd-spec-affaires
Diapositives et références
Félix-Antoine Bourbonnais
Pascal Roy
@
Slide 73
Slide 73 text
No content
Slide 74
Slide 74 text
Découpage vers une fonctionnalité
Vision
Objectifs d'affaires
Capacités
Fonctionnalités
Stories
Règles d'affaires / COS
Scénarios / Exemples
Code
Pourquoi ?
Comment ?
Quoi ?
Slide 75
Slide 75 text
Quand et où dans mon processus de développement?
Pourquoi ?
Comment ?
Temps
Objectifs
d’affaires
Activités de
l’utilisateur
Fonctionnalité
Capacités
Stories Règles Scénarios
Tests &
Code
Slide 76
Slide 76 text
76
Sprint courant
Story A
✔️✔️✔️✔️
+ Exemple 1 + 2+3
Story B
✔️✔️✔️✔️
Story C
✔️✔️✔️✔️
Story X
✔️ ? ✔️ ?
+ Exemple 1 + 2+3
+ Exemple 1 + 2+3
+ Exemple 1 + ??
Story Z
✔️ ? ✔️ ?
Story ??
Temps
Sprint -1
Sprint -2
Sprint N