SlideShare a Scribd company logo
1 of 55
14.11.2017
Après s’être
organisé en tribus
d’indiens, AXA diffuse
BDD avec les 3 Amigos
Emilie-Anne Guerch – Emmanuel Lehmann
2
Emilie-Anne
GUERCH
coach agile
Emmanuel
LEHMANN
coach craft
Ma mission :
Accompagner les guildes d’AXA France dans le
cadre de la transformation en Feature Teams
d’AXA.
(Product Owner repentie qui a longtemps « écrit »
des BDD)
Ma mission :
Accompagner les tribus dans le cadre de la
transformation vers des pratiques DevOps.
3
13 octobre 2016
14 novembre 2017
4
Le contexte AXA en 2017
5
2011
Adoption de
l’Agile
à la DSI AXA
France
2014
2015-2016
2017
50% des équipes sont
agiles : des constats
qui nous permettent
d’aller plus loin
 Poursuivre la récurrence
des Feedback Métier
 Ancrer l’amélioration du
TTM
 L’agilité ne concerne que
l’équipe Dev/Test. Le
travail reste entier sur les
parties amont et aval.
Expérimentation
des Feature Teams:
l’agilité à l’échelle de
l’organisation
 Équipes agiles de bout en bout
pour limiter les délais
« handover »
 Cycles de développement plus
courts pour mieux répondre aux
ajustements des besoins
 Équipes produit autonomes et
polyvalentes (Business, DSI,
Ops) pour délivrer plus vite la
valeur
 Objectifs business clairs et
partagés pour délivrer les bons
produits
Déploiement des Feature
Team : ONE TEAM.
Expérimentation de
nouvelles pratiques
d’ingénierie
 Le rapprochement avec le
métier pour co-construire nos
produits
 L’amélioration continue de
l’efficacité des équipes
élargies
 Mise en place de nouvelles
pratiques d’ingénierie et
intégration des OPS aux
tribus.
6
Tribu Tribu
Squad Squad Squad Squad Squad Squad Squad Squad
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
PO / BA
Scrum
Master
Soft.
Eng
Testeurs
Une nouvelle
organisation
orientée
« Produit »
Guilde
Dev
7
Nouvelles pratiques d’ingénierie
8
Focus sur
l’axe de
« Pratiques
d’ingénierie
»
Agile
Toolset Software
Craftsmanship
Automation
deployment
&
Monitoring
Software
Factory
Tests Factory
&
Automation
Nouvelles
Pratiques
d’Ingénierie
9
Sofware
Crafsmanship
Software
Factory
Janvier à Juin : 5 tribus
expérimentales
> Septembre : généralisation par vague
Agile
Toolset
1. Pratiques agiles généralisées
2. Plus de notion de contributeurs
3. Pratique 3 amigos
4. Pilotage par les indicateurs
Tests Factory
& Automation
Automation Deployment
& Monitoring
10
Sofware
Crafsmanship
Software
Factory
Janvier à Juin : 5 tribus
expérimentales
> Septembre : généralisation par vague
Agile
Toolset
1. Partage de règles de développement / Clean code
2. Revue de code / Maîtrise de la dette technique
3. Développement piloté par les tests (BDD / TDD)
4. Maitrise performance applicative et sécurité
Tests Factory
& Automation
Automation Deployment
& Monitoring
11
Sofware
Crafsmanship
Software
Factory
Janvier à Juin : 5 tribus
expérimentales
> Septembre : généralisation par vague
Agile
Toolset
1. Utilisation d’un gestionnaire de source (GIT ou SVN)
2. Outillage contrôle qualité
3. Outillage contrôle sécurité applicative
4. Outillage Tests automatisé intégré
Tests Factory
& Automation
Automation Deployment
& Monitoring
12
Sofware
Crafsmanship
Software
Factory
Janvier à Juin : 5 tribus
expérimentales
> Septembre : généralisation par vague
Agile
Toolset
1. Stratégie de tests définie
2. Pair testing
3. Automatisation des parcours clés
4. Intégration des tests à la PIC (bouchonnage et JDD)
Tests Factory
& Automation
Automation Deployment
& Monitoring
13
Sofware
Crafsmanship
Software
Factory
Janvier à Juin : 5 tribus
expérimentales
> Septembre : généralisation par vague
Agile
Toolset
1. OPS dédiés à la tribu
2. Déploiement automatisé via la PIC
3. Monitoring des services
4. Déploiement continu sans arrêt de service
Tests Factory
& Automation
Automation Deployment
& Monitoring
14
Les 3 amigos au cœur des nouvelles
pratiques
15
Slide qui part du V pour arriver sur une
boule
Software
Craftsmanship
Software
Factory
Agile
Toolse
t
Tests Factory
& Automation
Automation Deployment
& Monitoring
16
La
révélation
2017 - AXA France
C’est fou ! Quand on se parle, on comprend
mieux !
17
Comment
faisait-on
avant ?
PO
Recueille le
besoin
1
BA
Écrit le descriptif
de l'US
2
Equipe de développement
réalise la fonctionnalité
4
Equipe de test
écrit les cas de tests et la
campagne de test
5
Le testeur compare sa compréhension de la
fonctionnalité qui a été rédigé par ce que le
business analyst a compris de ce que le
Product owner a recueilli comme
besoin avec ce que le développeur
a compris de la fonctionnalité
qui a été rédigé par ce que le
business analyst a compris
de ce que le Product
owner a recueilli
comme besoin.
Testeur
écrit les BDD
3
6
Equipe de test
teste
18
PO / BA
recueillent le
besoin auprès
des experts
métier
Software
Craftsmanship
Software
Factory
Agile
Toolse
t
Tests Factory
& Automation
Automation Deployment
& Monitoring
PO / Dev / Testeur
découvrent et
spécifient le
besoin
Vision, objectifs
et capacité
Fonctionnalités
+ règles
+ liste scenarios
Equipe de développement
réalise la fonctionnalité
Equipe
teste la fonctionnalité
(basé sur les scenarios)
1 2
3
4
5
Les scenarios servent de
documentation et de
mesure du progrès
Rapports de
tests
(avancement)
19
PO / BA
recueillent le
besoin auprès
des experts
métier
Software
Craftsmanship
Software
Factory
Agile
Toolse
t
Tests Factory
& Automation
Automation Deployment
& Monitoring
Vision, objectifs
et capacité
Fonctionnalités
+ règles
+ liste scenarios
Equipe de développement
réalise la fonctionnalité
Equipe
teste la fonctionnalité
(basé sur les scenarios)
1
3
4
5
Les scenarios servent de
documentation et de
mesure du progrès
Rapports de
tests
(avancement)
20
Comment se
passe un
atelier 3
amigos ?
Celui qui connait le besoin
Celui qui va présenter le besoin
Celui qui va lister les règles (nommées)
Celui qui va expliquer les termes métier
PO ou
BA
Celui qui va implémenter​
Celui qui va identifier les briques / couches impactées
Celui qui va orienter les scénarios vers les couches à modifier
​Celui qui va demander des exemples valorisés​
Celui qui va demander des bouchons précis​
Dev
Celui qui va concevoir les cas de tests et faire le pair test
Celui qui va concevoir les JDD
Celui qui va concevoir les bouchons
Celui qui a une vision de la stratégie de testsTesteur
Attention :
Interdiction de sortir de l’atelier
tant que tout le monde n’a pas
compris ou n’est pas d’accord
sur l’exhaustivité des cas.
21
Nos conseils 1. Ne pas multiplier le nombre de règle par scénario
2. Ne pas utiliser d’élément IHM ou trop technique
3. Utiliser des outils
 Diagramme
 Tableau Excel
 WireFrame
