SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
BDD:
un chemin vers l’Agilité
 Comment BDD peut favoriser
l’adoption d’une approche Agile
      Mauro Talevi
                  2011
Plan
 “Pain-Driven Development”
Behaviour-Driven Development
   BDD en Java: JBehave
       Etude de Cas
         Questions
Pain-Driven
Development *

*Développement pour les SM
Maux du Développement

Le système ne fait pas ce qu’il devrait
      Fonctionnalité manquante
 Le système est développé en “silos”
 Le système n’est pas accessible ni
        visible par le métier
     Pas de tests d’acceptation
          ... et plus encore!
Un Exemple




... c’est familier?
BDD propose un nouveau paradigme ...
       décrire le            un langage
      comportement est   universel c’est la
      un meilleur type      clef
       de test
                               les tests
                          d’acceptation
                          doivent être
                          automatisables



                          toutes requêtes
                         sont aussi des
                          comportements


      ... mais ça prend du temps
Il y a langage ... et langage
Behaviour-Driven
     Development *
*Développement pour les bien élevés
(Une des) definitions de Dan North:

“BDD essaie d’implémenter une application
     en décrivant son comportement
   du point de vue des stakeholders”
      Qui sont les “stakeholders”?
        Développement Out-In
      Parlez le langage du métier
Stakeholders
Tous ceux qui ont un intérêt
      dans le système:
     Métier (bien sûr!)
         Sécurité
        Production
     Audit de Qualité
    ... et plus encore!
Développement Out-In




Choisissez la bonne frontiere
Parlez le langage du métier
Definissez un langage spécifique pour le
            domaine (DSL)
 Concentrez-vous sur les concepts du
                métier
Décrivez les comportements du point de
             vue du métier
     Evitez les détails techniques
Quelques definitions
      Une Histoire (User Story):
      une collection des Scénarios,
      chacun étant une collection d’étapes
Les histoires décrivent des
comportements, c.a.d. la fonctionalité
attendue par le métier
       Les scénarios explorent des
       déclinations de l’histoire,
       nominales et alternatives
Commençons une conversation:
Etant donné un seuil de 15.0
Quand une action est échangée á 5.0
Alors le trader ne doit pas être alerté
      Grammaire BDD d’Etapes:
      Etant donné - contexte
      Quand - événement
      Alors - résultat
      Et - répète étape précédente
Explorez d’autres options du métier:

Etant donné un seuil de 15.0
Quand une action est échangée á 16.0
Alors le trader doit être alerté

  La même grammaire BDD
  Seules des valeurs ont changé
Combinez les étapes:
Etant donné un seuil de 15.0
Quand une action est échangée à 5.0
Alors le trader ne doit pas être alerté
Quand une action est échangée à 16.0
Alors le trader doit être alerté

              Choisissez
       le paramétrage d’étapes
Faites évoluer le langage:
Etant donné un seuil de 15.0
Quand une action est échangée á 16.0
Alors le trader doit être alerté
Alias pour            Mêmes paramétres
mêmes étapes          Langage change
Etant donné un seuil de prix de 15.0
Quand un stock est échangé á 16.0
Alors le trader doit être alerté
Et en plus ...

 Tabularisation: quand on a des
répétitions d’étapes ou des donné

Histoires comme des pre-requis:
quand on a des répétitions des
   histories et des scénarios
BDD vs TDD

BDD parle un langage du métier,
        écrit en texte
TDD parle un langage technique,
         écrit en code

   Ils sont complémentaires,
         pas en conflit!
BDD vs ATDD
BDD permet d’automatiser les tests,
    en mettant l’accent sur la
         communication
ATDD est un paradigme générique
 d’automatisation des tests, pas
     toujours communicative
BDD en Java
Etapes correspondent aux méthodes Java

      Etant donné un seuil de 15.0



   @Given(“un seuil de $seuil”)
   public void unSeuil(double seuil){
     / assignez l’objet pour garder l’état
      /
   }

       Paramétres auto-convertis
Tous les types Java sont supportés
Strings
             Booleans
     Enums
                 Nombres

Listes des Strings

                 Listes des nombres
Types des paramétres sur-mesure
        @Given(“la date de $date”)
        public void uneDate(Date date){
          / Date est multi-format
           /
        } Etant donné la date de 01/04/2010

