BDD : Les cucurbitacées au service de la qualité logicielle
Gherkin, Cucumber & Pickles

BDD - Behaviour-Driven Development

  • MĂ©thode crĂ©Ă©e en 2003 par Dan North
  • Part du constat que le TDD est une pratique complexe
  • Utiliser le langage naturel plutĂ´t que du code
    • plus lisible
    • permet de travailler main dans la main avec les Ă©quipes mĂ©tiers
    • permet de se concentrer sur le mĂ©tier, pas uniquement la technique
  • Proche du mouvement DDD
  • Behaviour != Test : on va plus loin qu’un simple technique, on parle du comportement attendu

Test oriented

Behaviour oriented

public class CustomerLookupTest {

    void testFindCustomerById() {
        // check if CustomerLookup get a customer by its id
    }

    void testFailsForDuplicateCustomers() {
        // check if it fails if customer is duplicated
    }

    // other tests
}
public class CustomerLookupBehaviour {

    void shouldFindCustomerById() {
        // check if CustomerLookup get a customer by its id
    }

    void shouldFailsForDuplicateCustomers() {
        // check if it fails if customer is duplicated
    }

    // other tests
}

BDD - niveau 0

Test ➡ Should

➡

Gherkin

Gherkin

Given : Étant donné un contexte initial

When : Lorsqu'un événement survient

Then :  On s'assure de l'obtention de certains résultats

Langage (utilisé dans la plupart des outils BDD) ayant un vocabulaire commun entre le métier de développeur et fonctionnel.

Il permet de créer des features, et de décrire des scénarios.

Gherkin - Feature

Fonctionnalité que l'on cherche à décrire, avec un titre et une description qui seront utilisées pour la documentation.
Le format est totalement libre, ce qui laisse la possibilité de décrire la fonctionnalité sous la forme d'une user story
Elle contient un ou plusieurs scénarios

Feature: Serve coffee
  In order to earn money
  Customers should be able to
  buy coffee at all times

  Scenario: Buy last coffee
    Given there are 1 coffees left in the machine
    And I have deposited 1 dollar
    When I press the coffee button
    Then I should be served a coffee

Gherkin - Scenario

Exemple d'un cas d'utilisation représentatif d'une fonctionnalité, utilisant la syntaxe Given - When - Then

Scenario: Wilson posts to his own blog
  Given I am logged in as Wilson
  When I try to post to "Wilson's Blog"
  Then I should see "Your article was published."

Scenario: Wilson fails to post to somebody else's blog
  Given I am logged in as Wilson
  When I try to post to "Greg's Blog"
  Then I should see "Hey! That's not your blog!"

Gherkin - Scenario outline

Gherkin offre la possibilité de templatiser un scénario pour faciliter l'écriture et éviter la duplication de scénarios

Scenario Outline: Eating
  Given there are <start> cucumbers
  When I eat <eat> cucumbers
  Then I should have <left> cucumbers

  Examples:
    | start | eat | left |
    |  12   |  5  |  7   |
    |  20   |  5  |  15  |

Et TDD lĂ  dedans ?

TDD & BDD

BDD va quand même plus loin, bien qu'elle reste fortement liée à TDD

  • BDD est une mĂ©thode collaborative qui promeut l'Ă©change avec le mĂ©tier en s'appuyant sur la rĂ©daction du comportement attendu
  • TDD est une mĂ©thode de design qui met l'accent sur l'assurance que le logiciel rĂ©agit d'une manière attendue

TDD & BDD

TDD

Doing the thing right

BDD

Doing the right thing

BDD est une méthode à la fois organisationnelle et technique.
 

 

Nous n'aborderons que la partie technique dans la suite du BBL

Pour plus d'infos sur les aspects organisationnels :

Disclaimer

Cucumber

Cucumber

Rôle : faire le lien entre les scénarios Gherkin et du code

 

Langages supportés :

  • Java
  • Kotlin
  • Javascript
  • Ruby
  • LUA
  • OCaml
  • C++

Live coding

Pickles

Pickles

Outil de living documentation : transforme les fichiers contenant les scénarios en documentation qui fait office de spécification toujours à jour

 

Format supportés :

  • HTML
  • DHTML
  • Word
  • Excel

Live "coding"

Des questions ?