4. Utiliser des exemples précis de la vraie vie
 Utiliser les persona
5. Example mapping
A la sortie de l’atelier :
• Les règles sont priorisées
Trouver les règles qui apportent le maximum de valeur
• Chaque règle fait l’objet d’au moins un exemple/scénario
22
Exemple
d’output d’un
atelier 3
amigos
Gestion des Virements
Virement simple Virement hors provision Virement plafonné
Solde Cpt Chèque = 500€
Solde Cpt Epargne = 0€
Vire 100€ Cpt Ch vers Cpt Ep
Solde Cpt Chèque = 400€
Solde Cpt Epargne = 100€
Virement Confirmé
Solde Cpt Chèque = 50€
Solde Cpt Epargne = 1000€
Vire 100€ Cpt Ch vers Cpt Ep
Solde Cpt Chèque = 50€
Solde Cpt Epargne = 1000€
Virement KO HORS PROVISION
Solde Cpt Chèque = 1000€
Solde Cpt Epargne = 0€
Limite virement = 500€
Vire 501€ Cpt Ch vers Cpt Ep
Solde Cpt Chèque = 1000€
Solde Cpt Epargne = 0€
Virement KO PLAFOND DEPASSE
23
Exemple
d’output d’un
atelier 3
amigos
Dans le but de pouvoir gérer mes comptes
En tant que client banque
Je souhaite pouvoir effectuer des virements entre mes comptes
RG1 : virement simple, je vire X€ d'un compte A vers le compte B,
le solde est impacté dans les deux comptes.
RG2 : virement hors provision, solde A insuffisant
RG3 : virement plafonné
Virement simple
• Solde Cpt Chèque =500€
• Solde Cpt Epargne =0€
 Vire 100€ Cpt Ch vers Cpt Ep
 Solde Cpt Chèque =400€
 Solde Cpt Epargne =100€
 Virement OK
Virement hors provision
• Solde Cpt Chèque =50€
• Solde Cpt Epargne =1000€
 Vire 100€ Cpt Ch vers Cpt Ep
 Solde Cpt Chèque =50€
 Solde Cpt Epargne =1000€
 Virement KO HORS PROVISION
Virement plafonné
• Solde Cpt Chèque =1000€
• Solde Cpt Epargne =0€
• Limite virement =500€
 Vire 501€ Cpt Ch vers Cpt Ep
 Solde Cpt Chèque =1000€
 Solde Cpt Epargne =0€
 Virement KO PLAFOND DEPASSE