DateConverter implements ParameterConverter {
   public Object convertValue(String value, Type type) {
     / DateFormat injectée dans DateConverter
      /
      return dateFormat.parse(value);
   }
}
Alias
Etant donné un seuil de 15.0
Etant donné un seuil de prix de 15.0

  @Given(“un seuil de $seuil”)
  @Alias(“un seuil de prix de $seuil”)
  public void unSeuil(double seuil){
    / assignez l’objet pour garder l’état
     /
  }
  Evolution du langage du scénario
Un scénario Web
    Scénario: Un article est ajouté au
    panier du site e-commerce

    Etant donné le panier est vide
    Quand je recherche un article
    Et l’article est ajouté au panier
    Alors le panier contient cet article

On décrit les interactions des utilisateurs
     Pas les détails HTTP/HTML
Groovy WebDriver
class Home extends BasePage {

    def Home(WebDriverProvider webDriverProvider) {
      super(webDriverProvider)
    }

    def go() {
      get("http://www.etsy.com")
    }

    def go(String section) {
      go()
      findElement(By.xpath("//a[@title = '$section']")).click()
    }

    def search(String thing) {
      findElement(By.id("search-facet")).click()
      findElement(By.className("all")).click()
      findElement(By.id("search-query")).sendKeys(thing)
      findElement(By.id("search_submit")).click()
    }

    def goToBuySection() {
      findElement(By.linkText("Buy")).click()
    }
}




           WebDriver agit comme une API
Exécutions
Reporting

StoryReporter observe les
événements (“Observer Pattern”)

En entrée texte (peut-être a wiki)

En sortie plusieurs formats:
CONSOLE, HTML, XML, TXT, STATS
Un Exemple
Un Report HTML
Et en plus ...

Dependency Injection

  Multi-Threading

   Story Mapping
   Web Queue
    Web Runner
Etude de Cas
Contexte
Projet stratégique pour
une banque globale
d’investissement
Commencé en Sept 2008 ...
... des temps très
interessants pour le
monde financier!
Technologie
Application Java Enterprise

Architecture basée sur JMS (transactionnelle)

Interfaçant plusieurs systèmes internes

Focus initial sur le “core back-end”

“Web front-end” ajouté plus tard
Méthodologie
Projet Agile Scrum

Sprints de deux semaines

Equipe jusqu’á 10 membres

Auto-organisé: devs, testers, BA, SM

  Le SM c’est pas un Chef de Projet!
Les Stakeholders
“No world is an island” ...
                ... plusieurs stakeholders
  Métier          Securité
         Production      Infrastructure

Sans expérience d’Agile ni de BDD ...
       ... mais très investis
              & pas juste concernés!
Le Poulet
  & Le Cochon




Il faut être tous des cochons!
Cochonnet




Le plus important membre de l’équipe
BDD et l’Agilité
BDD et l’Agilité
BDD ideale pour un projet Agile:
 .... “Done Criteria” de Scrum
 .... le Contrat de la livration
 ... la clef pour une meilleure
 communication
 ... mais il peut aussi favoriser
 l’adoption de l’Agilité
Web Runner
Le métier voulait plus de visibilité ...
       ... mais ils n’ont pas acces au
       environment technique du build
Utilisé pour le setup des démos
      ... dans les Sprint Reviews
      ... dans les démos métier
 Cela donne plus de confiance au métier
Deux Ans Apres ...




 Most Valuable Agile Project
Cochonnet est très fier
Communication
BDD clef pour la communication en:
... specifiant critères d’acceptance
... aidant l’équipe pour l’estimation
... détaillant des séquences par étapes
... rendant input/output plus visibles
Confiance
BDD relance la confiance:
... du métier, en rendant le
comportement plus visible et detaillé

... de l’équipe, en livrant “what it says
on the tin” et en permettant des
refactoring sans peur
Traitez les tests comme code

Attention au “scenario smells”:

... répétition d’étapes

... répétition des scénarios

   Il faut faire du refactoring
 Engagez-vous avec le métier
Pairing est de grande valeur

Comportement représente un domaine
partagé:
              Métier

   Testers                 BAs

                Devs
       Pairing baisse le risque
          de malentendu et
      favorise la communication
