Un framework php pour
des tests IHM automatisés
Plan
1.Qu’est ce que Behat ?
2.Processus
3.La syntaxe Gherkin
4.Découpage
a) Fonctionnalités et scénarios
b) Interprétatio...
Qu’est ce que Behat ?
Behat est un outil pour décrire
en amont, les fonctionnalités et
les comportements désirés pour
une ...
Processus
Goutte
La syntaxe Gherkin
Behat utilise des scénarios de tests
qu’il va traduire en fonctions php.
Il utilise pour cela des mots-...
Découpage
Fonctionnalités et
scénarios
L'interpréteur découpe les informations en
fonctionnalités, scénarios puis étapes.
...
Interprétation
Phase 1
Behat commence par la fonctionnalité.
Sa description donne un titre à une classe PHP.
Interprétation
Phase 2
Le scénario démarre et sa description est interprétée.
Interprétation
Phase 3
Les lignes suivantes sont les étapes du scénario.
L’expression contenue dans chaque étape est liée ...
Interprétation
Phase 4
Une situation différente démarre le scénario suivant,
et ainsi de suite…
Les lignes suivantes sont ...
Découpage
Plans de scénarios
Exemple sur La Centrale Des Marchés :
Plutôt que de réécrire n fois la même chose, on peut ut...
Découpage
Contextes
Les contextes vous permettent d'ajouter une toile de fond commune à
tous les scénarios d'une fonctionn...
Découpage
Etapes
Les Fonctionnalités sont composées d'étapes, c'est-à-dire
Etant donné, Quand et Alors.
« Etant donné » =>...
Découpage
Etapes : Etant donné
Si pour un même scénario
il y a plusieurs contextes possibles,
utiliser une table est une b...
Découpage
Etapes : Quand
Cette étape sert à décrire les actions de l’utilisateur.
On peut ici spécifier un ordre d’actions...
Découpage
Etapes : Alors
Cette étape sert à décrire le comportement visible de l’IHM.
C’est-à-dire tous les évènements en ...
Découpage
Etapes : Et / Mais
Lorsque l’on a plusieurs éléments dans le contexte d’un scénario,
il est plus propre d’utilis...
Découpage
Tables
Les tables vont être interprétées en PHP sous forme d’objet
$row au format TableNode.
Des méthode spécifi...
Découpage
Arguments multi-lignes
Il est possible d’utiliser des chaînes multi-lignes (ou PyStrings).
Dans ce cas, le parag...
Découpage
Tags
Il est possible d’organiser des fonctionnalités ou des
scénarios grâce aux tags.
Si une fonctionnalité est ...
Processus
Goutte
Mink
Mink est un outil qui permet de gérer différentes interfaces
pour la réalisation de tests.
Il fournit les drivers néc...
OUAIS DES TESTS TROP BIEN J’ARRIVE
Conclusion
Github de Behat version française
https://github.com/Behat/fr-docs.behat.org/blob/master/guides/1.gherkin.rst#steps
Docume...
Questions !?!
Questions time !
Prochain SlideShare
Chargement dans…5
×

Behat

374 vues

Publié le

