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. 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
  2. 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”
  3. 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
  4. 5 La vision du Produit • Est fournie par le

    Product Owner • Sert une philosophie • (souvent mercantile) • Est le Guide suprême du Projet
  5. 6 La Vision GMail Vision Permettre à chacun de communiquer

    et s'exprimer Produit • webmail • Babel • Hangouts • app. android • like • ... • Google+ • gTalk • api
  6. 7 Une langue commune • Eviter les ambiguïtés • Est

    élaborée en commun • Est parlée par tous • Glossaire du projet “Ubiquitous Language”
  7. 8 La fonctionnalité • Est unique • Se distingue des

    autres fonctionnalités • Peut appartenir à un lot fonctionnel • Est fournie par le Product Owner • Est exprimable
  8. 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
  9. 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 ^^)
  10. 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
  11. 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
  12. 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
  13. 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»
  14. 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
  15. 18 Behat • Outil PHP • Réalisé par @everzet •

    Portage de Cucumber • Génial ! Permet d'automatiser la recette fonctionnelle
  16. 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
  17. 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 (…)
  18. 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": "1.4@stable" } }
  19. 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
  20. 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 !