Scénarios par Sprint
En Conclusion ...
BDD représente un nouveau paradigme:
           mais pas toujours      Comme
simple ...
           facile!                l’Agilité
BDD a joué un rôle clef en developpant ...
... la confiance entre équipe et métier
... du code qui est important pour le métier
Contact
     Mauro Talevi
mauro.talevi@agilesque.com

            http://jbehave.org
Questions
    ... et Démo
(pour les intéressés)

Más contenido relacionado

La actualidad más candente

201001 TDD
201001 TDD201001 TDD
201001 TDDlyonjug
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developerAlice Barralon
 
[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)Cellenza
 
Remettons les tests au coeur des projets
Remettons les tests au coeur des projetsRemettons les tests au coeur des projets
Remettons les tests au coeur des projetsChristophe Gigax
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?Rémi Lesieur
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de testsCellenza
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techMarine Karam
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarElsassJUG
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Guillaume Collic
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 

La actualidad más candente (20)

201001 TDD
201001 TDD201001 TDD
201001 TDD
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developer
 
Présentation kanban
Présentation kanbanPrésentation kanban
Présentation kanban
 
[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)
 
Clean code en pratique
Clean code en pratiqueClean code en pratique
Clean code en pratique
 
Initiation à l'agile
Initiation à l'agileInitiation à l'agile
Initiation à l'agile
 
Remettons les tests au coeur des projets
Remettons les tests au coeur des projetsRemettons les tests au coeur des projets
Remettons les tests au coeur des projets
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 
Method XP
Method XP Method XP
Method XP
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 

Destacado

"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifié"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifiéGerald Reinhart
 
Spécification par l'exemple & Tests d'Acceptance Agile avec cucumber
Spécification par l'exemple & Tests d'Acceptance Agile  avec cucumberSpécification par l'exemple & Tests d'Acceptance Agile  avec cucumber
Spécification par l'exemple & Tests d'Acceptance Agile avec cucumberJean-Michel Garnier
 
Kanban un tour d'horizon
Kanban un tour d'horizonKanban un tour d'horizon
Kanban un tour d'horizonCARA_Lyon
 
Behavior Driven Development - How To Start with Behat
Behavior Driven Development - How To Start with BehatBehavior Driven Development - How To Start with Behat
Behavior Driven Development - How To Start with Behatimoneytech
 
QA Fest 2014. Анна Гаврилюк. Cool as сucumber
QA Fest 2014. Анна Гаврилюк. Cool as сucumberQA Fest 2014. Анна Гаврилюк. Cool as сucumber
QA Fest 2014. Анна Гаврилюк. Cool as сucumberQAFest
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010MD DAY
 
C# Async, un an après
C# Async, un an aprèsC# Async, un an après
C# Async, un an aprèsMicrosoft
 
Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1Microsoft
 
Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"Microsoft pour les PME
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Microsoft
 
Test du futur avec Spock
Test du futur avec SpockTest du futur avec Spock
Test du futur avec SpockCARA_Lyon
 
LMB Entrepreneurs' Boot Camp Handbook 16 May 2011
LMB Entrepreneurs' Boot Camp Handbook 16 May 2011LMB Entrepreneurs' Boot Camp Handbook 16 May 2011
LMB Entrepreneurs' Boot Camp Handbook 16 May 2011CumberlandEllis
 
Aumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCrossAumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCrossakamud
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 
Cerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnelsCerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnelsAurélien Bourdon
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueThomas Pierrain
 

Destacado (20)

"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifié"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifié
 
Spécification par l'exemple & Tests d'Acceptance Agile avec cucumber
Spécification par l'exemple & Tests d'Acceptance Agile  avec cucumberSpécification par l'exemple & Tests d'Acceptance Agile  avec cucumber
Spécification par l'exemple & Tests d'Acceptance Agile avec cucumber
 
Test acceptance
Test acceptanceTest acceptance
Test acceptance
 
Tdd cara nov2010
Tdd cara nov2010Tdd cara nov2010
Tdd cara nov2010
 
Kanban un tour d'horizon
Kanban un tour d'horizonKanban un tour d'horizon
Kanban un tour d'horizon
 
Behavior Driven Development - How To Start with Behat
Behavior Driven Development - How To Start with BehatBehavior Driven Development - How To Start with Behat
Behavior Driven Development - How To Start with Behat
 
