31

Faites revivre vos spécifications scrumday 2014

Embed Size (px)

Citation preview

Page 1: Faites revivre vos spécifications   scrumday 2014
Page 2: Faites revivre vos spécifications   scrumday 2014

Yannick Grenzinger & Clément Rochas

Faites (re)vivre vos spécifications

Page 3: Faites revivre vos spécifications   scrumday 2014

MERCI À NOS SPONSORS

Page 4: Faites revivre vos spécifications   scrumday 2014

Cette présentation est...

• Un REX!• Une démo de mise en place de tests

automatisés!• Un exemple de développement agile

en dans un milieu qui ne l’est pas…

Page 5: Faites revivre vos spécifications   scrumday 2014

“Quand le client m’affirme qu’il ne retrouve pas les fonctionnalités precisées dans sa spec”

Page 6: Faites revivre vos spécifications   scrumday 2014

“Quand je viens de finir les specs et que je n’y ai rien compris”

Page 7: Faites revivre vos spécifications   scrumday 2014

Too long!

didn’t read

Page 8: Faites revivre vos spécifications   scrumday 2014
Page 9: Faites revivre vos spécifications   scrumday 2014

Le contexte

• Opérateur téléphonique!• Pas agile dans le process!• Culture du héro

Page 10: Faites revivre vos spécifications   scrumday 2014

Le concept de l’appli

Page 11: Faites revivre vos spécifications   scrumday 2014
Page 12: Faites revivre vos spécifications   scrumday 2014

Warning: L’image suivante peut heurter la sensibilité des plus agile d’entre nous.

Page 13: Faites revivre vos spécifications   scrumday 2014

LOT 1

Page 14: Faites revivre vos spécifications   scrumday 2014
Page 15: Faites revivre vos spécifications   scrumday 2014

Quand la loi ne peut plus rien pour vous, il vous reste un recours...

The A(gile)TEAM

Page 16: Faites revivre vos spécifications   scrumday 2014

Racontez moi tout depuis le début...

Page 17: Faites revivre vos spécifications   scrumday 2014

Décrire les comportements langage commun

(Given)(Etant donné) un contexte

(When)(Lorsque) l'utilisateur effectue certaines actions

(Then)(Alors) on doit pouvoir constater telles conséquences

Page 18: Faites revivre vos spécifications   scrumday 2014

Rétro story map

Page 19: Faites revivre vos spécifications   scrumday 2014

Les user stories composés

En tant d'utilisateur Je veux quelque chose de très complexe !afin de faire l’action A

En tant que composant X !Je veux implémenter l’opération Y !afin de faire l’action C !et contribuer à A

En tant que composant Z !Je veux implémenter l’opération X afin de faire l’action B !et contribuer à A

Utilisateur

Composant

Page 20: Faites revivre vos spécifications   scrumday 2014

Spécifier par l’exemple

Exemples BDD

Tests d’acceptation

Spécifications liées aux domaines métiers

Décrivent Vérifient

se transforment

Le tout automatisé

Page 21: Faites revivre vos spécifications   scrumday 2014

Et maintenant comment on automatise?

Page 22: Faites revivre vos spécifications   scrumday 2014

JBehave: Ecrire notre 1er test BDD en 5 min

Un projet avec une classe Panier, nous allons utiliser JBehave

mvn archetype:generate -> 686 -> fr.xebia -> demo-scrumday

Scenario: Calculer le prix total du panier après avoir appliqué une taxe

Given un panier avec un prix total de <prixTotal> euros

And une taxe de <taxe>%

When on calcule le prix total avec la taxe

Then le prix total avec la taxe est de <prixAttendu> euros

Examples:

|prixTotal|taxe|prixAttendu|

| 100 | 0.2 | 120 |

Page 23: Faites revivre vos spécifications   scrumday 2014

Histoire d’un refactoring

Comment le BDD nous a permis de comprendre, de s’approprier et de refactorer le legacy.!

!Story: En tant que catalogue, Je veux valider l'intégrité des groupes d’options!Un peu de contexte! une offre contient X groupeschaque groupe contient X optionsOn veut vérifier que les options des groupes sont cohérentes

Page 24: Faites revivre vos spécifications   scrumday 2014

Notre story sous format BDDScenario: tester l’intégrité des groupes d’options d’un panier clientGiven un groupe Débit Internet d'une offre Mobile Given on <action1> une option Internet Illimité Given on <action2> une option 100mo chaque mois When le catalogue vérifie l'intégrité des groupesThen le statut panier est <statutPanier>Examples:| action1 | action2 | statutPanier || SOUSCRIT | SOUSCRIT | KO || SOUSCRIT | RESILIE | OK |

Page 25: Faites revivre vos spécifications   scrumday 2014

traiter l’étape

Classe

Méthode

Offre

N groupes

N options

récupère les données de l’étape précédente

trier les options sélectionnées suivant le groupe associé

Parcourir les options et vérifier qu’on ne dépasse pas le maximum

Parcourir les groupes et vérifier que chacun a le nombre minimum d’options

compter le nombre d’options proposables dans un groupe

Récupérer le groupe associé à l’option

Step: Vérifier groupe

Page 26: Faites revivre vos spécifications   scrumday 2014

Step: Vérifier groupe

compter le nombre d’options proposables dans un groupe

Classe

Méthode

Offre

N groupes

N options

récupère les données de l’étape précédente

Pour chaque groupe de l’offre, vérifier si le nombre d’options est correct

Calculer le nombre d’options sélectionnés dans un groupe

Page 27: Faites revivre vos spécifications   scrumday 2014

● Jbehave (ou JUnit ou EasyB) ● Selenium/Webdriver ● Rapports

Page 28: Faites revivre vos spécifications   scrumday 2014

Et nous qu’est ce qu’on laisse aux prochains développeurs ?

• Pas de spécifications mais une image à

l’instant T du code;!

• Une cartographie fonctionnelle de l’appli;!

• Des comportements automatisés donc des

tests de non régression;

Page 29: Faites revivre vos spécifications   scrumday 2014

La story map comme gilet par balle

Page 30: Faites revivre vos spécifications   scrumday 2014

Take away➢Adopter un langage commun autour du métier!➢Faire confiance au dev pour le code :-)!➢Augmenter la qualité du code avec des tests de

non régression … métier !!➢Possibilité de reprendre du code legacy en

repartant du métier!➢Être transparent, suivre l’avancement en terme

de fonctionnalité

Page 31: Faites revivre vos spécifications   scrumday 2014

Merci!