SlideShare une entreprise Scribd logo
1  sur  40
Behavior Driven Development
Agile testing Day - Janvier 2016
Who am i ?
Consultant .NET/WEB
@Georges_Damien
www.georgesdamien.com
Georges DAMIEN
Pourquoi le BDD ?
Ce qu’on entend souvent en entreprise
• Trop de politiques internes (processus lourds)
• Les besoins ne sont pas clairs
• Le client ne sait pas ce qu’il veut
• On fait beaucoup de réunions mais on discute dans le vide
• Le client (ou PO) n’est jamais disponible
• La doc n’est pas à jour…
• La doc n’est pas claire…
Ça vous rappelle quelque chose ?
Et ça ?
Je veux un IPhone Mais non ! Un téléphone
Iphone de la marque Apple
Oui mais non ! Je veux le dernier
modèle, la version 6
Ce qu’on voit très souvent
Le développeur
Le client
Le testeur
Je veux ça !
Le PO
Le client dit
qu’il veut ça !
Voici les specs !
Voilà l’boulot !
C’es good ! On peut
pousser en PROD
Ce que ça donne comme résultat
Le développeur
Le client
Le testeur
Je veux ça !
Le PO
Le client dit
qu’il veut ça !
Voici les specs !
Voilà l’boulot !
C’est good ! On peut
pousser en PROD
Le besoin initial
Ce qui a été fait et
qui a de la valeur
(correspondant au
besoin, testé,
validé).
Pourquoi le BDD ?
• National Institute of Standards and Technology estime à environ 70%
le pourcentage d’erreurs introduites par projet lors de la phase
d’étude de besoins.
• Réponse au TDD qui est mal compris
Ce que certains pensent du BDD
• C’est juste une truc à la mode
• C’est un truc pour faire des tests (automatisés)
• C’est juste du Gerkins (Given When then)
• Ça resemble au TDD
La philosophie du BDD
BDD : objectifs
• Building de software right
• Building de right software
• Software that matters
De l’idée à l’implémentation
Je veux ça!
Voilà ça!
Comment on fait ça?
Comment on fait ça bien ?
Comment on fait bien ça?
Avec du BDD par exemple
Quelques mots…
BDD
TDD
Critères d’acceptance
automatisés
Développer du logiciel à
forte valeur ajoutée
Documentation vivante
Language commun
Agilité/
collaboration
BDD in action
Le besoin métier
• On commence par définir
l’objectif métier (business)
Je veux proposer
aux clients une
assurance maison
par défaut
Les features
• On répond ensuite à la question :
• Quelles sont les éléments (features) qui vont me permettre de répondre à cet
objectif ?
Tu veux donc une page web? Oui.
Tu veux que ton offre d’assurance s’affiche dès la première page ? Oui, faut que ce soit simple
Ok, mais on affiche quoi ? Le prix de l’assurance ? des images ?
Le prix hors taxe et le prix TTC, d’ailleurs il
faudrait que se soit automatiquement
appliqué si on change de prix
Ok, il y aura des options que
l’utilisateur pourra choisir ?
Oui mais dans un premier temps
pas d’option, il faut que je démarre
rapidement mon activité.
Ok, ça parait clair. Il faudra nous
donner un exemple avec les tarifs,
ça nous aiderait.
Discussion autours des features
• On discute des fonctionnalités à partir d’exemples concrets.
• On discute tous ensemble
Ubiquitous language (langage omniprésent)
• En tant que <Utilisateur/vendeur/client,…>
• Je souhaite <envoyer un email/consulter mon stock/voir les articles de
mon panier,…>
• Pour <confirmer ma commande/maîtriser mon stock/passer
commande,…>
Utilisation d’exemples
Feature: StringToSimpleName
Dans le but d'uniformiser les noms de personnes
Je voudrais que les noms de famille commencent par des majuscules
et le reste des lettres en minuscules
Scenario Outline: Formater les noms
Given Je saisi un <nom>
When j'appelle la methode de formatage
Then Mon <resultat> devrait me retourner un nom commencant par une majuscule
Examples:
| nom | resultat |
| duPont | Dupont |
| Dupuis | Dupuis |
Compréhension partagée
The three amigos
BDD : les phases
Scénarii
Définition
des steps
Tests
unitaires
Codage
BDD : Feature
Feature: DisplayInsurances
In order to subscribe insurance
As a prospect
I want to see home insurance
BDD : scénarii
Scenario: Show insurance
When I open insurance page
Then the result should show the home insurance
And the base price is 200
And the sales price is 240
BDD : Step definition
[Binding]
public class DisplayInsurancesSteps
{
[When(@"I open insurance page")]
public void WhenIOpenInsurancePage()
{}
[Then(@"the result should show the home insurance")]
public void ThenTheResultShouldShowTheHomeInsurance()
{}
[Then(@"the base price is (.*)")]
public void ThenTheBasePriceIs(float basePriceExpected)
{}
[Then(@"the sales price is (.*)")]
public void ThenTheSalesPriceIs(float salesPriceExpected)
{}
}
BDD : unit test (TDD)
[When(@"I open insurance page")]
public void WhenIOpenInsurancePage()
{
var homeController = new HomeController();
this.actionResult = homeController.Index() as ViewResult;
}
[Then(@"the result should show the home insurance")]
public void ThenTheResultShouldShowTheHomeInsurance()
{
var viewResult = this.actionResult as ViewResult;
Assert.IsInstanceOf<InsuranceViewModel>(viewResult.Model);
this.insurance = viewResult.Model as InsuranceViewModel;
}
BDD : unit test (TDD)
[Then(@"the base price is (.*)")]
public void ThenTheBasePriceIs(float basePriceExpected)
{
Assert.AreEqual(basePriceExpected, this.insurance.BasePrice);
}
[Then(@"the sales price is (.*)")]
public void ThenTheSalesPriceIs(float salesPriceExpected)
{
Assert.AreEqual(salesPriceExpected, this.insurance.SalesPrice);
}
BDD : codage
BDD : unit test result
BDD & agilité
Les 4 valeurs de l’agilité
•Les individus et leurs interactions plus que
les processus et les outils.
• Du logiciel qui fonctionne plus qu’une documentation exhaustive.
• La collaboration avec les clients plus que la négociation
contractuelle.
• L’adaptation au changement plus que le suivi d’un plan.
BDD
BDD
TDD
Critères
d’acceptance
automatisés
Développer
du logiciel à
forte valeur
ajoutée
Documentation
vivante
Language
commun
Agilité/
collaboration
BDD : avantages
Le bon résultat
• On développe le bon produit
• On le développe de la meilleur façon
Tests automatisés
• Les critères d’acceptances sont automatisés
• Les tests sont automatisés
Documentation vivante et à jour
• La documentation est à jour
• Les scenarii/features reflètent le besoin réel du client
• Le code correspondant aux tests qui dérivent des features
implémentées
BDD : inconvénients
Difficultés/challenge
• Faire participer tout le monde
• Montrer « aux chefs » que ça marche
• Faire adopter la pratique par les participants
• Faire accepter de changer de méthode de travail
• Faire preuve d’empathie
• Pratique testée mais pas adoptée
Démo
Démo
https://github.com/Djdodjes/InsuranceDream
Merci de votre attention
Questions ?
@Georges_Damien