@RG1
Scenario: Virement simple
Given j'ai un compte cheque avec un solde de 500€
Given j'ai un compte épargne avec un solde de 0€
When j'effectue un virement de 100€ du compte cheque vers le compte épargne
Then le solde du compte cheque est 400€
Then le solde du compte épargne est 100€
Then le virement est confirmé
@RG2
Scenario: Virement hors provision
Given j'ai un compte cheque avec un solde de 50€
Given j'ai un compte épargne avec un solde de 1000€
When j'effectue un virement de 100€ du compte cheque vers le compte épargne
Then le solde du compte cheque est 50€
Then le solde du compte épargne est 1000€
Then le virement est refusé pour motif hors provision
@RG3
Scenario: Virement plafonné
Given j'ai un compte cheque avec un solde de 1000€
Given j'ai un compte épargne avec un solde de 0€
Given la limite de virement est 500€
When j'effectue un virement de 501€ du compte cheque vers le compte épargne
Then le solde du compte cheque est 1000€
Then le solde du compte épargne est 0€
Then le virement est refusé pour motif plafond dépassé
24
BDD / TDD
25
Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
BDD / TDD
26
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Commen
t
[Given(@"j'ai un compte cheque avec un solde de (.*)€")]
public void GivenJAiUnCompteChequeAvecUnSoldeDe(int solde)
[Given(@"j'ai un compte épargne avec un solde de (.*)€")]
public void GivenJAiUnCompteEpargneAvecUnSoldeDe(int solde)
[Given(@"la limite de virement est (.*)€")]
public void GivenLaLimiteDeVirementEst(int limite)
27
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Commen
t
[When(@"j'effectue un virement de (.*)€ du compte cheque vers le compte épargne")]
public void WhenJEffectueUnVirementDeDuCompteChequeVersLeCompteEpargne(int montant)
[Then(@"le solde du compte cheque est (.*)€")]
public void ThenLeSoldeDuCompteChequeEst(int solde)
[Then(@"le solde du compte épargne est (.*)€")]
public void ThenLeSoldeDuCompteEpargneEst(int solde)
28
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Commen
t
[Then(@"le virement est confirmé")]
public void ThenLeVirementEstConfirme()
[Then(@"le virement est refusé pour motif hors provision")]
public void ThenLeVirementEstRefusePourMotifHorsProvision()
[Then(@"le virement est refusé pour motif plafond dépassé")]
public void ThenLeVirementEstRefusePourMotifPlafondDepasse()
29
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Compte CompteCheque = new Compte();
[Given(@"j'ai un compte cheque avec un solde de (.*)€")]
public void GivenJAiUnCompteChequeAvecUnSoldeDe(int solde)
{
CompteCheque.Solde = solde;
}
[Given(@"j'ai un compte épargne avec un solde de (.*)€")]
public void GivenJAiUnCompteEpargneAvecUnSoldeDe(int solde)
{
CompteEpargne.Solde = solde;
}
30
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
[When(@"j'effectue un virement de (.*)€ du compte cheque vers le compte épargne")]
public void WhenJEffectueUnVirementDeDuCompteChequeVersLeCompteEpargne(int montant)
{
StatutVirement = srvVirement.EffectuerVirement(montant, CompteCheque, CompteEpargne);
}
ServiceVirement srvVirement = new ServiceVirement();
RetourVirement StatutVirement;
31
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
[Then(@"le solde du compte cheque est (.*)€")]
public void ThenLeSoldeDuCompteChequeEst(int solde)
{
Assert.AreEqual(solde, CompteCheque.Solde);
}
[Then(@"le solde du compte épargne est (.*)€")]
public void ThenLeSoldeDuCompteEpargneEst(int solde)
{
Assert.AreEqual(solde, CompteEpargne.Solde);
}
[Then(@"le virement est confirmé")]
public void ThenLeVirementEstConfirme()
{
Assert.AreEqual(RetourVirement.Ok, StatutVirement);
}
32
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
33
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
Ecrire du Code
de Production
Ecrire du Code
De Tests Unitaires
TDD
34
BDD / TDD
[TestClass]
public class ServiceVirementDevrait
{
[TestMethod]
public void DebiterUnMontantDuCompteALorsDuVirement()
{
//Arrange
Compte A = new Compte();
A.Solde = 20;
Compte B = new Compte();
ServiceVirement srv = new ServiceVirement();
//Act
var retour = srv.EffectuerVirement(5, A, B);
//Assert
Assert.AreEqual(15, A.Solde);
Assert.AreEqual(RetourVirement.Ok, retour);
}
35
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
Ecrire du Code
de Production
Ecrire du Code
De Tests Unitaires
TDD
36
BDD / TDD
public RetourVirement EffectuerVirement(int montant, Compte
compteDebiteur, Compte compteCrediteur)
{
compteDebiteur.Solde -= montant;
return RetourVirement.Ok;
}
37
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
Ecrire du Code
de Production
Ecrire du Code
De Tests Unitaires
TDD
38
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
Ecrire du Code
de Production
Ecrire du Code
De Tests Unitaires
TDD
39
BDD / TDD
[TestMethod]
public void CrediterUnMontantDuCompteBLorsDuVirement()
{
//Arrange
Compte A = new Compte();
A.Solde = 20;
Compte B = new Compte();
B.Solde = 5;
ServiceVirement srv = new ServiceVirement();
//Act
var retour = srv.EffectuerVirement(5, A, B);
//Assert
Assert.AreEqual(10, B.Solde);
Assert.AreEqual(RetourVirement.Ok, retour);
}
40
BDD / TDD
public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur)
{
compteDebiteur.Solde -= montant;
compteCrediteur.Solde += montant;
return RetourVirement.Ok;
}
41
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
Ecrire du Code
de Production
Vert
Ecrire du Code
De Tests Unitaires
TDD
42
BDD / TDD @RG1
Scenario: Virement simple
Given j'ai un compte cheque avec un solde de 500€
Given j'ai un compte épargne avec un solde de 0€
When j'effectue un virement de 100€ du compte cheque vers le compte épargne
Then le solde du compte cheque est 400€
Then le solde du compte épargne est 100€
Then le virement est confirmé
@RG2
Scenario: Virement hors provision
Given j'ai un compte cheque avec un solde de 50€
Given j'ai un compte épargne avec un solde de 1000€
When j'effectue un virement de 100€ du compte cheque vers le compte épargne
Then le solde du compte cheque est 50€
Then le solde du compte épargne est 1000€
Then le virement est refusé pour motif hors provision
@RG3
Scenario: Virement plafonné
Given j'ai un compte cheque avec un solde de 1000€
Given j'ai un compte épargne avec un solde de 0€
Given la limite de virement est 500€
When j'effectue un virement de 501€ du compte cheque vers le compte épargne
Then le solde du compte cheque est 1000€
Then le solde du compte épargne est 0€
Then le virement est refusé pour motif plafond dépassé
43
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
44
BDD / TDD [TestMethod]
public void
NePasDebiterUnMontantSuperieurAuSoldeDuCompteALorsDuVirement()
{
//Arrange
Compte A = new Compte();
A.Solde = 20;
Compte B = new Compte();
B.Solde = 5;
ServiceVirement srv = new ServiceVirement();
//Act
var retour = srv.EffectuerVirement(21, A, B);
//Assert
Assert.AreEqual(20, A.Solde);
Assert.AreEqual(5, B.Solde);
Assert.AreEqual(RetourVirement.SoldeDepasse, retour);
}
45
BDD / TDD
public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur)
{
if (montant > compteDebiteur.Solde)
{
return RetourVirement.SoldeDepasse;
}
compteDebiteur.Solde -= montant;
compteCrediteur.Solde += montant;
return RetourVirement.Ok;
}
46
BDD / TDD
[TestMethod]
public void
NePasDebiterUnMontantSuperieurAuPlafondLorsDuVirement()
{
//Arrange
Compte A = new Compte();
A.Solde = 20;
Compte B = new Compte();
B.Solde = 5;
ServiceVirement srv = new ServiceVirement();
srv.Plafond = 2;
//Act
var retour = srv.EffectuerVirement(5, A, B);
//Assert
Assert.AreEqual(20, A.Solde);
Assert.AreEqual(5, B.Solde);
Assert.AreEqual(RetourVirement.PlafondDepasse, retour);
}
47
BDD / TDD public class ServiceVirement
{
public int Plafond { get; internal set; }
public ServiceVirement()
{
//Todo : demander la limite de plafond par défaut
Plafond = 1000;
}
public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur)
{
if (montant > compteDebiteur.Solde)
{
return RetourVirement.SoldeDepasse;
}
if (montant > Plafond)
{
return RetourVirement.PlafondDepasse;
}
compteDebiteur.Solde -= montant;
compteCrediteur.Solde += montant;
return RetourVirement.Ok;
}
48
BDD / TDD Besoin
Fonctionnalité
User StoryScenarios
Etapes
(steps)
DEV + QSI +
PO
Pourquo
i
Qui
Quoi
Définition d’étapes
Ecrire du Code de Test
Commen
t
Roug
e
Ecrire du Code
de Production
Vert
Ecrire du Code
De Tests Unitaires
Refactoring
TDD
49
BDD / TDD
En résumé
En découvrant ensemble les scénarios et les
règles, nous bâtissons une compréhension
commune et forte
Les scénarios servent d’exemples pour piloter
le développement
Les scénarios sont attachés à des tests
automatisés qui démontrent l’avancement et
préviennent la régression
Les scénarios et règles documentent la
fonctionnalité de manière permanente et
vivante…
50
Pourquoi il faut vous y mettre ?
51
Efficace
et pas
cher
52
Sensibilisation des interlocuteurs métier et
direction
(2015)
53
Merci !
54
Teaser
55
adopteunamigos.com
Venez écrire des BDD avec nous
Conférence 1 à 14h

