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

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

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

Page 1: Introduction au développement piloté par le comportement avec Behat

Communiquer en informatique

Le développement piloté par le comportement avec Behat

Page 2: Introduction au développement piloté par le comportement avec Behat

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

Page 3: Introduction au développement piloté par le comportement avec Behat

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”

Page 4: Introduction au développement piloté par le comportement avec Behat

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

Page 5: Introduction au développement piloté par le comportement avec Behat

5

La vision du Produit

● Est fournie par le Product Owner

● Sert une philosophie● (souvent mercantile)

● Est le Guide suprême du Projet

Page 6: Introduction au développement piloté par le comportement avec Behat

6

La Vision GMail

Vision

Permettre à chacun de communiquer et s'exprimer

Produit

● webmail● Babel● Hangouts

● app. android● like ● ...

● Google+● gTalk● api

Page 7: Introduction au développement piloté par le comportement avec Behat

7

Une langue commune

● Eviter les ambiguïtés

● Est élaborée en commun

● Est parlée par tous

● Glossaire du projet

“Ubiquitous Language”

Page 8: Introduction au développement piloté par le comportement avec Behat

8

La fonctionnalité

● Est unique● Se distingue des autres fonctionnalités● Peut appartenir à un lot fonctionnel● Est fournie par le Product Owner

● Est exprimable

Page 9: Introduction au développement piloté par le comportement avec Behat

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

Page 10: Introduction au développement piloté par le comportement avec Behat

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 ^^)

Page 11: Introduction au développement piloté par le comportement avec Behat

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

Page 12: Introduction au développement piloté par le comportement avec Behat

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

Page 13: Introduction au développement piloté par le comportement avec Behat

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

Page 14: Introduction au développement piloté par le comportement avec Behat

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»

Page 15: Introduction au développement piloté par le comportement avec Behat

15

Des assistants visuels

Page 16: Introduction au développement piloté par le comportement avec Behat

Bonus

Automatisez !

Page 17: Introduction au développement piloté par le comportement avec Behat

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

Page 18: Introduction au développement piloté par le comportement avec Behat

18

Behat

● Outil PHP● Réalisé par @everzet● Portage de Cucumber● Génial !

Permet d'automatiser la recette fonctionnelle

Page 19: Introduction au développement piloté par le comportement avec Behat

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

Page 20: Introduction au développement piloté par le comportement avec Behat

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      (…)

Page 21: Introduction au développement piloté par le comportement avec Behat

21

Utilisation

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

Page 22: Introduction au développement piloté par le comportement avec Behat

22

Traduction

● Fichiers PHP de ”Contexte”

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

Page 23: Introduction au développement piloté par le comportement avec Behat

23

Succès !

● Tout s'est bien passé

Page 24: Introduction au développement piloté par le comportement avec Behat

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"     }}

Page 25: Introduction au développement piloté par le comportement avec Behat

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

Page 26: Introduction au développement piloté par le comportement avec Behat

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 !

Page 27: Introduction au développement piloté par le comportement avec Behat

27

Questions

● @Halleck45● http://blog.lepine.pro (série de billets sur Behat)● http://behat.org