Contenu connexe

Tendances

La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !
Lucian Precup
 

Tendances (20)

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java script
 
Test Driven Development, propulsé par les Legos!
Test Driven Development, propulsé par les Legos!Test Driven Development, propulsé par les Legos!
Test Driven Development, propulsé par les Legos!
 
BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilité
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Consignes épreuve de codage
Consignes épreuve de codageConsignes épreuve de codage
Consignes épreuve de codage
 
Pourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codePourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre code
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Les tests behat par la pratique
Les tests behat par la pratiqueLes tests behat par la pratique
Les tests behat par la pratique
 
Conformiq
ConformiqConformiq
Conformiq
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !
 

Similaire à [Agile Testing Day] Behavior Driven Development (BDD)

Similaire à [Agile Testing Day] Behavior Driven Development (BDD) (20)

Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010
 
Startup driven development
Startup driven developmentStartup driven development
Startup driven development
 
Les tests automatisés par mots-clés, le complément parfait d’un projet Agile
Les tests automatisés par mots-clés, le complément parfait d’un projet AgileLes tests automatisés par mots-clés, le complément parfait d’un projet Agile
Les tests automatisés par mots-clés, le complément parfait d’un projet Agile
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
 
Améliorez les taux de conversion de vos pages web
Améliorez les taux de conversion de vos pages webAméliorez les taux de conversion de vos pages web
Améliorez les taux de conversion de vos pages web
 
