BDD – CUCUMBER
        Behavior Driven Development
  Introduction avec Cucumber & Cucumber-
                    nagios




Hervé Leclerc                  Septembre 2011
BDD
 TDD
 DDD
CQCB ?
TDD – BDD – DDD
●   Méthodes de développement Agile
●   TDD : Test Driven Development
●   BDD : Behavior Driven Development
●   DDD : Domain Driven Design
DDD
●   Méthode de conception logiciel pilotée par le
    domaine, le métier
●   L'approche est reconnue mais peu connue
●   Focus sur les aspect métiers
●   Lignes directrices concernant pratiques et
    organisation du code pour obtenir un code
    reflet fidèle au métier qu'il couvre et ayant une
    meilleure résistance au changement.
TDD
●   Wikipédia :
●   Écrire un premier test
●   Vérifier qu'il échoue (car le code qu'il teste n'existe
    pas), afin de vérifier que le test est valide
●   Écrire juste le code suffisant pour passer le test
●   Vérifier que le test passe ;
●   Puis re factoriser le code, c'est-à-dire l'améliorer tout
    en gardant les mêmes fonctionnalités.
LE TDD C'EST BIEN MAIS...
●   Ça sert à quoi d’écrire les tests en premier ?
●   Ok, j’écris les tests en premier mais quel est le
    premier test que j’écris ?
●   Je dois tout tester ou seulement certaines
    choses ?
TDD

      BDD
DDD
BDD
●   2003 Dan North en défini le concept
●   Principes :
    ●   "Tout est comportement", où le pôle commercial et
        technologique doivent se référer à des
        comportements identiques et parler le même
        langage.
    ●   "Où le business compte", c’est à dire que chaque
        système doit apporter un retour sur le business
    ●   "EnoughIsEnough", faire ce qu’il faut pour atteindre
        son but fixé, ni plus, ni moins
BDD : Scénario
●   On écrit des scénarios (story)
●   Tous les scénarios suivent le même modèle :
    ●   Un contexte
    ●   Une demande de fonctionnalité
    ●   La récupération d'un bénéfice (ou pas)
●   Parfaitement adaptée à Scrum
●   Permet à tout le monde (CP,DEV,COM,CLI...) d'exprimer des
    besoins dans même langage
●   Les scénarios servent de critères d'acceptations → une fois
    acceptés on est sûr que l'application se comporte comme ce
    qui a été défini dans les scénarios
BDD → cucumber

Story :
As a [rôle]
I want to (some action)
So that (business value)


                                           Feature
                           Scenario: Title
                           Given [some context]
                           And [Additionnal context]
                           When [Event]
                           Then [outcome]
cucumber
●   Gem permettant d’exécuter des fonctionnalités
    écrites sous forme de fichiers texte afin de
    réaliser des tests automatisés
●   Chaque Feature peut contenir plusieurs
    scénarios
●   La facilité d'écriture des scénario permet à des
    non informaticiens d'écrire les fonctionnalité
●   Le développeurs développeront le code pour
    réaliser les fonctions scénario
Exemple de scénario
Feature: www.alterway.fr
 It should be up
 And I should be able to search for things


 Scenario: Look Host www.alterway.fr
  When I lookup "www.alterway.fr"
  Then the name should resolve to "XXX.XXX.XXX.XXX"


 Scenario: Searching for things
  When I go to "http://www.alterway.fr"
  And I fill in "search_block_form" with "industrialisation"
  And I press "Recherche"
  Then I should see "Industrialisation Php"
Gherkin est i18n so...
# language: fr
Fonctionnalité: www.alterway.fr
 Il devrait être en ligne
 Et Il devrait être capable de chercher des trucs


 Scénario: Chercher des trucs
  Etant donné Je suis sur un HTTP authentifié avec les crédences suivantes:
  | username | password |
  |an-user | a-password |
  Quand Je vais sur "http://www.example.fr/"
  Et Je remplis "search_block_form" avec "industrialisation"
  Et Je clique sur "Recherche"
  Alors Je devrais voir "Industrialisation Php"
  Quand Je suis "Industrialisation Php"
  Alors Je devrais voir "Le constat est clair"
En Action !