QA Fest 2014. Анна Гаврилюк. Cool as сucumber
QA Fest 2014. Анна Гаврилюк. Cool as сucumberQA Fest 2014. Анна Гаврилюк. Cool as сucumber
QA Fest 2014. Анна Гаврилюк. Cool as сucumber
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
C# Async, un an après
C# Async, un an aprèsC# Async, un an après
C# Async, un an après
 
Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1
 
Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Test du futur avec Spock
Test du futur avec SpockTest du futur avec Spock
Test du futur avec Spock
 
LMB Entrepreneurs' Boot Camp Handbook 16 May 2011
LMB Entrepreneurs' Boot Camp Handbook 16 May 2011LMB Entrepreneurs' Boot Camp Handbook 16 May 2011
LMB Entrepreneurs' Boot Camp Handbook 16 May 2011
 
Dot Net Core
Dot Net CoreDot Net Core
Dot Net Core
 
Aumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCrossAumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCross
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 
Cucumber Ecosystem Presentation
Cucumber Ecosystem PresentationCucumber Ecosystem Presentation
Cucumber Ecosystem Presentation
 
Cerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnelsCerberus, un outil pour l'automatisation des tests fonctionnels
Cerberus, un outil pour l'automatisation des tests fonctionnels
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 

Similar a BDD (Behavior Driven Development) - Une voie vers l'agilité

Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010François Wauquier
 
Introduction au BDD (Behavior Driven Development)
Introduction au BDD (Behavior Driven Development)Introduction au BDD (Behavior Driven Development)
Introduction au BDD (Behavior Driven Development)Fabian Vilers
 
Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009François Wauquier
 
Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008guest33ece8
 
Meetup DevOps / WebOps Nîmes 20161020
Meetup DevOps / WebOps Nîmes 20161020Meetup DevOps / WebOps Nîmes 20161020
Meetup DevOps / WebOps Nîmes 20161020NimeOps
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMicrosoft Technet France
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneGrégory Ott
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
devops.pdf
devops.pdfdevops.pdf
devops.pdfqsdqsd4
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveCedric Vidal
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationPHPPRO
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyGuillaume Laforge
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeTelecomValley
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
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)Jean-Pierre Lambert
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Cédric Leblond
 
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, ParisVis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, ParisActency
 

Similar a BDD (Behavior Driven Development) - Une voie vers l'agilité (20)

Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010
 
Introduction au BDD (Behavior Driven Development)
Introduction au BDD (Behavior Driven Development)Introduction au BDD (Behavior Driven Development)
Introduction au BDD (Behavior Driven Development)
 
to Test or not to Test?
to Test or not to Test?to Test or not to Test?
to Test or not to Test?
 
Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009
 
Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008
 
Meetup DevOps / WebOps Nîmes 20161020
Meetup DevOps / WebOps Nîmes 20161020Meetup DevOps / WebOps Nîmes 20161020
Meetup DevOps / WebOps Nîmes 20161020
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
devops.pdf
devops.pdfdevops.pdf
devops.pdf
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehave
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
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)
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !
 
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, ParisVis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
 

Más de CARA_Lyon

Smartphone : et l'informatique devint mobile...
Smartphone : et l'informatique devint mobile...Smartphone : et l'informatique devint mobile...
Smartphone : et l'informatique devint mobile...CARA_Lyon
 
Agile Sans Frontières
Agile Sans FrontièresAgile Sans Frontières
Agile Sans FrontièresCARA_Lyon
 
Building complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and FlexBuilding complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and FlexCARA_Lyon
 
Les outils de l'ergonome agile
Les outils de l'ergonome agileLes outils de l'ergonome agile
Les outils de l'ergonome agileCARA_Lyon
 
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourComment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourCARA_Lyon
 
Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)
Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)
Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)CARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_allCARA_Lyon
 

Más de CARA_Lyon (9)

Smartphone : et l'informatique devint mobile...
Smartphone : et l'informatique devint mobile...Smartphone : et l'informatique devint mobile...
Smartphone : et l'informatique devint mobile...
 
Agile Sans Frontières
Agile Sans FrontièresAgile Sans Frontières
Agile Sans Frontières
 