Préparation aux pitchs
Préparation aux pitchsPréparation aux pitchs
Préparation aux pitchs
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
 
to Test or not to Test?
to Test or not to Test?to Test or not to Test?
to Test or not to Test?
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
Le design mobile c’est pas facile
Le design mobile c’est pas facileLe design mobile c’est pas facile
Le design mobile c’est pas facile
 
Pourquoi externaliser
Pourquoi externaliserPourquoi externaliser
Pourquoi externaliser
 
XebiCon'16 : Thiga - Vendre un produit en SaaS - 5 techniques de Pricing !
XebiCon'16 : Thiga - Vendre un produit en SaaS - 5 techniques de Pricing !XebiCon'16 : Thiga - Vendre un produit en SaaS - 5 techniques de Pricing !
XebiCon'16 : Thiga - Vendre un produit en SaaS - 5 techniques de Pricing !
 
Fabien Bezagu : Présentation XP et DDD
Fabien Bezagu : Présentation XP et DDDFabien Bezagu : Présentation XP et DDD
Fabien Bezagu : Présentation XP et DDD
 
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...
 
Savoir déléguer efficacement
Savoir déléguer efficacementSavoir déléguer efficacement
Savoir déléguer efficacement
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012
 
La solution-a-la-dette-technique
La solution-a-la-dette-techniqueLa solution-a-la-dette-technique
La solution-a-la-dette-technique
 
La solution-a-la-dette-technique
La solution-a-la-dette-techniqueLa solution-a-la-dette-technique
La solution-a-la-dette-technique
 
Présentation aux investisseurs Exo B2B, Chambre de Commerce du Montréal Métr...
Présentation aux investisseurs Exo B2B, Chambre de Commerce du Montréal Métr...Présentation aux investisseurs Exo B2B, Chambre de Commerce du Montréal Métr...
Présentation aux investisseurs Exo B2B, Chambre de Commerce du Montréal Métr...
 

Plus de Cellenza

Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Cellenza
 

Plus de Cellenza (20)

The PostBuildEvent : Retour sur la //Build 2017
The PostBuildEvent : Retour sur la //Build 2017The PostBuildEvent : Retour sur la //Build 2017
The PostBuildEvent : Retour sur la //Build 2017
 
DevCon 3 : Containérisation d’applications
DevCon 3 : Containérisation d’applicationsDevCon 3 : Containérisation d’applications
DevCon 3 : Containérisation d’applications
 
DevCon 3 : BOT Framework & Luis
DevCon 3 : BOT Framework & LuisDevCon 3 : BOT Framework & Luis
DevCon 3 : BOT Framework & Luis
 
DevCon 3 : Azure API Management
DevCon 3 : Azure API ManagementDevCon 3 : Azure API Management
DevCon 3 : Azure API Management
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core 04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core
 
