SlideShare a Scribd company logo
1 of 12
Introduction au BDD
(Behavior-Driven Development)
Ou comment passer le TDD (Test-Driven Development) sous
stéroïdes
Qui suis-je ?
Intrigué et intéressé par les ordinateurs
et la technologie depuis 1984
Premier site web professionnel en 1995
Professionnel de l’IT depuis 1999
Spécialiste .NET depuis 2005
Consultant depuis 2007
Fondateur et CTO de différentes sociétés
Connectons sur LinkedIn
Suivez moi sur Twitter (@fvilers)
Exemple concret
Penser à la dernière fois que vous avez utilisé une application sur votre téléphone
ou ordinateur
Donner une exemple de la dernière utilisation que vous avez fait de Twitter
Visualisez un cas concret d’utilisation d’une fonctionnalité, avec tous les détails
Était-ce assez concret cette fois-ci ?
En quelques mots…
Processus d’exploration, de découverte, de définition, et de mise au point du
design et du comportement d’un système informatique utilisant la conversation,
des exemples concrets et des tests automatisés afin de partager une
compréhension commune.
Qu’est-ce que c’est ?
Combine et étend le TDD et le « Domain-Driven Design » (DDD)
Les scénarios sont écrits avant le code
Ils font partie intégrante de l’« ubiquitous language » (langage omniprésent/universel)
Le scénario est transformé en tests exécutables
Idéal pour les tests d’acceptation
Utilise une syntaxe légère (« Gherkin » – une variété de concombre)
Modifie l’approche des tests en proposant l’utilisation d’une langue naturelle
Pourquoi en parler aujourd’hui ?
Requiert un processus Agile
Les scénarios sont mis au point « just in time » (au dernier moment)
Les scénarios suivent la structure des « user stories »
L’écriture des scénarios est ordonnée selon la valeur métier des fonctionnalités
L’équipe de réalisation et les « stakeholders » peuvent être impliqués
Est-ce si différent du TDD ?
En TDD, pour chaque unité de code, le développeur devra :
Ecrire un jeu de test correspondant
Implémenter l’unité de code
Vérifier que l’implémentation passe les tests
Les tests unitaires attestent de la conformité technique de bas niveau
Le BDD permet d’écrire des tests plus fonctionnels où l’on s’assure du bon
comportement du code, et donc du besoin exprimé par le métier
Le BDD encourage les analystes et les développeurs à collaborer plus étroitement
dans la rédaction des « user stories »
Comment rédiger un test ?
Le BDD emprunte le format des « user stories » et du design orienté objet
Le scénario est narratif et doit avoir un titre précis
La section d’introduction présente:
Qui est l’utilisateur principal
Quel effet sera produit
Quelle valeur sera retirée de la fonctionnalité
Ensuite, chaque scénario décrit un cas d’utilisation en spécifiant:
Une condition initiale
Le ou les événements qui modifie le système
L’état final attendu
Gherkin
Lisible par le métier
Produit un « Domain Specific Language » (DSL)
Peut servir de documentation
Sera utilisé par les tests automatisés
Peu de mots-clés à connaître
La syntaxe
Gherkin est un langage orienté ligne (comme Python)
Chaque ligne exprime une étape du scénario (« step »)
Il utilise l’indentation pour définir la structure
La plupart des lignes commencent par un mot-clé
Un commentaire est préfixé du dièse (#)
Un scénario est rédigé dans l’une des 37 langues supportées
Exemple
Feature: Serve coffee
Coffee should not be served until paid for
Coffee should not be served until the button has been pressed
If there is no coffee left then money should be refunded
Scenario: Buy last coffee
Given there are 1 coffees left in the machine
And I have deposited 1$
When I press the coffee button
Then I should be served a coffee
Démonstration
En C#, et en utilisant SpecFlow

More Related Content

Similar to Introduction au BDD (Behavior Driven Development)

devops.pdf
devops.pdfdevops.pdf
devops.pdfqsdqsd4
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
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
 
DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?Ludovic Piot
 
[TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte![TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte!Alexandre Touret
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4Emmanuel Hugonnet
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteePatrick MOREAU
 
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursKit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursStéphanie Hertrich
 
Zoom sur le métier de Consultant Techique
Zoom sur le métier de Consultant TechiqueZoom sur le métier de Consultant Techique
Zoom sur le métier de Consultant TechiqueANAPEC
 
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
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation Microsoft
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Introduction of the most important design pattern
Introduction of the most important design patternIntroduction of the most important design pattern
Introduction of the most important design patternThierry Gayet
 
Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...
Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...
Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...Pyxis Technologies
 
Zoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurZoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurANAPEC
 
Soft fluent@md day2011
Soft fluent@md day2011Soft fluent@md day2011
Soft fluent@md day2011MDDAY11
 

Similar to Introduction au BDD (Behavior Driven Development) (20)

devops.pdf
devops.pdfdevops.pdf
devops.pdf
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
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)
 
DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?
 
[TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte![TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte!
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
 
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursKit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des Entrepreneurs
 
Zoom sur le métier de Consultant Techique
Zoom sur le métier de Consultant TechiqueZoom sur le métier de Consultant Techique
Zoom sur le métier de Consultant Techique
 
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...
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Introduction of the most important design pattern
Introduction of the most important design patternIntroduction of the most important design pattern
Introduction of the most important design pattern
 
Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...
Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...
Le rôle de l'analyste d'affaires et la place de la documentation dans un proc...
 
Zoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurZoom sur le Métier de Développeur
Zoom sur le Métier de Développeur
 
WygDay Pleniere
WygDay   PleniereWygDay   Pleniere
WygDay Pleniere
 
Strasbourg2010 damy
Strasbourg2010 damyStrasbourg2010 damy
Strasbourg2010 damy
 
Soft fluent@md day2011
Soft fluent@md day2011Soft fluent@md day2011
Soft fluent@md day2011
 

More from Fabian Vilers

JavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemarsJavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemarsFabian Vilers
 
REST in peace avec GraphQL
REST in peace avec GraphQLREST in peace avec GraphQL
REST in peace avec GraphQLFabian Vilers
 
MEAN (Jeudis du Libre)
MEAN (Jeudis du Libre)MEAN (Jeudis du Libre)
MEAN (Jeudis du Libre)Fabian Vilers
 
Introduction à meteor
Introduction à meteorIntroduction à meteor
Introduction à meteorFabian Vilers
 
Social Sitters Final Pitch
Social Sitters Final PitchSocial Sitters Final Pitch
Social Sitters Final PitchFabian Vilers
 

More from Fabian Vilers (10)

React live coding
React live codingReact live coding
React live coding
 
JavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemarsJavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemars
 
REST in peace avec GraphQL
REST in peace avec GraphQLREST in peace avec GraphQL
REST in peace avec GraphQL
 
MEAN (Jeudis du Libre)
MEAN (Jeudis du Libre)MEAN (Jeudis du Libre)
MEAN (Jeudis du Libre)
 
MEAN (DevFM)
MEAN (DevFM)MEAN (DevFM)
MEAN (DevFM)
 
Introduction à meteor
Introduction à meteorIntroduction à meteor
Introduction à meteor
 
CQRS
CQRSCQRS
CQRS
 
Owin & katana
Owin & katanaOwin & katana
Owin & katana
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Social Sitters Final Pitch
Social Sitters Final PitchSocial Sitters Final Pitch
Social Sitters Final Pitch
 

Introduction au BDD (Behavior Driven Development)

  • 1. Introduction au BDD (Behavior-Driven Development) Ou comment passer le TDD (Test-Driven Development) sous stéroïdes
  • 2. Qui suis-je ? Intrigué et intéressé par les ordinateurs et la technologie depuis 1984 Premier site web professionnel en 1995 Professionnel de l’IT depuis 1999 Spécialiste .NET depuis 2005 Consultant depuis 2007 Fondateur et CTO de différentes sociétés Connectons sur LinkedIn Suivez moi sur Twitter (@fvilers)
  • 3. Exemple concret Penser à la dernière fois que vous avez utilisé une application sur votre téléphone ou ordinateur Donner une exemple de la dernière utilisation que vous avez fait de Twitter Visualisez un cas concret d’utilisation d’une fonctionnalité, avec tous les détails Était-ce assez concret cette fois-ci ?
  • 4. En quelques mots… Processus d’exploration, de découverte, de définition, et de mise au point du design et du comportement d’un système informatique utilisant la conversation, des exemples concrets et des tests automatisés afin de partager une compréhension commune.
  • 5. Qu’est-ce que c’est ? Combine et étend le TDD et le « Domain-Driven Design » (DDD) Les scénarios sont écrits avant le code Ils font partie intégrante de l’« ubiquitous language » (langage omniprésent/universel) Le scénario est transformé en tests exécutables Idéal pour les tests d’acceptation Utilise une syntaxe légère (« Gherkin » – une variété de concombre) Modifie l’approche des tests en proposant l’utilisation d’une langue naturelle
  • 6. Pourquoi en parler aujourd’hui ? Requiert un processus Agile Les scénarios sont mis au point « just in time » (au dernier moment) Les scénarios suivent la structure des « user stories » L’écriture des scénarios est ordonnée selon la valeur métier des fonctionnalités L’équipe de réalisation et les « stakeholders » peuvent être impliqués
  • 7. Est-ce si différent du TDD ? En TDD, pour chaque unité de code, le développeur devra : Ecrire un jeu de test correspondant Implémenter l’unité de code Vérifier que l’implémentation passe les tests Les tests unitaires attestent de la conformité technique de bas niveau Le BDD permet d’écrire des tests plus fonctionnels où l’on s’assure du bon comportement du code, et donc du besoin exprimé par le métier Le BDD encourage les analystes et les développeurs à collaborer plus étroitement dans la rédaction des « user stories »
  • 8. Comment rédiger un test ? Le BDD emprunte le format des « user stories » et du design orienté objet Le scénario est narratif et doit avoir un titre précis La section d’introduction présente: Qui est l’utilisateur principal Quel effet sera produit Quelle valeur sera retirée de la fonctionnalité Ensuite, chaque scénario décrit un cas d’utilisation en spécifiant: Une condition initiale Le ou les événements qui modifie le système L’état final attendu
  • 9. Gherkin Lisible par le métier Produit un « Domain Specific Language » (DSL) Peut servir de documentation Sera utilisé par les tests automatisés Peu de mots-clés à connaître
  • 10. La syntaxe Gherkin est un langage orienté ligne (comme Python) Chaque ligne exprime une étape du scénario (« step ») Il utilise l’indentation pour définir la structure La plupart des lignes commencent par un mot-clé Un commentaire est préfixé du dièse (#) Un scénario est rédigé dans l’une des 37 langues supportées
  • 11. Exemple Feature: Serve coffee Coffee should not be served until paid for Coffee should not be served until the button has been pressed If there is no coffee left then money should be refunded Scenario: Buy last coffee Given there are 1 coffees left in the machine And I have deposited 1$ When I press the coffee button Then I should be served a coffee
  • 12. Démonstration En C#, et en utilisant SpecFlow

Editor's Notes

  1. Vous avez probablement cité le nom d’une application, ou d’un programme (Twitter, Facebook, Word,…) Était-ce concret? Complet? Avec des détails? Ou simplement le nom d’une fonctionnalité? (j’ai lu mes messages privés) Hier, comme tous les matins, j’attend mon train qui me transporte durant 40 minutes au travail. Souhaitant optimiser mon temps, je me connecte à Twitter à repère les articles intéressants sur le développement logiciel et la politique. J’ouvre tous les articles dans des onglets de mon navigateur parce que je sais que le signal de mon téléphone est faible sur la ligne de train.