Slide 1

Slide 1 text

B Tests fonctionnels en PHP avec @jubianchi @AFUP_Lyon - AFUP Lyon – 25/07/2012 @tentacode

Slide 2

Slide 2 text

B , ’ q ? ( 140 r èr ) « You might think about Behat as a tool to teach your clients about testing, but in reality it’s a tool to teach you about client business. » Konstantin Kudryashov (@everzet) https://speakerdeck.com/u/everzet/p/behat-by-example

Slide 3

Slide 3 text

T b b Développeur Client Ecrit les tests Unitaires Fonctionnels Lit les tests Unitaires Fonctionnels Fonctionnels

Slide 4

Slide 4 text

Feature: Login! As a visitor! I should be able to login using a form! ! Scenario: Login with bad credentials! Given I am on the homepage! And I follow "Log in"! And I press "Log in"! Then I should see "Bad credentials"! ! Given I fill in "username" with "foo"! And I fill in "password" with "bar"! And I press "Log in"! Then I should see "Bad credentials"! Q ? Q ? C ?

Slide 5

Slide 5 text

W r w •  Lancement des tests •  Les tests sont en échec •  Le développeur écrit le code des steps manquants •  Lancement des tests •  Les tests sont en échec •  Le développeur produit les éléments (fonctionnels) nécessaires •  Lancement des tests •  Les tests passent

Slide 6

Slide 6 text

T r / f Les tests fonctionnels ne sont pas des remplaçants des tests unitaires (et inversement). Le test fonctionnel vous assure qu’une fonctionnalité est conforme aux attentes alors que le test unitaire vous assure que le code mis en place pour l’implémenter est stable et robuste.

Slide 7

Slide 7 text

default:! name: pretty,junit! parameters:! output_path: .! ! extensions:! symfony2_extension.phar: ~ ! ! mink_extension.phar:! mink_loader: "mink.phar"! base_url: "http://%hostname%/app_test.php"! sahi: ~! goutte: ~! javascript_session: "sahi"! browser_name: %browser%! C r •  Configuration des formatters (Junit, HTML, CLI, …) https://github.com/Behat/Behat/tree/master/src/Behat/Behat/Formatter •  Configuration des extensions (Mink, Symfony2, …) •  Configurations des contexts •  Configuration des drivers (Sahi, Selenium, …)

Slide 8

Slide 8 text

$ php behat.phar -h ! ! Usage:! behat [--init] [-f|--format="..."] [--out="..."] [--lang="..."] [--[no-]ansi] [-- [no-]time] [--[no-]paths] [--[no-]snippets] [--[no-]snippets-paths] [-- [no-]multiline] [--[no-]expand] [--story-syntax] [-d|--definitions="..."] [-- name="..."] [--tags="..."] [--cache="..."] [--strict] [--dry-run] [--rerun="..."] [-- append-snippets] [features]! U •  --format : Choisissez le format de sortie à la volée (dans certains cas, à utiliser avec –-out) •  --lang : Choisissez la langue utilisée pour rédiger vos tests •  --definitions : Obtenez la liste des steps disponibles •  --tags : Lancez vos tests par lots

Slide 9

Slide 9 text

Ar r Behat Drivers Extensions Mink Gherkin Formatters Services Interfaces Context Projet Context (Steps, tags, …) Formatters

Slide 10

Slide 10 text

G r q v . Sp q Behat + Extensions = Eléments génériques réutilisables Il faut développer une partie spécifique(principalement des contextes contenant les définitions de steps) au projet pour pouvoir utiliser un vocabulaire commun à tous. Feature: Login! As a visitor! I should be able to login using a form! ! Scenario: Login with bad credentials! Given I am on the homepage! And I follow "Log in"! And I press "Log in"! Then I should see a ".alert" element containing "Bad credentials"!

Slide 11

Slide 11 text

E r B •  Grâce aux extensions http://extensions.behat.org/ •  Grâce aux Contexts/Formatters spécifiques au projet http://docs.behat.org/quick_intro.html#writing-your-step-definitions Q q p : •  Utiliser atoum pour générer les assertions https://github.com/mageekguy/atoum/wiki/atoum-et-Behat •  Test distribué grâce à Gearman http://extensions.behat.org/gearman/ •  Behat Viewer : analyseur de rapport http://behat-viewer-ci.jubianchi.fr

Slide 12

Slide 12 text

E r B •  Grâce aux extensions http://extensions.behat.org/ •  Grâce aux Contexts/Formatters spécifiques au projet http://docs.behat.org/quick_intro.html#writing-your-step-definitions Q q p : •  Utiliser atoum pour générer les assertions https://github.com/mageekguy/atoum/wiki/atoum-et-Behat •  Test distribué grâce à Gearman http://extensions.behat.org/gearman/ •  Behat Viewer : plateforme d’analyse et de centralisation des rapports http://behat-viewer-ci.jubianchi.fr

Slide 13

Slide 13 text

Questions… Merci à l’AFUP Lyon (@AFUP_Lyon), Gabriel Pillet (@tentacode), Konstantin Kudryashov (@everzet), Ludovic Fleury (@ludofleury), … FIN