05 - [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
05 - [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux05 - [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
05 - [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
Integration Summit 16 - Keynote Integration Trends
Integration Summit 16 - Keynote Integration TrendsIntegration Summit 16 - Keynote Integration Trends
Integration Summit 16 - Keynote Integration Trends
 
Integration Summit 16 - Tour d'horizon d'Azure Logic Apps
Integration Summit 16 - Tour d'horizon d'Azure Logic AppsIntegration Summit 16 - Tour d'horizon d'Azure Logic Apps
Integration Summit 16 - Tour d'horizon d'Azure Logic Apps
 
Integration Summit 16 - Les nouveautés BizTalk Server 2016
Integration Summit 16 - Les nouveautés BizTalk Server 2016Integration Summit 16 - Les nouveautés BizTalk Server 2016
Integration Summit 16 - Les nouveautés BizTalk Server 2016
 
Integration Summit 16 - Hybrid Integration
Integration Summit 16 - Hybrid IntegrationIntegration Summit 16 - Hybrid Integration
Integration Summit 16 - Hybrid Integration
 
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
 
Integration Summit 16 : IoT, Service Fabric et Logic App
Integration Summit 16 : IoT, Service Fabric et Logic AppIntegration Summit 16 : IoT, Service Fabric et Logic App
Integration Summit 16 : IoT, Service Fabric et Logic App
 
Integration Summit 16 : Azure API Management
Integration Summit 16 : Azure API Management Integration Summit 16 : Azure API Management
Integration Summit 16 : Azure API Management
 
Integration Summit 16 - Citizen Integrator / Flow - Power apps
Integration Summit 16 - Citizen Integrator / Flow - Power appsIntegration Summit 16 - Citizen Integrator / Flow - Power apps
Integration Summit 16 - Citizen Integrator / Flow - Power apps
 
[XamarinDay] Xamarin History - From 0 to microsoft acquisition !
[XamarinDay] Xamarin History - From 0 to microsoft acquisition ![XamarinDay] Xamarin History - From 0 to microsoft acquisition !
[XamarinDay] Xamarin History - From 0 to microsoft acquisition !
 
[XamarinDay] Deep dive des produits Xamarin part 1
[XamarinDay] Deep dive des produits Xamarin part 1[XamarinDay] Deep dive des produits Xamarin part 1
[XamarinDay] Deep dive des produits Xamarin part 1
 
[XamarinDay] Deep dive des produits Xamarin part 2
[XamarinDay] Deep dive des produits Xamarin part 2[XamarinDay] Deep dive des produits Xamarin part 2
[XamarinDay] Deep dive des produits Xamarin part 2
 

[Agile Testing Day] Behavior Driven Development (BDD)

  • 1. Behavior Driven Development Agile testing Day - Janvier 2016
  • 2. Who am i ? Consultant .NET/WEB @Georges_Damien www.georgesdamien.com Georges DAMIEN
  • 4. Ce qu’on entend souvent en entreprise • Trop de politiques internes (processus lourds) • Les besoins ne sont pas clairs • Le client ne sait pas ce qu’il veut • On fait beaucoup de réunions mais on discute dans le vide • Le client (ou PO) n’est jamais disponible • La doc n’est pas à jour… • La doc n’est pas claire…
  • 5. Ça vous rappelle quelque chose ?
  • 6. Et ça ? Je veux un IPhone Mais non ! Un téléphone Iphone de la marque Apple Oui mais non ! Je veux le dernier modèle, la version 6
  • 7. Ce qu’on voit très souvent Le développeur Le client Le testeur Je veux ça ! Le PO Le client dit qu’il veut ça ! Voici les specs ! Voilà l’boulot ! C’es good ! On peut pousser en PROD
  • 8. Ce que ça donne comme résultat Le développeur Le client Le testeur Je veux ça ! Le PO Le client dit qu’il veut ça ! Voici les specs ! Voilà l’boulot ! C’est good ! On peut pousser en PROD Le besoin initial Ce qui a été fait et qui a de la valeur (correspondant au besoin, testé, validé).
  • 9. Pourquoi le BDD ? • National Institute of Standards and Technology estime à environ 70% le pourcentage d’erreurs introduites par projet lors de la phase d’étude de besoins. • Réponse au TDD qui est mal compris
  • 10. Ce que certains pensent du BDD • C’est juste une truc à la mode • C’est un truc pour faire des tests (automatisés) • C’est juste du Gerkins (Given When then) • Ça resemble au TDD
  • 12. BDD : objectifs • Building de software right • Building de right software • Software that matters
  • 13. De l’idée à l’implémentation Je veux ça! Voilà ça! Comment on fait ça? Comment on fait ça bien ? Comment on fait bien ça? Avec du BDD par exemple
  • 14. Quelques mots… BDD TDD Critères d’acceptance automatisés Développer du logiciel à forte valeur ajoutée Documentation vivante Language commun Agilité/ collaboration
  • 16. Le besoin métier • On commence par définir l’objectif métier (business) Je veux proposer aux clients une assurance maison par défaut
  • 17. Les features • On répond ensuite à la question : • Quelles sont les éléments (features) qui vont me permettre de répondre à cet objectif ? Tu veux donc une page web? Oui. Tu veux que ton offre d’assurance s’affiche dès la première page ? Oui, faut que ce soit simple Ok, mais on affiche quoi ? Le prix de l’assurance ? des images ? Le prix hors taxe et le prix TTC, d’ailleurs il faudrait que se soit automatiquement appliqué si on change de prix Ok, il y aura des options que l’utilisateur pourra choisir ? Oui mais dans un premier temps pas d’option, il faut que je démarre rapidement mon activité. Ok, ça parait clair. Il faudra nous donner un exemple avec les tarifs, ça nous aiderait.
  • 18. Discussion autours des features • On discute des fonctionnalités à partir d’exemples concrets. • On discute tous ensemble
  • 19. Ubiquitous language (langage omniprésent) • En tant que <Utilisateur/vendeur/client,…> • Je souhaite <envoyer un email/consulter mon stock/voir les articles de mon panier,…> • Pour <confirmer ma commande/maîtriser mon stock/passer commande,…>
  • 20. Utilisation d’exemples Feature: StringToSimpleName Dans le but d'uniformiser les noms de personnes Je voudrais que les noms de famille commencent par des majuscules et le reste des lettres en minuscules Scenario Outline: Formater les noms Given Je saisi un <nom> When j'appelle la methode de formatage Then Mon <resultat> devrait me retourner un nom commencant par une majuscule Examples: | nom | resultat | | duPont | Dupont | | Dupuis | Dupuis |
  • 22. BDD : les phases Scénarii Définition des steps Tests unitaires Codage
  • 23. BDD : Feature Feature: DisplayInsurances In order to subscribe insurance As a prospect I want to see home insurance
  • 24. BDD : scénarii Scenario: Show insurance When I open insurance page Then the result should show the home insurance And the base price is 200 And the sales price is 240
  • 25. BDD : Step definition [Binding] public class DisplayInsurancesSteps { [When(@"I open insurance page")] public void WhenIOpenInsurancePage() {} [Then(@"the result should show the home insurance")] public void ThenTheResultShouldShowTheHomeInsurance() {} [Then(@"the base price is (.*)")] public void ThenTheBasePriceIs(float basePriceExpected) {} [Then(@"the sales price is (.*)")] public void ThenTheSalesPriceIs(float salesPriceExpected) {} }
  • 26. BDD : unit test (TDD) [When(@"I open insurance page")] public void WhenIOpenInsurancePage() { var homeController = new HomeController(); this.actionResult = homeController.Index() as ViewResult; } [Then(@"the result should show the home insurance")] public void ThenTheResultShouldShowTheHomeInsurance() { var viewResult = this.actionResult as ViewResult; Assert.IsInstanceOf<InsuranceViewModel>(viewResult.Model); this.insurance = viewResult.Model as InsuranceViewModel; }
  • 27. BDD : unit test (TDD) [Then(@"the base price is (.*)")] public void ThenTheBasePriceIs(float basePriceExpected) { Assert.AreEqual(basePriceExpected, this.insurance.BasePrice); } [Then(@"the sales price is (.*)")] public void ThenTheSalesPriceIs(float salesPriceExpected) { Assert.AreEqual(salesPriceExpected, this.insurance.SalesPrice); }
  • 29. BDD : unit test result
  • 31. Les 4 valeurs de l’agilité •Les individus et leurs interactions plus que les processus et les outils. • Du logiciel qui fonctionne plus qu’une documentation exhaustive. • La collaboration avec les clients plus que la négociation contractuelle. • L’adaptation au changement plus que le suivi d’un plan.
  • 32. BDD BDD TDD Critères d’acceptance automatisés Développer du logiciel à forte valeur ajoutée Documentation vivante Language commun Agilité/ collaboration
  • 34. Le bon résultat • On développe le bon produit • On le développe de la meilleur façon
  • 35. Tests automatisés • Les critères d’acceptances sont automatisés • Les tests sont automatisés
  • 36. Documentation vivante et à jour • La documentation est à jour • Les scenarii/features reflètent le besoin réel du client • Le code correspondant aux tests qui dérivent des features implémentées
  • 38. Difficultés/challenge • Faire participer tout le monde • Montrer « aux chefs » que ça marche • Faire adopter la pratique par les participants • Faire accepter de changer de méthode de travail • Faire preuve d’empathie • Pratique testée mais pas adoptée
  • 40. Merci de votre attention Questions ? @Georges_Damien