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

PDF
Pizza party 30-09-2011 bdd-cucumber
PDF
PPTX
Marco Teórico
PPTX
Presentación1
PPTX
Niki evaluation q3
DOCX
Cv dvp en_03_01_2016
PPTX
Paludismo
PDF
CV_INDUSTRY_5_2
Pizza party 30-09-2011 bdd-cucumber
Marco Teórico
Presentación1
Niki evaluation q3
Cv dvp en_03_01_2016
Paludismo
CV_INDUSTRY_5_2

En vedette (19)

ODP
3 eso modelos
PPT
Enfoques cuantitativo cualitativo
PPTX
Documentos necesarios para programar (programación didáctica)
PDF
Building the "right" regression suite using Behavior Driven Testing (BDT)
PPTX
Behavior Driven Testing for Multichannel Enterprise Applications
PPTX
Behavior Driven Testing of Web Services
PPTX
Effective Testing using Behavior-Driven Development
PDF
Startup Institute: JS Testing & Behavior Driven Development
PPTX
Behavior Driven Development
PDF
Behavior Driven GUI Testing
PDF
BDD training v5.0.1
PDF
German Testing Day 2015 - How behavior-driven development fuses developers an...
PPT
Behavior Driven Development with Rails
PDF
Unit Testing and Behavior Driven Testing with AngularJS - Jesse Liberty | Fal...
KEY
Behavior driven development
PDF
Beyond Testing: Specs and Behavior Driven Development
PPTX
Calabash
PDF
Behavior driven development. Testing drupal using behat
PDF
Behavior Driven Testing goes Mobile!
3 eso modelos
Enfoques cuantitativo cualitativo
Documentos necesarios para programar (programación didáctica)
Building the "right" regression suite using Behavior Driven Testing (BDT)
Behavior Driven Testing for Multichannel Enterprise Applications
Behavior Driven Testing of Web Services
Effective Testing using Behavior-Driven Development
Startup Institute: JS Testing & Behavior Driven Development
Behavior Driven Development
Behavior Driven GUI Testing
BDD training v5.0.1
German Testing Day 2015 - How behavior-driven development fuses developers an...
Behavior Driven Development with Rails
Unit Testing and Behavior Driven Testing with AngularJS - Jesse Liberty | Fal...
Behavior driven development
Beyond Testing: Specs and Behavior Driven Development
Calabash
Behavior driven development. Testing drupal using behat
Behavior Driven Testing goes Mobile!
Publicité

Similaire à Behavior Driven Development - agile testing day (20)

PDF
BDD (Behavior Driven Development) - Une voie vers l'agilité
PDF
Iut agile lyon 20 nov. 2013 - bdd
PDF
Les tests automatisés par mots-clés, le complément parfait d’un projet Agile
PDF
Comment accélérer le DevOps avec l’ATDD/BDD?
PDF
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
PDF
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
PPT
Bbd dans le flow nov.2012
PDF
Faites revivre vos spécifications scrumday 2014
PDF
Développement d'un grand projet piloté par les tests (BDD)
PDF
DDD session BrownBagLunch (FR)
PDF
Fabien Bezagu : Présentation XP et DDD
PDF
Tour d'horizon des tests
PPT
Tests Logiciel
PPTX
Introduction au BDD (Behavior Driven Development)
PDF
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
PPTX
Le pilotage par les tests
PPT
to Test or not to Test?
PPTX
Behaviour Driven Development chez Jouve ITS - Agile Laval 2014
PDF
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
PPTX
Diffusion de la méthode BDD chez AXA via les 3 amigos
BDD (Behavior Driven Development) - Une voie vers l'agilité
Iut agile lyon 20 nov. 2013 - bdd
Les tests automatisés par mots-clés, le complément parfait d’un projet Agile
Comment accélérer le DevOps avec l’ATDD/BDD?
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
Bbd dans le flow nov.2012
Faites revivre vos spécifications scrumday 2014
Développement d'un grand projet piloté par les tests (BDD)
DDD session BrownBagLunch (FR)
Fabien Bezagu : Présentation XP et DDD
Tour d'horizon des tests
Tests Logiciel
Introduction au BDD (Behavior Driven Development)
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Le pilotage par les tests
to Test or not to Test?
Behaviour Driven Development chez Jouve ITS - Agile Laval 2014
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Diffusion de la méthode BDD chez AXA via les 3 amigos
Publicité

Dernier (9)

PPT
Pratiques des systèmes d'information ppt
PDF
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
PPTX
test pour la présentation foire de Chalôns V1
PDF
Architecture logicielle et Modeles de Conception
PDF
COURS GCDs Chap 9.pdf tous les éléments.
PPTX
Projet de Fin d’Études – Plateforme FMS pour la Gestion des FCPR
PDF
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
PDF
Démystification des QR codes - histoire - utilisations - techniques
PDF
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
Pratiques des systèmes d'information ppt
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
test pour la présentation foire de Chalôns V1
Architecture logicielle et Modeles de Conception
COURS GCDs Chap 9.pdf tous les éléments.
Projet de Fin d’Études – Plateforme FMS pour la Gestion des FCPR
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
Démystification des QR codes - histoire - utilisations - techniques
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26

Behavior Driven Development - agile testing day

  • 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