View
342
Download
7
Category
Preview:
Citation preview
Communiquer en informatique
Le 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
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”
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
5
La vision du Produit
● Est fournie par le Product Owner
● Sert une philosophie● (souvent mercantile)
● Est le Guide suprême du Projet
6
La Vision GMail
Vision
Permettre à chacun de communiquer et s'exprimer
Produit
● webmail● Babel● Hangouts
● app. android● like ● ...
● Google+● gTalk● api
7
Une langue commune
● Eviter les ambiguïtés
● Est élaborée en commun
● Est parlée par tous
● Glossaire du projet
“Ubiquitous Language”
8
La fonctionnalité
● Est unique● Se distingue des autres fonctionnalités● Peut appartenir à un lot fonctionnel● Est fournie par le Product Owner
● Est exprimable
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
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 ^^)
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
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
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
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»
15
Des assistants visuels
Bonus
Automatisez !
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
18
Behat
● Outil PHP● Réalisé par @everzet● Portage de Cucumber● Génial !
Permet d'automatiser la recette fonctionnelle
19
Installation
● Très simple :
$ vim composer.json{
"require": { "behat/behat": "2.4.*@stable" }, "config": { "bindir": "bin/" }
}
$ curl http://getcomposer.org/installer | php$ php composer.phar install prefersource
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 (…)
21
Utilisation
● À vous de traduire, en PHP, chaque étape :
22
Traduction
● Fichiers PHP de ”Contexte”
L'expression régulière fait le lien entre l'expression et le code PHP
23
Succès !
● Tout s'est bien passé
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" }}
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
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 !
27
Questions
● @Halleck45● http://blog.lepine.pro (série de billets sur Behat)● http://behat.org
Recommended