More Related Content

What's hot

Example Mapping in the Wild
Example Mapping in the WildExample Mapping in the Wild
Example Mapping in the WildCeri Shaw
 
User Stories et animation des ateliers utilisateur
User Stories et animation des ateliers utilisateurUser Stories et animation des ateliers utilisateur
User Stories et animation des ateliers utilisateurPierre E. NEIS
 
Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"
Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"
Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"OCTO Technology
 
Club numica - Tableaux de bord DSI - ISlean consulting
Club numica - Tableaux de bord DSI - ISlean consultingClub numica - Tableaux de bord DSI - ISlean consulting
Club numica - Tableaux de bord DSI - ISlean consultingISlean consulting
 
Jeu indicateurs et kpi 2015
Jeu indicateurs et kpi 2015Jeu indicateurs et kpi 2015
Jeu indicateurs et kpi 2015CIPE
 
VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2
VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2
VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2COMPETENSIS
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testingjubehr
 
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...Stéphane Traumat
 
Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...
Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...
Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...Agile En Seine
 
Whitecape - Odoo - Offre ERP
Whitecape - Odoo - Offre ERPWhitecape - Odoo - Offre ERP
Whitecape - Odoo - Offre ERPSouheil Ladjimi
 
Intégrer un progiciel en mode agile à la RATP ? Défi relevé !
Intégrer un progiciel en mode agile à la RATP ? Défi relevé !Intégrer un progiciel en mode agile à la RATP ? Défi relevé !
Intégrer un progiciel en mode agile à la RATP ? Défi relevé !Agile En Seine
 
Stratégie et performance
Stratégie et performanceStratégie et performance
Stratégie et performanceXL Groupe
 
Les tableaux de bord & les indicateurs de performance
Les tableaux de bord & les indicateurs de performanceLes tableaux de bord & les indicateurs de performance
Les tableaux de bord & les indicateurs de performanceAhmed Mesellem
 
La gestion de projets agile avec SAFe [webinaire]
La gestion de projets agile avec SAFe [webinaire]La gestion de projets agile avec SAFe [webinaire]
La gestion de projets agile avec SAFe [webinaire]Technologia Formation
 
Atelier planification
Atelier planificationAtelier planification
Atelier planificationEnactusFrance
 
L'agilité en quelques slides
L'agilité en quelques slidesL'agilité en quelques slides
L'agilité en quelques slidesNicolas Deverge
 

What's hot (20)

Example Mapping in the Wild
Example Mapping in the WildExample Mapping in the Wild
Example Mapping in the Wild
 
User Stories et animation des ateliers utilisateur
User Stories et animation des ateliers utilisateurUser Stories et animation des ateliers utilisateur
User Stories et animation des ateliers utilisateur
 
Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"
Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"
Petit-déjeuner "Delivery Agile : Retrouvez le sommeil"
 
Club numica - Tableaux de bord DSI - ISlean consulting
Club numica - Tableaux de bord DSI - ISlean consultingClub numica - Tableaux de bord DSI - ISlean consulting
Club numica - Tableaux de bord DSI - ISlean consulting
 
Jeu indicateurs et kpi 2015
Jeu indicateurs et kpi 2015Jeu indicateurs et kpi 2015
Jeu indicateurs et kpi 2015
 
VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2
VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2
VALUE STREAM & CHAINE DE VALEUR - Guide de survie en Business Architecture n°2
 
Methodologie projet
Methodologie projet Methodologie projet
Methodologie projet
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testing
 
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
 
Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...
Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...
Coaching Agile : Et si tout se jouait au début et à la fin ? - Agile en Seine...
 
Management de projet
Management de projetManagement de projet
Management de projet
 
Whitecape - Odoo - Offre ERP
Whitecape - Odoo - Offre ERPWhitecape - Odoo - Offre ERP
Whitecape - Odoo - Offre ERP
 
Intégrer un progiciel en mode agile à la RATP ? Défi relevé !
Intégrer un progiciel en mode agile à la RATP ? Défi relevé !Intégrer un progiciel en mode agile à la RATP ? Défi relevé !
Intégrer un progiciel en mode agile à la RATP ? Défi relevé !
 
La gestion de projet agile
La gestion de projet agileLa gestion de projet agile
La gestion de projet agile
 
Stratégie et performance
Stratégie et performanceStratégie et performance
Stratégie et performance
 
La technologie Blockchain - 1ere approche
La technologie Blockchain - 1ere approcheLa technologie Blockchain - 1ere approche
La technologie Blockchain - 1ere approche
 
Les tableaux de bord & les indicateurs de performance
Les tableaux de bord & les indicateurs de performanceLes tableaux de bord & les indicateurs de performance
Les tableaux de bord & les indicateurs de performance
 
La gestion de projets agile avec SAFe [webinaire]
La gestion de projets agile avec SAFe [webinaire]La gestion de projets agile avec SAFe [webinaire]
La gestion de projets agile avec SAFe [webinaire]
 
Atelier planification
Atelier planificationAtelier planification
Atelier planification
 
L'agilité en quelques slides
L'agilité en quelques slidesL'agilité en quelques slides
L'agilité en quelques slides
 

Similar to Diffusion de la méthode BDD chez AXA via les 3 amigos

Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...
Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...
Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...OCTO Technology
 
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...TelecomValley
 
REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)
REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)
REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)Couthaïer FARFRA
 
Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02
Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02
Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02Pierre Hervouet
 
6 L'enregistrement de votre équipe
6 L'enregistrement de votre équipe6 L'enregistrement de votre équipe
6 L'enregistrement de votre équipePotentialCom
 
Présentation rider soirée innovation compétitivité organisation
Présentation rider soirée innovation compétitivité organisationPrésentation rider soirée innovation compétitivité organisation
Présentation rider soirée innovation compétitivité organisationRIDERInnovationTPE
 
Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?Danka Zindovic-Dana
 
L'Agilité - breakfast IDC devops, 18 septembre 2014
L'Agilité  - breakfast IDC devops, 18 septembre 2014L'Agilité  - breakfast IDC devops, 18 septembre 2014
L'Agilité - breakfast IDC devops, 18 septembre 2014Xavier Warzee
 
Le BDD est bien plus qu’une technique de test!
 Le BDD est bien plus qu’une technique de test! Le BDD est bien plus qu’une technique de test!
Le BDD est bien plus qu’une technique de test!Elapse Technologies
 
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...OCTO Technology
 
Le long chemin du PMU vers la tech company
Le long chemin du PMU vers la tech companyLe long chemin du PMU vers la tech company
Le long chemin du PMU vers la tech companyAgile En Seine
 
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Publicis Sapient Engineering
 
