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

758 views
627 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
758
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Communiquer eninformatiqueLe développement piloté par le comportement avec Behat
  2. 2. 2En face de vous●Jean-François Lépine●Consultant PHP chez Alter Way●Secrétaire de lAFUP (association française des utilisateur de PHP)●@Halleck45●http://blog.lepine.pro●http://industrialisation-php.com
  3. 3. 3Jeu concours : qui a déjà entendu ...“Techniquement et fonctionnellement, cestsuper ! En plus on est largement dans lestemps”“Génial ! Cest exactement ce à quoi jepensais, il ny a rien à reprendre”“Ah oui, je me souviens bien : cest en page 8de lannexe 2 des spécificationsfonctionnelles détaillées”
  4. 4. 4Il était une fois...●“Jai besoin dune voiture pour des petits trajets, aller autravail et transporter ma famille”Le client na pas eu ce quil voulait Et en plus il a perdu de largent
  5. 5. 5La vision du Produit●Est fournie par le Product Owner●Sert une philosophie●(souvent mercantile)●Est le Guide suprême du Projet
  6. 6. 6La Vision GMailVisionPermettre à chacun de communiquer et sexprimerProduit●webmail●Babel●Hangouts●app. android●like●...●Google+●gTalk●api
  7. 7. 7Une langue commune●Eviter les ambiguïtés●Est élaborée en commun●Est parlée par tous●Glossaire du projet“Ubiquitous Language”
  8. 8. 8La fonctionnalité●Est unique●Se distingue des autres fonctionnalités●Peut appartenir à un lot fonctionnel●Est fournie par le Product Owner●Est exprimable
  9. 9. 9La fonctionnalitéUn titre explicite :Un acteur :Une interaction :Un bénéfice fonctionnel :Fonctionnalité: Titre clair et simpleEn tant que rôle de lutilisateurJe peux réaliser quelque choseAfin de obtenir un super bénéfice
  10. 10. 10La 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 ^^)
  11. 11. 11Le scénario●Doit être établi en commun●Doit (vraiment) être établi en commun●Représente les différents comportements possibles delutilisateur avec le Produit●Se distingue clairement et facilement
  12. 12. 12Le scénarioUn titre:●Un contexteUn déclencheur :Un résultat attendu :Étant donné que un contexte initialQuand je fais quelque choseAlors jobtiens un résultatScénario: titre clair et explicite
  13. 13. 13Le scénarioFonctionnalité: acheter un chiot  (…)  Scénario: acheter un chiot trop jeune      Etant donné quun chiot est trop jeune pour être vendu    Quand jessaye de lacheter    Alors je suis informé que cest impossible
  14. 14. 14ATDD is not BDD !●On devait communiquer, pas fournir des critèresdacceptationFonctionnalité: acheter un chiot  (…)  Scénario: acheter un chiot trop jeune      Etant donné que Médor a 2 mois      Et quun chiot ne peut être vendu avant quil       nait 5 mois    Quand jessaye dacheter Médor    Alors je suis informé que «Médor est encore trop       jeune pour être vendu»
  15. 15. 15Des assistants visuels
  16. 16. BonusAutomatisez !
  17. 17. 17Le test applicatifContrat Qui AvecCode source / Information fonction PHPUnit, atoumObjets / objets classes, paquets Interfaces, PHPSpecUtilisateur / UI Interface graphique SeleniumUtilisateur / Produit Produit délivré Behat
  18. 18. 18Behat●Outil PHP●Réalisé par @everzet●Portage de Cucumber●Génial !Permet dautomatiser la recette fonctionnelle
  19. 19. 19Installation●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
  20. 20. 20Utilisation●Encore plus simple :●Il suffit de créer le fichierfeatures/acheter-un-chiot.feature :$ ./vendor/bin/behatFonctionnalité: acheter un chiot  (…)  Scénario: acheter un chiot trop jeune      (…)
  21. 21. 21Utilisation●À vous de traduire, en PHP, chaque étape :
  22. 22. 22Traduction●Fichiers PHP de ”Contexte”Lexpression régulière fait le lienentre lexpression et le code PHP
  23. 23. 23Succès !●Tout sest bien passé
  24. 24. 24Dans la vraie vie●On peut exécuter des tests dans un vrai navigateur●Chrome, Firefox...●Goutte, Sahi, Selenium...●Grâce à lextension Mink {     "require": {             (...)             "behat/mink": "1.4@stable"     }}
  25. 25. 25Retours dexpérience●Behat est très riche (extensions, communautés...)●Behat nest quun outil●Il est facile de partir dans la mauvaise direction :●Il faut un Product Owner●Behat ne se substitue pas aux tests unitaires
  26. 26. 26Retours dexpérience●Relativement rapide à maîtriser●temps dinvestissement moyen●nécessite un peu de motivation●Extrêmement bénéfique pour la communication deléquipe●Très bénéfique pour les recettes●Change la vie !
  27. 27. 27Questions●@Halleck45●http://blog.lepine.pro (série de billets sur Behat)●http://behat.org

×