Building complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and FlexBuilding complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and Flex
 
Les outils de l'ergonome agile
Les outils de l'ergonome agileLes outils de l'ergonome agile
Les outils de l'ergonome agile
 
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourComment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
 
Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)
Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)
Fable du Product Owner et de la Maîtrise d'Ouvrage (MOA)
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all
 

BDD (Behavior Driven Development) - Une voie vers l'agilité

  • 1. BDD: un chemin vers l’Agilité Comment BDD peut favoriser l’adoption d’une approche Agile Mauro Talevi 2011
  • 2. Plan “Pain-Driven Development” Behaviour-Driven Development BDD en Java: JBehave Etude de Cas Questions
  • 4. Maux du Développement Le système ne fait pas ce qu’il devrait Fonctionnalité manquante Le système est développé en “silos” Le système n’est pas accessible ni visible par le métier Pas de tests d’acceptation ... et plus encore!
  • 6. BDD propose un nouveau paradigme ... décrire le un langage comportement est universel c’est la un meilleur type clef de test les tests d’acceptation doivent être automatisables toutes requêtes sont aussi des comportements ... mais ça prend du temps
  • 7. Il y a langage ... et langage
  • 8. Behaviour-Driven Development * *Développement pour les bien élevés
  • 9. (Une des) definitions de Dan North: “BDD essaie d’implémenter une application en décrivant son comportement du point de vue des stakeholders” Qui sont les “stakeholders”? Développement Out-In Parlez le langage du métier
  • 10. Stakeholders Tous ceux qui ont un intérêt dans le système: Métier (bien sûr!) Sécurité Production Audit de Qualité ... et plus encore!
  • 12. Parlez le langage du métier Definissez un langage spécifique pour le domaine (DSL) Concentrez-vous sur les concepts du métier Décrivez les comportements du point de vue du métier Evitez les détails techniques
  • 13. Quelques definitions Une Histoire (User Story): une collection des Scénarios, chacun étant une collection d’étapes Les histoires décrivent des comportements, c.a.d. la fonctionalité attendue par le métier Les scénarios explorent des déclinations de l’histoire, nominales et alternatives
  • 14. Commençons une conversation: Etant donné un seuil de 15.0 Quand une action est échangée á 5.0 Alors le trader ne doit pas être alerté Grammaire BDD d’Etapes: Etant donné - contexte Quand - événement Alors - résultat Et - répète étape précédente
  • 15. Explorez d’autres options du métier: Etant donné un seuil de 15.0 Quand une action est échangée á 16.0 Alors le trader doit être alerté La même grammaire BDD Seules des valeurs ont changé
  • 16. Combinez les étapes: Etant donné un seuil de 15.0 Quand une action est échangée à 5.0 Alors le trader ne doit pas être alerté Quand une action est échangée à 16.0 Alors le trader doit être alerté Choisissez le paramétrage d’étapes
  • 17. Faites évoluer le langage: Etant donné un seuil de 15.0 Quand une action est échangée á 16.0 Alors le trader doit être alerté Alias pour Mêmes paramétres mêmes étapes Langage change Etant donné un seuil de prix de 15.0 Quand un stock est échangé á 16.0 Alors le trader doit être alerté
  • 18. Et en plus ... Tabularisation: quand on a des répétitions d’étapes ou des donné Histoires comme des pre-requis: quand on a des répétitions des histories et des scénarios
  • 19. BDD vs TDD BDD parle un langage du métier, écrit en texte TDD parle un langage technique, écrit en code Ils sont complémentaires, pas en conflit!
  • 20. BDD vs ATDD BDD permet d’automatiser les tests, en mettant l’accent sur la communication ATDD est un paradigme générique d’automatisation des tests, pas toujours communicative
  • 22.
  • 23. Etapes correspondent aux méthodes Java Etant donné un seuil de 15.0 @Given(“un seuil de $seuil”) public void unSeuil(double seuil){ / assignez l’objet pour garder l’état / } Paramétres auto-convertis
  • 24. Tous les types Java sont supportés Strings Booleans Enums Nombres Listes des Strings Listes des nombres
  • 25. Types des paramétres sur-mesure @Given(“la date de $date”) public void uneDate(Date date){ / Date est multi-format / } Etant donné la date de 01/04/2010 DateConverter implements ParameterConverter { public Object convertValue(String value, Type type) { / DateFormat injectée dans DateConverter / return dateFormat.parse(value); } }
  • 26. Alias Etant donné un seuil de 15.0 Etant donné un seuil de prix de 15.0 @Given(“un seuil de $seuil”) @Alias(“un seuil de prix de $seuil”) public void unSeuil(double seuil){ / assignez l’objet pour garder l’état / } Evolution du langage du scénario
  • 27. Un scénario Web Scénario: Un article est ajouté au panier du site e-commerce Etant donné le panier est vide Quand je recherche un article Et l’article est ajouté au panier Alors le panier contient cet article On décrit les interactions des utilisateurs Pas les détails HTTP/HTML
  • 28. Groovy WebDriver class Home extends BasePage { def Home(WebDriverProvider webDriverProvider) { super(webDriverProvider) } def go() { get("http://www.etsy.com") } def go(String section) { go() findElement(By.xpath("//a[@title = '$section']")).click() } def search(String thing) { findElement(By.id("search-facet")).click() findElement(By.className("all")).click() findElement(By.id("search-query")).sendKeys(thing) findElement(By.id("search_submit")).click() } def goToBuySection() { findElement(By.linkText("Buy")).click() } } WebDriver agit comme une API
  • 30. Reporting StoryReporter observe les événements (“Observer Pattern”) En entrée texte (peut-être a wiki) En sortie plusieurs formats: CONSOLE, HTML, XML, TXT, STATS
  • 33. Et en plus ... Dependency Injection Multi-Threading Story Mapping Web Queue Web Runner
  • 35. Contexte Projet stratégique pour une banque globale d’investissement Commencé en Sept 2008 ... ... des temps très interessants pour le monde financier!
  • 36. Technologie Application Java Enterprise Architecture basée sur JMS (transactionnelle) Interfaçant plusieurs systèmes internes Focus initial sur le “core back-end” “Web front-end” ajouté plus tard
  • 37. Méthodologie Projet Agile Scrum Sprints de deux semaines Equipe jusqu’á 10 membres Auto-organisé: devs, testers, BA, SM Le SM c’est pas un Chef de Projet!
  • 38. Les Stakeholders “No world is an island” ... ... plusieurs stakeholders Métier Securité Production Infrastructure Sans expérience d’Agile ni de BDD ... ... mais très investis & pas juste concernés!
  • 39. Le Poulet & Le Cochon Il faut être tous des cochons!
  • 40. Cochonnet Le plus important membre de l’équipe
  • 42. BDD et l’Agilité BDD ideale pour un projet Agile: .... “Done Criteria” de Scrum .... le Contrat de la livration ... la clef pour une meilleure communication ... mais il peut aussi favoriser l’adoption de l’Agilité
  • 43. Web Runner Le métier voulait plus de visibilité ... ... mais ils n’ont pas acces au environment technique du build Utilisé pour le setup des démos ... dans les Sprint Reviews ... dans les démos métier Cela donne plus de confiance au métier
  • 44. Deux Ans Apres ... Most Valuable Agile Project
  • 46. Communication BDD clef pour la communication en: ... specifiant critères d’acceptance ... aidant l’équipe pour l’estimation ... détaillant des séquences par étapes ... rendant input/output plus visibles
  • 47. Confiance BDD relance la confiance: ... du métier, en rendant le comportement plus visible et detaillé ... de l’équipe, en livrant “what it says on the tin” et en permettant des refactoring sans peur
  • 48. Traitez les tests comme code Attention au “scenario smells”: ... répétition d’étapes ... répétition des scénarios Il faut faire du refactoring Engagez-vous avec le métier
  • 49. Pairing est de grande valeur Comportement représente un domaine partagé: Métier Testers BAs Devs Pairing baisse le risque de malentendu et favorise la communication
  • 51. En Conclusion ... BDD représente un nouveau paradigme: mais pas toujours Comme simple ... facile! l’Agilité BDD a joué un rôle clef en developpant ... ... la confiance entre équipe et métier ... du code qui est important pour le métier
  • 52. Contact Mauro Talevi mauro.talevi@agilesque.com http://jbehave.org
  • 53. Questions ... et Démo (pour les intéressés)