Un aperçu BDD avec Behat
(symfony3 - behat 3)
…………………………………………………………………………………………………………………...
“A php framework for autotesting your business
expectations.”
BEHAVIOUR DRIVEN
DEVELOPMENT
Procédé agile qui certifie en amont la valeur fonctionnel du développement à venir.
Atteste de sa bonne résolution aux travers notamment de l’utilisation de test unitaire.
S’assure que les deux parties (technique et fonctionnel) sont en phase sur le besoin.
S’appui sur un language “Human Readable”.
…………………………………………………………………………………………………………………...
Anatomie
Behat est composé de 5 organes:
- Feature: Les fonctionnalitées à implémenter.
- Scénario: Déroulements en étapes des features selon plusieurs situation.
- Gherkin: Le langage “Human Readable” dans lesquels sont écrits les features.
- Context: Rouages technique du déroulement des features.
- Extension: Bibliothèque ajoutant des fonctionnalités supplémentaires à Behat.
…………………………………………………………………………………………………………………...
Exemple:
On reconnaît bien ici une fois encore
l’implémentation du BDD par une omission
volontaire des rouages techniques.
Gherkin est ce que l’on appelle un
BRDSL (Business Readable Domain
Specific Language).
l permet de définir des scénarios à
partir des mots clés suivants:
GIVEN, une précondition,
WHEN, une action,
THEN, un résultat.
II existe également les mots clés
AND/BUT, qui permettent de rajouter une
étape du même type que la précédente.
Installation
(installation des dépendances)
Cf https://packagist.org/packages/behat/behat
…………………………………………………………………………………………………………………...
Installation de behat, de contextes,
d’extensions etc via composer:
On peut également changer
l’entrypoint dans le composer.json :
Installation
(Configuration)
…………………………………………………………………………………………………………………...
Fichier de configuration:
Par défaut: behat.yml à la racine du projet
Possibilité de customiser via:
behat --config <nomDuFichier>
ou
behat -c <nomDuFichier>
Exemple: bin/behat --config behat.yml.dist
Initialisation
…………………………………………………………………………………………………………………...
Par défaut: behat.yml à la racine du projet
Possibilité de customiser via :
behat --config <nomDuFichier>
ou
behat --config -c <nomDuFichier>
Exemple: behat --config behat.yml.dist
Peut prendre un unique argument:
Scenario Outline
Utilisé pour faire plusieurs itérations d’un même scénario avec des valeurs différentes au lieu de
créer plusieurs scénario pour une fonctionnalité identique mais des jeux de tests différents.
…………………………………………………………………………………………………………………...
Background
C’est un scénario joué avant chaque autres scénarios de la fonctionnalité (feature) à
laquelle il appartient.
…………………………………………………………………………………………………………………...
Background:
Given There are Todolists:
| Todo | importance |
| null | 1 |
| null | 2 |
Exemple:
Ici, avant chaque Scénario appartenant au même
fichier *.feature que lui, il ajouteras ces deux
Todolists en base de données
Les contextes
…………………………………………………………………………………………………………………...
Ce sont les contextes qui résolvent les
features, ce sont des classes php qui
vont se charger d’effectuer les actions
techniques.
Les contextes utilisent les test unitaires
pour valider ou invalider la bonne
résolution des steps des features
Les suites
…………………………………………………………………………………………………………………...
Configuration de fichiers de fonctionnalités et de contextes associés
Ils peuvent être lancé individuellement et selon certains filtres tel que les
Tags ou les rôles définis dans les fichiers features
Les filtres et tags Gherkin
…………………………………………………………………………………………………………………...
Tag: Ils peuvent être appliqués aux suites ou au
features
Ils acceptent les opérateur logique OR appliqué par “,”,
AND par “&&” et NOT par “~”.
Exemples:
bin/behat --tags '@Create'
bin/behat --tags '@Todolist&&~@Add'
bin/behat --name ‘Create a new Todolist’'
default:
gherkin:
filters:
tags:"~@wip&&~@disabled"
suites:
admin:
filters:
tags: "@admin"
Les filtres et tags Gherkin
…………………………………………………………………………………………………………………...
Dans la configuration globale, les filtres
définissent quelles features lancer ou ne pas
lancer.
Dans la configuration d’une suite, si un tag ou
un rôle est spécifié en temps que filtre, il permet
de choisir le contexte qui va être exécuté.
Cela permet d’éviter la démultiplication des
fichiers features et de permettre une meilleur
scalabilité des tests.
Les hooks
Ils effectuent des actions avant/après les suites, scénarios, features et steps.
…………………………………………………………………………………………………………………...
Les hooks des scénarios et des
features peuvent également être
filtrés par des tags:
/**
* @BeforeScenario @database,@orm
*/
Accéder aux autres contextes
Il faut également savoir qu’on peut facilement accéder aux autres contextes:
…………………………………………………………………………………………………………………...
On reconnait ici encore l’utilisation
du BeforeScenario afin d’aller
chercher la classe du context requis
avant de démarrer le scénario
DEMO TIME

