BDD:un chemin vers l’Agilité Comment BDD peut favoriserl’adoption d’une approche Agile      Mauro Talevi                  ...
Plan “Pain-Driven Development”Behaviour-Driven Development   BDD en Java: JBehave       Etude de Cas         Questions
Pain-DrivenDevelopment **Développement pour les SM
Maux du DéveloppementLe système ne fait pas ce qu’il devrait      Fonctionnalité manquante Le système est développé en “si...
Un Exemple... c’est familier?
BDD propose un nouveau paradigme ...       décrire le            un langage      comportement est   universel c’est la    ...
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 d...
StakeholdersTous ceux qui ont un intérêt      dans le système:     Métier (bien sûr!)         Sécurité        Production  ...
Développement Out-InChoisissez la bonne frontiere
Parlez le langage du métierDefinissez un langage spécifique pour le            domaine (DSL) Concentrez-vous sur les concept...
Quelques definitions      Une Histoire (User Story):      une collection des Scénarios,      chacun étant une collection d’...
Commençons une conversation:Etant donné un seuil de 15.0Quand une action est échangée á 5.0Alors le trader ne doit pas êtr...
Explorez d’autres options du métier:Etant donné un seuil de 15.0Quand une action est échangée á 16.0Alors le trader doit ê...
Combinez les étapes:Etant donné un seuil de 15.0Quand une action est échangée à 5.0Alors le trader ne doit pas être alerté...
Faites évoluer le langage:Etant donné un seuil de 15.0Quand une action est échangée á 16.0Alors le trader doit être alerté...
Et en plus ... Tabularisation: quand on a desrépétitions d’étapes ou des donnéHistoires comme des pre-requis:quand on a de...
BDD vs TDDBDD parle un langage du métier,        écrit en texteTDD parle un langage technique,         écrit en code   Ils...
BDD vs ATDDBDD permet d’automatiser les tests,    en mettant l’accent sur la         communicationATDD est un paradigme gé...
BDD en Java
Etapes correspondent aux méthodes Java      Etant donné un seuil de 15.0   @Given(“un seuil de $seuil”)   public void unSe...
Tous les types Java sont supportésStrings             Booleans     Enums                 NombresListes des Strings        ...
Types des paramétres sur-mesure        @Given(“la date de $date”)        public void uneDate(Date date){          / Date e...
AliasEtant donné un seuil de 15.0Etant donné un seuil de prix de 15.0  @Given(“un seuil de $seuil”)  @Alias(“un seuil de p...
Un scénario Web    Scénario: Un article est ajouté au    panier du site e-commerce    Etant donné le panier est vide    Qu...
Groovy WebDriverclass Home extends BasePage {    def Home(WebDriverProvider webDriverProvider) {      super(webDriverProvi...
Exécutions
ReportingStoryReporter observe lesévénements (“Observer Pattern”)En entrée texte (peut-être a wiki)En sortie plusieurs for...
Un Exemple
Un Report HTML
Et en plus ...Dependency Injection  Multi-Threading   Story Mapping   Web Queue    Web Runner
Etude de Cas
ContexteProjet stratégique pourune banque globaled’investissementCommencé en Sept 2008 ...... des temps trèsinteressants p...
TechnologieApplication Java EnterpriseArchitecture basée sur JMS (transactionnelle)Interfaçant plusieurs systèmes internes...
MéthodologieProjet Agile ScrumSprints de deux semainesEquipe jusqu’á 10 membresAuto-organisé: devs, testers, BA, SM  Le SM...
Les Stakeholders“No world is an island” ...                ... plusieurs stakeholders  Métier          Securité         Pr...
Le Poulet  & Le CochonIl faut être tous des cochons!
CochonnetLe 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...
Web RunnerLe métier voulait plus de visibilité ...       ... mais ils n’ont pas acces au       environment technique du bu...
Deux Ans Apres ... Most Valuable Agile Project
Cochonnet est très fier
CommunicationBDD clef pour la communication en:... specifiant critères d’acceptance... aidant l’équipe pour l’estimation......
ConfianceBDD relance la confiance:... du métier, en rendant lecomportement plus visible et detaillé... de l’équipe, en livra...
Traitez les tests comme codeAttention au “scenario smells”:... répétition d’étapes... répétition des scénarios   Il faut f...
Pairing est de grande valeurComportement représente un domainepartagé:              Métier   Testers                 BAs  ...
Scénarios par Sprint
En Conclusion ...BDD représente un nouveau paradigme:           mais pas toujours      Commesimple ...           facile!  ...
Contact     Mauro Talevimauro.talevi@agilesque.com            http://jbehave.org
Questions    ... et Démo(pour les intéressés)
BDD (Behavior Driven Development) - Une voie vers l'agilité
Prochain SlideShare
Chargement dans…5
×

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

1 997 vues

Publié le

Mauro Talevi @Mix-IT 2011

Publié dans : Technologie, Business
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 997
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
51
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 1. BDD:un chemin vers l’Agilité Comment BDD peut favoriserl’adoption d’une approche Agile Mauro Talevi 2011
  2. 2. Plan “Pain-Driven Development”Behaviour-Driven Development BDD en Java: JBehave Etude de Cas Questions
  3. 3. Pain-DrivenDevelopment **Développement pour les SM
  4. 4. Maux du DéveloppementLe 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!
  5. 5. Un Exemple... c’est familier?
  6. 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. 7. Il y a langage ... et langage
  8. 8. Behaviour-Driven Development **Développement pour les bien élevés
  9. 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. 10. StakeholdersTous 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!
  11. 11. Développement Out-InChoisissez la bonne frontiere
  12. 12. Parlez le langage du métierDefinissez un langage spécifique pour le domaine (DSL) Concentrez-vous sur les concepts du métierDécrivez les comportements du point de vue du métier Evitez les détails techniques
  13. 13. Quelques definitions Une Histoire (User Story): une collection des Scénarios, chacun étant une collection d’étapesLes histoires décrivent descomportements, c.a.d. la fonctionalitéattendue par le métier Les scénarios explorent des déclinations de l’histoire, nominales et alternatives
  14. 14. Commençons une conversation:Etant donné un seuil de 15.0Quand une action est échangée á 5.0Alors 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. 15. Explorez d’autres options du métier:Etant donné un seuil de 15.0Quand une action est échangée á 16.0Alors le trader doit être alerté La même grammaire BDD Seules des valeurs ont changé
  16. 16. Combinez les étapes:Etant donné un seuil de 15.0Quand une action est échangée à 5.0Alors le trader ne doit pas être alertéQuand une action est échangée à 16.0Alors le trader doit être alerté Choisissez le paramétrage d’étapes
  17. 17. Faites évoluer le langage:Etant donné un seuil de 15.0Quand une action est échangée á 16.0Alors le trader doit être alertéAlias pour Mêmes paramétresmêmes étapes Langage changeEtant donné un seuil de prix de 15.0Quand un stock est échangé á 16.0Alors le trader doit être alerté
  18. 18. Et en plus ... Tabularisation: quand on a desré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. 19. BDD vs TDDBDD parle un langage du métier, écrit en texteTDD parle un langage technique, écrit en code Ils sont complémentaires, pas en conflit!
  20. 20. BDD vs ATDDBDD permet d’automatiser les tests, en mettant l’accent sur la communicationATDD est un paradigme générique d’automatisation des tests, pas toujours communicative
  21. 21. BDD en Java
  22. 22. 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
  23. 23. Tous les types Java sont supportésStrings Booleans Enums NombresListes des Strings Listes des nombres
  24. 24. 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/2010DateConverter implements ParameterConverter { public Object convertValue(String value, Type type) { / DateFormat injectée dans DateConverter / return dateFormat.parse(value); }}
  25. 25. AliasEtant donné un seuil de 15.0Etant 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
  26. 26. 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 articleOn décrit les interactions des utilisateurs Pas les détails HTTP/HTML
  27. 27. Groovy WebDriverclass 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
  28. 28. Exécutions
  29. 29. ReportingStoryReporter observe lesévénements (“Observer Pattern”)En entrée texte (peut-être a wiki)En sortie plusieurs formats:CONSOLE, HTML, XML, TXT, STATS
  30. 30. Un Exemple
  31. 31. Un Report HTML
  32. 32. Et en plus ...Dependency Injection Multi-Threading Story Mapping Web Queue Web Runner
  33. 33. Etude de Cas
  34. 34. ContexteProjet stratégique pourune banque globaled’investissementCommencé en Sept 2008 ...... des temps trèsinteressants pour lemonde financier!
  35. 35. TechnologieApplication Java EnterpriseArchitecture basée sur JMS (transactionnelle)Interfaçant plusieurs systèmes internesFocus initial sur le “core back-end”“Web front-end” ajouté plus tard
  36. 36. MéthodologieProjet Agile ScrumSprints de deux semainesEquipe jusqu’á 10 membresAuto-organisé: devs, testers, BA, SM Le SM c’est pas un Chef de Projet!
  37. 37. Les Stakeholders“No world is an island” ... ... plusieurs stakeholders Métier Securité Production InfrastructureSans expérience d’Agile ni de BDD ... ... mais très investis & pas juste concernés!
  38. 38. Le Poulet & Le CochonIl faut être tous des cochons!
  39. 39. CochonnetLe plus important membre de l’équipe
  40. 40. BDD et l’Agilité
  41. 41. 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é
  42. 42. Web RunnerLe métier voulait plus de visibilité ... ... mais ils n’ont pas acces au environment technique du buildUtilisé pour le setup des démos ... dans les Sprint Reviews ... dans les démos métier Cela donne plus de confiance au métier
  43. 43. Deux Ans Apres ... Most Valuable Agile Project
  44. 44. Cochonnet est très fier
  45. 45. CommunicationBDD 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
  46. 46. ConfianceBDD relance la confiance:... du métier, en rendant lecomportement plus visible et detaillé... de l’équipe, en livrant “what it sayson the tin” et en permettant desrefactoring sans peur
  47. 47. Traitez les tests comme codeAttention 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
  48. 48. Pairing est de grande valeurComportement représente un domainepartagé: Métier Testers BAs Devs Pairing baisse le risque de malentendu et favorise la communication
  49. 49. Scénarios par Sprint
  50. 50. En Conclusion ...BDD représente un nouveau paradigme: mais pas toujours Commesimple ... 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
  51. 51. Contact Mauro Talevimauro.talevi@agilesque.com http://jbehave.org
  52. 52. Questions ... et Démo(pour les intéressés)

×