Les outils de base du Lean
Les outils de base du LeanLes outils de base du Lean
Les outils de base du LeanXL Groupe
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012agnes_crepet
 
Conférence Lean Kanban France 2013
Conférence Lean Kanban France 2013Conférence Lean Kanban France 2013
Conférence Lean Kanban France 2013Yannick Quenec'hdu
 
Meet up - qu'on me donne l'envie de Groomer
Meet up - qu'on me donne l'envie de GroomerMeet up - qu'on me donne l'envie de Groomer
Meet up - qu'on me donne l'envie de GroomerAlexandre Quach
 
Objectif Optimisation : améliorez l’efficacité de votre Service Client !
Objectif Optimisation : améliorez l’efficacité de votre Service Client !Objectif Optimisation : améliorez l’efficacité de votre Service Client !
Objectif Optimisation : améliorez l’efficacité de votre Service Client !Eloquant
 

Similar to Diffusion de la méthode BDD chez AXA via les 3 amigos (20)

Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...
Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...
Petit-Déjeuner OCTO "Cultiver l’art du code de qualité en entreprise" Partie ...
 
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
 
REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)
REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)
REX Kanban dans plusieurs contextes, par Couthaïer Farfra (Agile4Me)
 
Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02
Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02
Vouspouvezignorerrlescontroleursdegestion 140403045224-phpapp02
 
6 L'enregistrement de votre équipe
6 L'enregistrement de votre équipe6 L'enregistrement de votre équipe
6 L'enregistrement de votre équipe
 
Présentation rider soirée innovation compétitivité organisation
Présentation rider soirée innovation compétitivité organisationPrésentation rider soirée innovation compétitivité organisation
Présentation rider soirée innovation compétitivité organisation
 
Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?
 
L'Agilité - breakfast IDC devops, 18 septembre 2014
L'Agilité  - breakfast IDC devops, 18 septembre 2014L'Agilité  - breakfast IDC devops, 18 septembre 2014
L'Agilité - breakfast IDC devops, 18 septembre 2014
 
Les pratiques Scrum
Les pratiques ScrumLes pratiques Scrum
Les pratiques Scrum
 
Le BDD est bien plus qu’une technique de test!
 Le BDD est bien plus qu’une technique de test! Le BDD est bien plus qu’une technique de test!
Le BDD est bien plus qu’une technique de test!
 
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
 
Le long chemin du PMU vers la tech company
Le long chemin du PMU vers la tech companyLe long chemin du PMU vers la tech company
Le long chemin du PMU vers la tech company
 
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
 
Enjeux kanban
Enjeux kanbanEnjeux kanban
Enjeux kanban
 
Les outils de base du Lean
Les outils de base du LeanLes outils de base du Lean
Les outils de base du Lean
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012
 
Conférence Lean Kanban France 2013
Conférence Lean Kanban France 2013Conférence Lean Kanban France 2013
Conférence Lean Kanban France 2013
 
Meet up - qu'on me donne l'envie de Groomer
Meet up - qu'on me donne l'envie de GroomerMeet up - qu'on me donne l'envie de Groomer
Meet up - qu'on me donne l'envie de Groomer
 
Objectif Optimisation : améliorez l’efficacité de votre Service Client !
Objectif Optimisation : améliorez l’efficacité de votre Service Client !Objectif Optimisation : améliorez l’efficacité de votre Service Client !
Objectif Optimisation : améliorez l’efficacité de votre Service Client !
 
qualité.pdf
qualité.pdfqualité.pdf
qualité.pdf
 

Recently uploaded

Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 

Recently uploaded (8)

Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 

