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