Présentation BDD

  • 1.
    Un aperçu BDDavec Behat (symfony3 - behat 3) …………………………………………………………………………………………………………………... “A php framework for autotesting your business expectations.”
  • 2.
    BEHAVIOUR DRIVEN DEVELOPMENT Procédé agilequi certifie en amont la valeur fonctionnel du développement à venir. Atteste de sa bonne résolution aux travers notamment de l’utilisation de test unitaire. S’assure que les deux parties (technique et fonctionnel) sont en phase sur le besoin. S’appui sur un language “Human Readable”. …………………………………………………………………………………………………………………...
  • 3.
    Anatomie Behat est composéde 5 organes: - Feature: Les fonctionnalitées à implémenter. - Scénario: Déroulements en étapes des features selon plusieurs situation. - Gherkin: Le langage “Human Readable” dans lesquels sont écrits les features. - Context: Rouages technique du déroulement des features. - Extension: Bibliothèque ajoutant des fonctionnalités supplémentaires à Behat. …………………………………………………………………………………………………………………...
  • 4.
    Exemple: On reconnaît bienici une fois encore l’implémentation du BDD par une omission volontaire des rouages techniques. Gherkin est ce que l’on appelle un BRDSL (Business Readable Domain Specific Language). l permet de définir des scénarios à partir des mots clés suivants: GIVEN, une précondition, WHEN, une action, THEN, un résultat. II existe également les mots clés AND/BUT, qui permettent de rajouter une étape du même type que la précédente.
  • 5.
    Installation (installation des dépendances) Cfhttps://packagist.org/packages/behat/behat …………………………………………………………………………………………………………………... Installation de behat, de contextes, d’extensions etc via composer:
  • 6.
    On peut égalementchanger l’entrypoint dans le composer.json : Installation (Configuration) …………………………………………………………………………………………………………………... Fichier de configuration: Par défaut: behat.yml à la racine du projet Possibilité de customiser via: behat --config <nomDuFichier> ou behat -c <nomDuFichier> Exemple: bin/behat --config behat.yml.dist
  • 7.
    Initialisation …………………………………………………………………………………………………………………... Par défaut: behat.ymlà la racine du projet Possibilité de customiser via : behat --config <nomDuFichier> ou behat --config -c <nomDuFichier> Exemple: behat --config behat.yml.dist Peut prendre un unique argument:
  • 8.
    Scenario Outline Utilisé pourfaire plusieurs itérations d’un même scénario avec des valeurs différentes au lieu de créer plusieurs scénario pour une fonctionnalité identique mais des jeux de tests différents. …………………………………………………………………………………………………………………...
  • 9.
    Background C’est un scénariojoué avant chaque autres scénarios de la fonctionnalité (feature) à laquelle il appartient. …………………………………………………………………………………………………………………... Background: Given There are Todolists: | Todo | importance | | null | 1 | | null | 2 | Exemple: Ici, avant chaque Scénario appartenant au même fichier *.feature que lui, il ajouteras ces deux Todolists en base de données
  • 10.
    Les contextes …………………………………………………………………………………………………………………... Ce sontles contextes qui résolvent les features, ce sont des classes php qui vont se charger d’effectuer les actions techniques. Les contextes utilisent les test unitaires pour valider ou invalider la bonne résolution des steps des features
  • 11.
    Les suites …………………………………………………………………………………………………………………... Configuration defichiers de fonctionnalités et de contextes associés Ils peuvent être lancé individuellement et selon certains filtres tel que les Tags ou les rôles définis dans les fichiers features
  • 12.
    Les filtres ettags Gherkin …………………………………………………………………………………………………………………... Tag: Ils peuvent être appliqués aux suites ou au features Ils acceptent les opérateur logique OR appliqué par “,”, AND par “&&” et NOT par “~”. Exemples: bin/behat --tags '@Create' bin/behat --tags '@Todolist&&~@Add' bin/behat --name ‘Create a new Todolist’' default: gherkin: filters: tags:"~@wip&&~@disabled" suites: admin: filters: tags: "@admin"
  • 13.
    Les filtres ettags Gherkin …………………………………………………………………………………………………………………... Dans la configuration globale, les filtres définissent quelles features lancer ou ne pas lancer. Dans la configuration d’une suite, si un tag ou un rôle est spécifié en temps que filtre, il permet de choisir le contexte qui va être exécuté. Cela permet d’éviter la démultiplication des fichiers features et de permettre une meilleur scalabilité des tests.
  • 14.
    Les hooks Ils effectuentdes actions avant/après les suites, scénarios, features et steps. …………………………………………………………………………………………………………………... Les hooks des scénarios et des features peuvent également être filtrés par des tags: /** * @BeforeScenario @database,@orm */
  • 15.
    Accéder aux autrescontextes Il faut également savoir qu’on peut facilement accéder aux autres contextes: …………………………………………………………………………………………………………………... On reconnait ici encore l’utilisation du BeforeScenario afin d’aller chercher la classe du context requis avant de démarrer le scénario
  • 16.

Notes de l'éditeur