Diffusion de la méthode BDD chez AXA via les 3 amigos

  • 1. 14.11.2017 Après s’être organisé en tribus d’indiens, AXA diffuse BDD avec les 3 Amigos Emilie-Anne Guerch – Emmanuel Lehmann
  • 2. 2 Emilie-Anne GUERCH coach agile Emmanuel LEHMANN coach craft Ma mission : Accompagner les guildes d’AXA France dans le cadre de la transformation en Feature Teams d’AXA. (Product Owner repentie qui a longtemps « écrit » des BDD) Ma mission : Accompagner les tribus dans le cadre de la transformation vers des pratiques DevOps.
  • 3. 3 13 octobre 2016 14 novembre 2017
  • 5. 5 2011 Adoption de l’Agile à la DSI AXA France 2014 2015-2016 2017 50% des équipes sont agiles : des constats qui nous permettent d’aller plus loin  Poursuivre la récurrence des Feedback Métier  Ancrer l’amélioration du TTM  L’agilité ne concerne que l’équipe Dev/Test. Le travail reste entier sur les parties amont et aval. Expérimentation des Feature Teams: l’agilité à l’échelle de l’organisation  Équipes agiles de bout en bout pour limiter les délais « handover »  Cycles de développement plus courts pour mieux répondre aux ajustements des besoins  Équipes produit autonomes et polyvalentes (Business, DSI, Ops) pour délivrer plus vite la valeur  Objectifs business clairs et partagés pour délivrer les bons produits Déploiement des Feature Team : ONE TEAM. Expérimentation de nouvelles pratiques d’ingénierie  Le rapprochement avec le métier pour co-construire nos produits  L’amélioration continue de l’efficacité des équipes élargies  Mise en place de nouvelles pratiques d’ingénierie et intégration des OPS aux tribus.
  • 6. 6 Tribu Tribu Squad Squad Squad Squad Squad Squad Squad Squad PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs PO / BA Scrum Master Soft. Eng Testeurs Une nouvelle organisation orientée « Produit » Guilde Dev
  • 8. 8 Focus sur l’axe de « Pratiques d’ingénierie » Agile Toolset Software Craftsmanship Automation deployment & Monitoring Software Factory Tests Factory & Automation Nouvelles Pratiques d’Ingénierie
  • 9. 9 Sofware Crafsmanship Software Factory Janvier à Juin : 5 tribus expérimentales > Septembre : généralisation par vague Agile Toolset 1. Pratiques agiles généralisées 2. Plus de notion de contributeurs 3. Pratique 3 amigos 4. Pilotage par les indicateurs Tests Factory & Automation Automation Deployment & Monitoring
  • 10. 10 Sofware Crafsmanship Software Factory Janvier à Juin : 5 tribus expérimentales > Septembre : généralisation par vague Agile Toolset 1. Partage de règles de développement / Clean code 2. Revue de code / Maîtrise de la dette technique 3. Développement piloté par les tests (BDD / TDD) 4. Maitrise performance applicative et sécurité Tests Factory & Automation Automation Deployment & Monitoring
  • 11. 11 Sofware Crafsmanship Software Factory Janvier à Juin : 5 tribus expérimentales > Septembre : généralisation par vague Agile Toolset 1. Utilisation d’un gestionnaire de source (GIT ou SVN) 2. Outillage contrôle qualité 3. Outillage contrôle sécurité applicative 4. Outillage Tests automatisé intégré Tests Factory & Automation Automation Deployment & Monitoring
  • 12. 12 Sofware Crafsmanship Software Factory Janvier à Juin : 5 tribus expérimentales > Septembre : généralisation par vague Agile Toolset 1. Stratégie de tests définie 2. Pair testing 3. Automatisation des parcours clés 4. Intégration des tests à la PIC (bouchonnage et JDD) Tests Factory & Automation Automation Deployment & Monitoring
  • 13. 13 Sofware Crafsmanship Software Factory Janvier à Juin : 5 tribus expérimentales > Septembre : généralisation par vague Agile Toolset 1. OPS dédiés à la tribu 2. Déploiement automatisé via la PIC 3. Monitoring des services 4. Déploiement continu sans arrêt de service Tests Factory & Automation Automation Deployment & Monitoring
  • 14. 14 Les 3 amigos au cœur des nouvelles pratiques
  • 15. 15 Slide qui part du V pour arriver sur une boule Software Craftsmanship Software Factory Agile Toolse t Tests Factory & Automation Automation Deployment & Monitoring
  • 16. 16 La révélation 2017 - AXA France C’est fou ! Quand on se parle, on comprend mieux !
  • 17. 17 Comment faisait-on avant ? PO Recueille le besoin 1 BA Écrit le descriptif de l'US 2 Equipe de développement réalise la fonctionnalité 4 Equipe de test écrit les cas de tests et la campagne de test 5 Le testeur compare sa compréhension de la fonctionnalité qui a été rédigé par ce que le business analyst a compris de ce que le Product owner a recueilli comme besoin avec ce que le développeur a compris de la fonctionnalité qui a été rédigé par ce que le business analyst a compris de ce que le Product owner a recueilli comme besoin. Testeur écrit les BDD 3 6 Equipe de test teste
  • 18. 18 PO / BA recueillent le besoin auprès des experts métier Software Craftsmanship Software Factory Agile Toolse t Tests Factory & Automation Automation Deployment & Monitoring PO / Dev / Testeur découvrent et spécifient le besoin Vision, objectifs et capacité Fonctionnalités + règles + liste scenarios Equipe de développement réalise la fonctionnalité Equipe teste la fonctionnalité (basé sur les scenarios) 1 2 3 4 5 Les scenarios servent de documentation et de mesure du progrès Rapports de tests (avancement)
  • 19. 19 PO / BA recueillent le besoin auprès des experts métier Software Craftsmanship Software Factory Agile Toolse t Tests Factory & Automation Automation Deployment & Monitoring Vision, objectifs et capacité Fonctionnalités + règles + liste scenarios Equipe de développement réalise la fonctionnalité Equipe teste la fonctionnalité (basé sur les scenarios) 1 3 4 5 Les scenarios servent de documentation et de mesure du progrès Rapports de tests (avancement)
  • 20. 20 Comment se passe un atelier 3 amigos ? Celui qui connait le besoin Celui qui va présenter le besoin Celui qui va lister les règles (nommées) Celui qui va expliquer les termes métier PO ou BA Celui qui va implémenter​ Celui qui va identifier les briques / couches impactées Celui qui va orienter les scénarios vers les couches à modifier ​Celui qui va demander des exemples valorisés​ Celui qui va demander des bouchons précis​ Dev Celui qui va concevoir les cas de tests et faire le pair test Celui qui va concevoir les JDD Celui qui va concevoir les bouchons Celui qui a une vision de la stratégie de testsTesteur Attention : Interdiction de sortir de l’atelier tant que tout le monde n’a pas compris ou n’est pas d’accord sur l’exhaustivité des cas.
  • 21. 21 Nos conseils 1. Ne pas multiplier le nombre de règle par scénario 2. Ne pas utiliser d’élément IHM ou trop technique 3. Utiliser des outils  Diagramme  Tableau Excel  WireFrame 4. Utiliser des exemples précis de la vraie vie  Utiliser les persona 5. Example mapping A la sortie de l’atelier : • Les règles sont priorisées Trouver les règles qui apportent le maximum de valeur • Chaque règle fait l’objet d’au moins un exemple/scénario
  • 22. 22 Exemple d’output d’un atelier 3 amigos Gestion des Virements Virement simple Virement hors provision Virement plafonné Solde Cpt Chèque = 500€ Solde Cpt Epargne = 0€ Vire 100€ Cpt Ch vers Cpt Ep Solde Cpt Chèque = 400€ Solde Cpt Epargne = 100€ Virement Confirmé Solde Cpt Chèque = 50€ Solde Cpt Epargne = 1000€ Vire 100€ Cpt Ch vers Cpt Ep Solde Cpt Chèque = 50€ Solde Cpt Epargne = 1000€ Virement KO HORS PROVISION Solde Cpt Chèque = 1000€ Solde Cpt Epargne = 0€ Limite virement = 500€ Vire 501€ Cpt Ch vers Cpt Ep Solde Cpt Chèque = 1000€ Solde Cpt Epargne = 0€ Virement KO PLAFOND DEPASSE
  • 23. 23 Exemple d’output d’un atelier 3 amigos Dans le but de pouvoir gérer mes comptes En tant que client banque Je souhaite pouvoir effectuer des virements entre mes comptes RG1 : virement simple, je vire X€ d'un compte A vers le compte B, le solde est impacté dans les deux comptes. RG2 : virement hors provision, solde A insuffisant RG3 : virement plafonné Virement simple • Solde Cpt Chèque =500€ • Solde Cpt Epargne =0€  Vire 100€ Cpt Ch vers Cpt Ep  Solde Cpt Chèque =400€  Solde Cpt Epargne =100€  Virement OK Virement hors provision • Solde Cpt Chèque =50€ • Solde Cpt Epargne =1000€  Vire 100€ Cpt Ch vers Cpt Ep  Solde Cpt Chèque =50€  Solde Cpt Epargne =1000€  Virement KO HORS PROVISION Virement plafonné • Solde Cpt Chèque =1000€ • Solde Cpt Epargne =0€ • Limite virement =500€  Vire 501€ Cpt Ch vers Cpt Ep  Solde Cpt Chèque =1000€  Solde Cpt Epargne =0€  Virement KO PLAFOND DEPASSE @RG1 Scenario: Virement simple Given j'ai un compte cheque avec un solde de 500€ Given j'ai un compte épargne avec un solde de 0€ When j'effectue un virement de 100€ du compte cheque vers le compte épargne Then le solde du compte cheque est 400€ Then le solde du compte épargne est 100€ Then le virement est confirmé @RG2 Scenario: Virement hors provision Given j'ai un compte cheque avec un solde de 50€ Given j'ai un compte épargne avec un solde de 1000€ When j'effectue un virement de 100€ du compte cheque vers le compte épargne Then le solde du compte cheque est 50€ Then le solde du compte épargne est 1000€ Then le virement est refusé pour motif hors provision @RG3 Scenario: Virement plafonné Given j'ai un compte cheque avec un solde de 1000€ Given j'ai un compte épargne avec un solde de 0€ Given la limite de virement est 500€ When j'effectue un virement de 501€ du compte cheque vers le compte épargne Then le solde du compte cheque est 1000€ Then le solde du compte épargne est 0€ Then le virement est refusé pour motif plafond dépassé
  • 26. 26 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Commen t [Given(@"j'ai un compte cheque avec un solde de (.*)€")] public void GivenJAiUnCompteChequeAvecUnSoldeDe(int solde) [Given(@"j'ai un compte épargne avec un solde de (.*)€")] public void GivenJAiUnCompteEpargneAvecUnSoldeDe(int solde) [Given(@"la limite de virement est (.*)€")] public void GivenLaLimiteDeVirementEst(int limite)
  • 27. 27 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Commen t [When(@"j'effectue un virement de (.*)€ du compte cheque vers le compte épargne")] public void WhenJEffectueUnVirementDeDuCompteChequeVersLeCompteEpargne(int montant) [Then(@"le solde du compte cheque est (.*)€")] public void ThenLeSoldeDuCompteChequeEst(int solde) [Then(@"le solde du compte épargne est (.*)€")] public void ThenLeSoldeDuCompteEpargneEst(int solde)
  • 28. 28 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Commen t [Then(@"le virement est confirmé")] public void ThenLeVirementEstConfirme() [Then(@"le virement est refusé pour motif hors provision")] public void ThenLeVirementEstRefusePourMotifHorsProvision() [Then(@"le virement est refusé pour motif plafond dépassé")] public void ThenLeVirementEstRefusePourMotifPlafondDepasse()
  • 29. 29 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Compte CompteCheque = new Compte(); [Given(@"j'ai un compte cheque avec un solde de (.*)€")] public void GivenJAiUnCompteChequeAvecUnSoldeDe(int solde) { CompteCheque.Solde = solde; } [Given(@"j'ai un compte épargne avec un solde de (.*)€")] public void GivenJAiUnCompteEpargneAvecUnSoldeDe(int solde) { CompteEpargne.Solde = solde; }
  • 30. 30 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t [When(@"j'effectue un virement de (.*)€ du compte cheque vers le compte épargne")] public void WhenJEffectueUnVirementDeDuCompteChequeVersLeCompteEpargne(int montant) { StatutVirement = srvVirement.EffectuerVirement(montant, CompteCheque, CompteEpargne); } ServiceVirement srvVirement = new ServiceVirement(); RetourVirement StatutVirement;
  • 31. 31 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t [Then(@"le solde du compte cheque est (.*)€")] public void ThenLeSoldeDuCompteChequeEst(int solde) { Assert.AreEqual(solde, CompteCheque.Solde); } [Then(@"le solde du compte épargne est (.*)€")] public void ThenLeSoldeDuCompteEpargneEst(int solde) { Assert.AreEqual(solde, CompteEpargne.Solde); } [Then(@"le virement est confirmé")] public void ThenLeVirementEstConfirme() { Assert.AreEqual(RetourVirement.Ok, StatutVirement); }
  • 32. 32 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e
  • 33. 33 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e Ecrire du Code de Production Ecrire du Code De Tests Unitaires TDD
  • 34. 34 BDD / TDD [TestClass] public class ServiceVirementDevrait { [TestMethod] public void DebiterUnMontantDuCompteALorsDuVirement() { //Arrange Compte A = new Compte(); A.Solde = 20; Compte B = new Compte(); ServiceVirement srv = new ServiceVirement(); //Act var retour = srv.EffectuerVirement(5, A, B); //Assert Assert.AreEqual(15, A.Solde); Assert.AreEqual(RetourVirement.Ok, retour); }
  • 35. 35 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e Ecrire du Code de Production Ecrire du Code De Tests Unitaires TDD
  • 36. 36 BDD / TDD public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur) { compteDebiteur.Solde -= montant; return RetourVirement.Ok; }
  • 37. 37 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e Ecrire du Code de Production Ecrire du Code De Tests Unitaires TDD
  • 38. 38 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e Ecrire du Code de Production Ecrire du Code De Tests Unitaires TDD
  • 39. 39 BDD / TDD [TestMethod] public void CrediterUnMontantDuCompteBLorsDuVirement() { //Arrange Compte A = new Compte(); A.Solde = 20; Compte B = new Compte(); B.Solde = 5; ServiceVirement srv = new ServiceVirement(); //Act var retour = srv.EffectuerVirement(5, A, B); //Assert Assert.AreEqual(10, B.Solde); Assert.AreEqual(RetourVirement.Ok, retour); }
  • 40. 40 BDD / TDD public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur) { compteDebiteur.Solde -= montant; compteCrediteur.Solde += montant; return RetourVirement.Ok; }
  • 41. 41 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e Ecrire du Code de Production Vert Ecrire du Code De Tests Unitaires TDD
  • 42. 42 BDD / TDD @RG1 Scenario: Virement simple Given j'ai un compte cheque avec un solde de 500€ Given j'ai un compte épargne avec un solde de 0€ When j'effectue un virement de 100€ du compte cheque vers le compte épargne Then le solde du compte cheque est 400€ Then le solde du compte épargne est 100€ Then le virement est confirmé @RG2 Scenario: Virement hors provision Given j'ai un compte cheque avec un solde de 50€ Given j'ai un compte épargne avec un solde de 1000€ When j'effectue un virement de 100€ du compte cheque vers le compte épargne Then le solde du compte cheque est 50€ Then le solde du compte épargne est 1000€ Then le virement est refusé pour motif hors provision @RG3 Scenario: Virement plafonné Given j'ai un compte cheque avec un solde de 1000€ Given j'ai un compte épargne avec un solde de 0€ Given la limite de virement est 500€ When j'effectue un virement de 501€ du compte cheque vers le compte épargne Then le solde du compte cheque est 1000€ Then le solde du compte épargne est 0€ Then le virement est refusé pour motif plafond dépassé
  • 43. 43 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e
  • 44. 44 BDD / TDD [TestMethod] public void NePasDebiterUnMontantSuperieurAuSoldeDuCompteALorsDuVirement() { //Arrange Compte A = new Compte(); A.Solde = 20; Compte B = new Compte(); B.Solde = 5; ServiceVirement srv = new ServiceVirement(); //Act var retour = srv.EffectuerVirement(21, A, B); //Assert Assert.AreEqual(20, A.Solde); Assert.AreEqual(5, B.Solde); Assert.AreEqual(RetourVirement.SoldeDepasse, retour); }
  • 45. 45 BDD / TDD public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur) { if (montant > compteDebiteur.Solde) { return RetourVirement.SoldeDepasse; } compteDebiteur.Solde -= montant; compteCrediteur.Solde += montant; return RetourVirement.Ok; }
  • 46. 46 BDD / TDD [TestMethod] public void NePasDebiterUnMontantSuperieurAuPlafondLorsDuVirement() { //Arrange Compte A = new Compte(); A.Solde = 20; Compte B = new Compte(); B.Solde = 5; ServiceVirement srv = new ServiceVirement(); srv.Plafond = 2; //Act var retour = srv.EffectuerVirement(5, A, B); //Assert Assert.AreEqual(20, A.Solde); Assert.AreEqual(5, B.Solde); Assert.AreEqual(RetourVirement.PlafondDepasse, retour); }
  • 47. 47 BDD / TDD public class ServiceVirement { public int Plafond { get; internal set; } public ServiceVirement() { //Todo : demander la limite de plafond par défaut Plafond = 1000; } public RetourVirement EffectuerVirement(int montant, Compte compteDebiteur, Compte compteCrediteur) { if (montant > compteDebiteur.Solde) { return RetourVirement.SoldeDepasse; } if (montant > Plafond) { return RetourVirement.PlafondDepasse; } compteDebiteur.Solde -= montant; compteCrediteur.Solde += montant; return RetourVirement.Ok; }
  • 48. 48 BDD / TDD Besoin Fonctionnalité User StoryScenarios Etapes (steps) DEV + QSI + PO Pourquo i Qui Quoi Définition d’étapes Ecrire du Code de Test Commen t Roug e Ecrire du Code de Production Vert Ecrire du Code De Tests Unitaires Refactoring TDD
  • 49. 49 BDD / TDD En résumé En découvrant ensemble les scénarios et les règles, nous bâtissons une compréhension commune et forte Les scénarios servent d’exemples pour piloter le développement Les scénarios sont attachés à des tests automatisés qui démontrent l’avancement et préviennent la régression Les scénarios et règles documentent la fonctionnalité de manière permanente et vivante…
  • 50. 50 Pourquoi il faut vous y mettre ?
  • 52. 52 Sensibilisation des interlocuteurs métier et direction (2015)
  • 55. 55 adopteunamigos.com Venez écrire des BDD avec nous Conférence 1 à 14h

Editor's Notes

  1. EA
  2. Les scénarios sont trié par priorité et regroupés pour former des User Story INVEST On peut maintenant passer au développement en TDD du virement simple.
  3. On écrit ou génère chaque définition d’étape pour le lier à une méthode, fonction [Given(@"j'ai un compte cheque avec un solde de (.*)€")] public void GivenJAiUnCompteChequeAvecUnSoldeDe(int solde) [Given(@"j'ai un compte épargne avec un solde de (.*)€")] public void GivenJAiUnCompteEpargneAvecUnSoldeDe(int solde) [Given(@"la limite de virement est (.*)€")] public void GivenLaLimiteDeVirementEst(int limite)
  4. [When(@"j'effectue un virement de (.*)€ du compte cheque vers le compte épargne")] public void WhenJEffectueUnVirementDeDuCompteChequeVersLeCompteEpargne(int montant) [Then(@"le solde du compte cheque est (.*)€")] public void ThenLeSoldeDuCompteChequeEst(int solde) [Then(@"le solde du compte épargne est (.*)€")] public void ThenLeSoldeDuCompteEpargneEst(int solde)
  5. [Then(@"le virement est confirmé")] public void ThenLeVirementEstConfirme() [Then(@"le virement est refusé pour motif hors provision")] public void ThenLeVirementEstRefusePourMotifHorsProvision() [Then(@"le virement est refusé pour motif plafond dépassé")] public void ThenLeVirementEstRefusePourMotifPlafondDepasse()
  6. Nous pouvons maintenant écrire du code de test pour piloter / générer notre développement. Si possible, écrire du code le plus simple possible pour chaque étape.
  7. Nous pouvons maintenant écrire du code de test pour piloter / générer notre développement. En général, seul ce bout de code ne suffira pas mais on ne va pas plus loin pour l’instant.
  8. Nous pouvons maintenant écrire du code de test pour piloter / générer notre développement. On écrit toutes les vérifications,
  9. Les étapes du premier scénario sont prêtes, nous pouvons lancer le test. Il ne devrait pas fonctionner.
  10. Nous pouvons commencer le cycle de TDD pour implémenter le comportement.
  11. Le virement doit pouvoir débiter le montant du compte A
  12. Le test unitaire ne passe pas, il faut écrire du code de production pour le faire passer vert.
  13. On écrit du code de production
  14. Le test unitaire devrait fonctionner.
  15. Nous pouvons relancer le test du scénario. Il n’est toujours pas fonctionnel, il faut que le compte à créditer soit impacté.
  16. Le virement doit pouvoir créditer le montant du compte B Le test unitaire est Rouge mais le précédent est toujours Vert.
  17. On écrit du code de production On lance les tests.
  18. Le test unitaire passe vert. Le précédent test unitaire l’est toujours (pas de régression) Le scénario passe vert. On peut archiver le scénario dans le code source pour livrer au plus vite. Nous pouvons donner un état d’avancement précis sur le développement de la fonctionnalité : le virement simple est implémenté, il reste le virement hors provision et le virement plafonné.
  19. Rappel des scénarios de la fonctionnalité.
  20. On peut lancer les deux autres scénarios, au cas où le premier scénario aurait permis de les valider. Le virement hors provision ne fonctionne : le compte débiteur est passé en négatif.
  21. Le virement doit pouvoir créditer le montant du compte B. Le test unitaire est rouge, nous pouvons écrire le code simple pour le faire passer vert.
  22. Nous ajoutons le code de production pour faire passer le test.
  23. Nous ajoutons un test unitaire pour le virement plafonné.
  24. Nous ajoutons le code de production. Nous relançons tous les tests.
  25. Tous les tests sont passés au vert, les tests unitaires et scénarios. Nous pouvons archiver la fonctionnalité. Nous pouvons sereinement améliorer le design de notre code par des session de refactoring vu que la fonctionnalité est entièrement testée. Une fois le code prêt, nous l’archivons pour le soumettre à une revue de code.