an-user   a-password
cucumber-nagios
●   Permet de faire du BDD sur de l'infra
Demain
DEMO

Pizza party 30-09-2011 bdd-cucumber

  • 1.
    BDD – CUCUMBER Behavior Driven Development Introduction avec Cucumber & Cucumber- nagios Hervé Leclerc Septembre 2011
  • 2.
  • 3.
    TDD – BDD– DDD ● Méthodes de développement Agile ● TDD : Test Driven Development ● BDD : Behavior Driven Development ● DDD : Domain Driven Design
  • 4.
    DDD ● Méthode de conception logiciel pilotée par le domaine, le métier ● L'approche est reconnue mais peu connue ● Focus sur les aspect métiers ● Lignes directrices concernant pratiques et organisation du code pour obtenir un code reflet fidèle au métier qu'il couvre et ayant une meilleure résistance au changement.
  • 5.
    TDD ● Wikipédia : ● Écrire un premier test ● Vérifier qu'il échoue (car le code qu'il teste n'existe pas), afin de vérifier que le test est valide ● Écrire juste le code suffisant pour passer le test ● Vérifier que le test passe ; ● Puis re factoriser le code, c'est-à-dire l'améliorer tout en gardant les mêmes fonctionnalités.
  • 6.
    LE TDD C'ESTBIEN MAIS... ● Ça sert à quoi d’écrire les tests en premier ? ● Ok, j’écris les tests en premier mais quel est le premier test que j’écris ? ● Je dois tout tester ou seulement certaines choses ?
  • 7.
    TDD BDD DDD
  • 8.
    BDD ● 2003 Dan North en défini le concept ● Principes : ● "Tout est comportement", où le pôle commercial et technologique doivent se référer à des comportements identiques et parler le même langage. ● "Où le business compte", c’est à dire que chaque système doit apporter un retour sur le business ● "EnoughIsEnough", faire ce qu’il faut pour atteindre son but fixé, ni plus, ni moins
  • 9.
    BDD : Scénario ● On écrit des scénarios (story) ● Tous les scénarios suivent le même modèle : ● Un contexte ● Une demande de fonctionnalité ● La récupération d'un bénéfice (ou pas) ● Parfaitement adaptée à Scrum ● Permet à tout le monde (CP,DEV,COM,CLI...) d'exprimer des besoins dans même langage ● Les scénarios servent de critères d'acceptations → une fois acceptés on est sûr que l'application se comporte comme ce qui a été défini dans les scénarios
  • 10.
    BDD → cucumber Story : As a[rôle] I want to (some action) So that (business value) Feature Scenario: Title Given [some context] And [Additionnal context] When [Event] Then [outcome]
  • 11.
    cucumber ● Gem permettant d’exécuter des fonctionnalités écrites sous forme de fichiers texte afin de réaliser des tests automatisés ● Chaque Feature peut contenir plusieurs scénarios ● La facilité d'écriture des scénario permet à des non informaticiens d'écrire les fonctionnalité ● Le développeurs développeront le code pour réaliser les fonctions scénario
  • 12.
    Exemple de scénario Feature:www.alterway.fr It should be up And I should be able to search for things Scenario: Look Host www.alterway.fr When I lookup "www.alterway.fr" Then the name should resolve to "XXX.XXX.XXX.XXX" Scenario: Searching for things When I go to "http://www.alterway.fr" And I fill in "search_block_form" with "industrialisation" And I press "Recherche" Then I should see "Industrialisation Php"
  • 13.
    Gherkin est i18nso... # language: fr Fonctionnalité: www.alterway.fr Il devrait être en ligne Et Il devrait être capable de chercher des trucs Scénario: Chercher des trucs Etant donné Je suis sur un HTTP authentifié avec les crédences suivantes: | username | password | |an-user | a-password | Quand Je vais sur "http://www.example.fr/" Et Je remplis "search_block_form" avec "industrialisation" Et Je clique sur "Recherche" Alors Je devrais voir "Industrialisation Php" Quand Je suis "Industrialisation Php" Alors Je devrais voir "Le constat est clair"
  • 14.
  • 16.
    cucumber-nagios ● Permet de faire du BDD sur de l'infra
  • 17.
  • 18.