introduction au développement piloté par le comportement avec behat

Post on 05-Jul-2015

342 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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": {         "bin­dir": "bin/"     }

}­­­­

$ curl http://getcomposer.org/installer | php$ php composer.phar install ­­prefer­source

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

top related