Présentation technique de Gherkin, Behat et Mink

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
374
Sur SlideShare
0
Issues des intégrations
0
Intégrations
106
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • C’est un framework pour PHP 5.3 et 5.4 basé sur une méthode Agile appelée BDD (Behavior Driven Developement).
    Cela permet un développement en suivant la méthode TDD (Test Driven Development). Cette technique préconise d’écrire les tests unitaires avant d’écrire le code source.
  • L’un des buts de la méthode BDD est de faciliter l’implication du client dans le projet : elle utilise donc le langage humain, donc Behat utilise la syntaxe Gherkin.
  • Chaque fichier *.feature ne doit contenir qu'une seule fonctionnalité.
  • Behat ne va interpréter que la 1ère ligne.
    Les autres lignes ne servent qu'à fournir un contexte fonctionnel/métier lié à votre fonctionnalité, dans votre application.
  • Behat ne distingue pas techniquement ces trois types d'étapes.
    Cependant, il est recommandé de les faire par souci de propreté et de lisibilité.

    Exemple d’utilisation :
    Etant donné peut servir par exemple à préciser que l’on est authentifié en tant que « Mathieu Sachot ».
  • Par exemple, tout ce qui se passe en base de données n’est pas pris en compte.
  • Ces deux étapes sont interprétées par Behat contrairement à Etant donné, Quand et Alors.

    Exemple pour « mais » : champs ou boutons disabled selon des conditions.
  • Ce format est aisément convertible en chaine de caractères simple en php.
  • Goutte : plus rapide mais pas de gestion de JS/Ajax
    Sahi : lent mais permet des tests IHM
  • Behat

    1. 1. Un framework php pour des tests IHM automatisés
    2. 2. Plan 1.Qu’est ce que Behat ? 2.Processus 3.La syntaxe Gherkin 4.Découpage a) Fonctionnalités et scénarios b) Interprétation c) Plans de scénario d) Contextes e) Etapes f) Tables g) Arguments multi-lignes h) Tags 5.Mink
    3. 3. Qu’est ce que Behat ? Behat est un outil pour décrire en amont, les fonctionnalités et les comportements désirés pour une future application. Cette structure se prête donc parfaitement à la rédaction de tests fonctionnels automatisés.
    4. 4. Processus Goutte
    5. 5. La syntaxe Gherkin Behat utilise des scénarios de tests qu’il va traduire en fonctions php. Il utilise pour cela des mots-clés de la syntaxe Gherkin. Les différentes fonctionnalités à tester possèdent chacune leur propre ensemble de scénarios.
    6. 6. Découpage Fonctionnalités et scénarios L'interpréteur découpe les informations en fonctionnalités, scénarios puis étapes. Ces fonctionnalités sont stockées dans des fichiers *.feature
    7. 7. Interprétation Phase 1 Behat commence par la fonctionnalité. Sa description donne un titre à une classe PHP.
    8. 8. Interprétation Phase 2 Le scénario démarre et sa description est interprétée.
    9. 9. Interprétation Phase 3 Les lignes suivantes sont les étapes du scénario. L’expression contenue dans chaque étape est liée à une expression régulière qui va la lier à une fonction PHP.
    10. 10. Interprétation Phase 4 Une situation différente démarre le scénario suivant, et ainsi de suite… Les lignes suivantes sont les étapes du scénario. L’expression contenue dans chaque étape est liée à une expression régulière qui va la lier à une fonction PHP.
    11. 11. Découpage Plans de scénarios Exemple sur La Centrale Des Marchés : Plutôt que de réécrire n fois la même chose, on peut utiliser des variables. Les scénarios seront exécutés les uns après les autres.
    12. 12. Découpage Contextes Les contextes vous permettent d'ajouter une toile de fond commune à tous les scénarios d'une fonctionnalité en une seule fois. Un contexte s’écrit comme un scénario sans titre, et contient plusieurs étapes. Il sera appelé avant chacun de vos scénarios.
    13. 13. Découpage Etapes Les Fonctionnalités sont composées d'étapes, c'est-à-dire Etant donné, Quand et Alors. « Etant donné » => le contexte du scénario « Quand » => l’action de l’utilisateur « Alors » => le comportement de l’IHM
    14. 14. Découpage Etapes : Etant donné Si pour un même scénario il y a plusieurs contextes possibles, utiliser une table est une bonne solution.
    15. 15. Découpage Etapes : Quand Cette étape sert à décrire les actions de l’utilisateur. On peut ici spécifier un ordre d’actions, ou même la chaîne de caractère a insérer dans un champ.
    16. 16. Découpage Etapes : Alors Cette étape sert à décrire le comportement visible de l’IHM. C’est-à-dire tous les évènements en réponse à une ou des actions de l’utilisateurs, visibles par lui. Cette étape sert à décrire les actions de l’utilisateur. On peut ici spécifier un ordre d’actions, ou même la chaîne de caractère a insérer dans un champ.
    17. 17. Découpage Etapes : Et / Mais Lorsque l’on a plusieurs éléments dans le contexte d’un scénario, il est plus propre d’utiliser et que plusieurs étant donné. Il est également possible de préciser ce qui n’est pas accessible à l’utilisateur avec mais.
    18. 18. Découpage Tables Les tables vont être interprétées en PHP sous forme d’objet $row au format TableNode. Des méthode spécifiques en PHP sont disponibles pour accéder au contenu.
    19. 19. Découpage Arguments multi-lignes Il est possible d’utiliser des chaînes multi-lignes (ou PyStrings). Dans ce cas, le paragraphe sera stocké dans une variable PyStringNode.
    20. 20. Découpage Tags Il est possible d’organiser des fonctionnalités ou des scénarios grâce aux tags. Si une fonctionnalité est taguée, ses scénarios en héritent.
    21. 21. Processus Goutte
    22. 22. Mink Mink est un outil qui permet de gérer différentes interfaces pour la réalisation de tests. Il fournit les drivers nécessaires et gère les configurations. Deux types d’interfaces pour cela : - Ligne de commande (Goutte) - Contrôle de navigateur (Sahi)
    23. 23. OUAIS DES TESTS TROP BIEN J’ARRIVE Conclusion
    24. 24. Github de Behat version française https://github.com/Behat/fr-docs.behat.org/blob/master/guides/1.gherkin.rst#steps Documentation officielle de Behat http://docs.behat.org/en/v2.5/ Un article sur l’utilisation des TableNodes avec Behat http://blog.whiteoctober.co.uk/2012/09/12/behat-tablenodes-the-missing-manual/ Documentation
    25. 25. Questions !?! Questions time !

    ×