Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction au développement piloté par le comportement avec Behat

Introduction au développement piloté par le comportement avec Behat

Jean-François Lépine

May 30, 2013
Tweet

More Decks by Jean-François Lépine

Other Decks in Programming

Transcript

  1. Communiquer en
    informatique
    Le développement piloté par le comportement avec Behat

    View Slide

  2. 2
    En face de vous

    Jean-François Lépine

    Consultant PHP chez Alter Way

    Secrétaire de l'AFUP (association française des utilisateur de PHP)

    @Halleck45

    http://blog.lepine.pro

    http://industrialisation-php.com

    View Slide

  3. 3
    Jeu concours : qui a déjà entendu ...
    “Techniquement et fonctionnellement, c'est
    super ! En plus on est largement dans les
    temps”
    “Génial ! C'est exactement ce à quoi je
    pensais, il n'y a rien à reprendre”
    “Ah oui, je me souviens bien : c'est en page 8
    de l'annexe 2 des spécifications
    fonctionnelles détaillées”

    View Slide

  4. 4
    Il était une fois...

    “J'ai besoin d'une voiture pour des petits trajets, aller au
    travail et transporter ma famille”
    Le client n'a pas eu ce qu'il voulait Et en plus il a perdu de l'argent

    View Slide

  5. 5
    La vision du Produit

    Est fournie par le Product Owner

    Sert une philosophie

    (souvent mercantile)

    Est le Guide suprême du Projet

    View Slide

  6. 6
    La Vision GMail
    Vision
    Permettre à chacun de communiquer et s'exprimer
    Produit

    webmail

    Babel

    Hangouts

    app. android

    like

    ...

    Google+

    gTalk

    api

    View Slide

  7. 7
    Une langue commune

    Eviter les ambiguïtés

    Est élaborée en commun

    Est parlée par tous

    Glossaire du projet
    “Ubiquitous Language”

    View Slide

  8. 8
    La fonctionnalité

    Est unique

    Se distingue des autres fonctionnalités

    Peut appartenir à un lot fonctionnel

    Est fournie par le Product Owner

    Est exprimable

    View Slide

  9. 9
    La fonctionnalité
    Un titre explicite :
    Un acteur :
    Une interaction :
    Un bénéfice fonctionnel :
    Fonctionnalité: Titre clair et simple
    En tant que rôle de l'utilisateur
    Je peux réaliser quelque chose
    Afin de obtenir un super bénéfice

    View Slide

  10. 10
    La fonctionnalité
    Fonctionnalité: acheter un chiot
    En tant que client du magasin
    Je peux acheter un chiot
    Afin de avoir un compagnon
    tout mignon (ou pas ^^)

    View Slide

  11. 11
    Le scénario

    Doit être établi en commun

    Doit (vraiment) être établi en commun

    Représente les différents comportements possibles de
    l'utilisateur avec le Produit

    Se distingue clairement et facilement

    View Slide

  12. 12
    Le scénario
    Un titre:

    Un contexte
    Un déclencheur :
    Un résultat attendu :
    Étant donné que un contexte initial
    Quand je fais quelque chose
    Alors j'obtiens un résultat
    Scénario: titre clair et explicite

    View Slide

  13. 13
    Le scénario
    Fonctionnalité: acheter un chiot
    (…)
    Scénario: acheter un chiot trop jeune
    Etant donné qu'un chiot est trop jeune pour être vendu
    Quand j'essaye de l'acheter
    Alors je suis informé que c'est impossible

    View Slide

  14. 14
    ATDD is not BDD !

    On devait communiquer, pas fournir des critères
    d'acceptation
    Fonctionnalité: acheter un chiot
    (…)
    Scénario: acheter un chiot trop jeune
    Etant donné que Médor a 2 mois
    Et qu'un chiot ne peut être vendu avant qu'il
    n'ait 5 mois
    Quand j'essaye d'acheter Médor
    Alors je suis informé que «Médor est encore trop
    jeune pour être vendu»

    View Slide

  15. 15
    Des assistants visuels

    View Slide

  16. Bonus
    Automatisez !

    View Slide

  17. 17
    Le test applicatif
    Contrat Qui Avec
    Code source / Information fonction PHPUnit, atoum
    Objets / objets classes, paquets Interfaces, PHPSpec
    Utilisateur / UI Interface graphique Selenium
    Utilisateur / Produit Produit délivré Behat

    View Slide

  18. 18
    Behat

    Outil PHP

    Réalisé par @everzet

    Portage de Cucumber

    Génial !
    Permet d'automatiser la recette fonctionnelle

    View Slide

  19. 19
    Installation

    Très simple :
    $ vim composer.json
    ­­­­
    {
    "require": {
    "behat/behat": "2.4.*@stable"
    },
    "config": {
    "bin­dir": "bin/"
    }
    }
    ­­­­
    $ curl http://getcomposer.org/installer | php
    $ php composer.phar install ­­prefer­source

    View Slide

  20. 20
    Utilisation

    Encore plus simple :

    Il suffit de créer le fichier
    features/acheter-un-chiot.feature :
    $ ./vendor/bin/behat
    Fonctionnalité: acheter un chiot
    (…)
    Scénario: acheter un chiot trop jeune
    (…)

    View Slide

  21. 21
    Utilisation

    À vous de traduire, en PHP, chaque étape :

    View Slide

  22. 22
    Traduction

    Fichiers PHP de ”Contexte”
    L'expression régulière fait le lien
    entre l'expression et le code PHP

    View Slide

  23. 23
    Succès !

    Tout s'est bien passé

    View Slide

  24. 24
    Dans la vraie vie

    On peut exécuter des tests dans un vrai navigateur

    Chrome, Firefox...

    Goutte, Sahi, Selenium...

    Grâce à l'extension Mink
    {
    "require": {
    (...)
    "behat/mink": "[email protected]"
    }
    }

    View Slide

  25. 25
    Retours d'expérience

    Behat est très riche (extensions, communautés...)

    Behat n'est qu'un outil

    Il est facile de partir dans la mauvaise direction :

    Il faut un Product Owner

    Behat ne se substitue pas aux tests unitaires

    View Slide

  26. 26
    Retours d'expérience

    Relativement rapide à maîtriser

    temps d'investissement moyen

    nécessite un peu de motivation

    Extrêmement bénéfique pour la communication de
    l'équipe

    Très bénéfique pour les recettes

    Change la vie !

    View Slide

  27. 27
    Questions

    @Halleck45

    http://blog.lepine.pro (série de billets sur Behat)

    http://behat.org

    View Slide