Développement axé sur le comportement - Concombre

Cucumber est un outil qui prend en charge les spécifications exécutables, l'automatisation des tests et la documentation vivante.

Le développement piloté par les comportements étend la spécification par l'exemple. Il formalise également les bonnes pratiques de développement piloté par les tests, en particulier la perspective de travailler de l'extérieur vers l'intérieur. Le travail de développement est basé sur des spécifications exécutables.

le key features des spécifications exécutables sont les suivantes -

  • Les spécifications exécutables sont -

    • Dérivé d'exemples, qui représentent les comportements du système.

    • Rédigé avec la collaboration de toutes les personnes impliquées dans le développement, y compris les entreprises et les parties prenantes.

    • Basé sur le critère d'acceptation.

  • Les tests d'acceptation basés sur les spécifications exécutables sont automatisés.

  • Un langage partagé et omniprésent est utilisé pour écrire les spécifications exécutables et les tests automatisés tels que -

    • Une terminologie spécifique au domaine est utilisée tout au long du développement.

    • Tout le monde, y compris les clients et les parties prenantes, parle du système, de ses exigences et de sa mise en œuvre, de la même manière.

    • Les mêmes termes sont utilisés pour discuter du système présent dans les exigences, les documents de conception, le code, les tests, etc.

    • Tout le monde peut lire et comprendre une exigence et comment générer plus d'exigences.

    • Les changements peuvent être facilement adaptés.

    • La documentation en direct est maintenue.

Cucumber aide dans ce processus car il relie les spécifications exécutables au code réel du système et aux tests d'acceptation automatisés.

La façon dont il le fait est en fait conçue pour que les clients et les développeurs travaillent ensemble. Lorsqu'un test d'acceptation réussit, cela signifie que la spécification du comportement du système qu'il représente a été correctement implémentée.

Test d'acceptation typique du concombre

Prenons l'exemple suivant.

Feature − Sign up

  • L'inscription doit être rapide et conviviale.

  • Scénario - Inscription réussie

    • New les utilisateurs doivent recevoir un e-mail de confirmation et être accueillis personnellement.

    • Given J'ai choisi de m'inscrire.

    • When Je m'inscris avec des détails valides.

    • Then Je devrais recevoir un e-mail de confirmation.

    • And Je devrais voir un message d'accueil personnalisé.

À partir de cet exemple, nous pouvons voir que -

  • Les tests d'acceptation se réfèrent à Features.

  • Les fonctionnalités sont expliquées par Scenarios.

  • Les scénarios se composent de Steps.

La spécification est écrite dans un langage naturel dans un fichier texte brut, mais elle est exécutable.

Travail du concombre

Cucumber est un outil de ligne de commande qui traite les fichiers texte contenant les fonctionnalités à la recherche de scénarios pouvant être exécutés sur votre système. Laissez-nous comprendre comment fonctionne le concombre.

  • Il utilise un tas de conventions sur la façon dont les fichiers sont nommés et où ils se trouvent (les dossiers respectifs) pour faciliter la mise en route.

  • Cucumber vous permet de conserver les spécifications, les tests automatisés et la documentation au même endroit.

  • Chaque scénario est une liste d'étapes qui décrivent les pré-conditions, les actions et les post-conditions du scénario; si chaque étape s'exécute sans aucune erreur, le scénario est marqué comme réussi.

  • À la fin d'une analyse, Cucumber indiquera le nombre de scénarios réussis.

  • Si quelque chose échoue, il fournit des informations sur ce qui a échoué afin que le développeur puisse progresser.

Au concombre, Features, Scenarioset les étapes sont écrites dans un langage appelé Gherkin.

Gherkin est un anglais en texte brut (ou l'une des 60 autres langues) avec une structure. Gherkin est facile à apprendre et sa structure vous permet d'écrire des exemples de manière concise.

  • Cucumber exécute vos fichiers contenant des spécifications exécutables écrites en Gherkin.

  • Cucumber a besoin de définitions d'étapes pour traduire les étapes Gherkin en texte brut en actions qui interagiront avec le système.

  • Lorsque Cucumber exécute une étape dans un scénario, il recherche une définition d'étape correspondante à exécuter.

  • Une définition d'étape est un petit morceau de code auquel est attaché un modèle.

  • Le modèle est utilisé pour lier la définition d'étape à toutes les étapes correspondantes, et le code est ce que Cucumber exécutera lorsqu'il verra une étape Gherkin.

  • Chaque étape est accompagnée d'une définition d'étape.

  • La plupart des étapes collecteront des entrées et seront ensuite déléguées à un framework qui est spécifique à votre domaine d'application afin d'effectuer des appels sur votre framework.

Cucumber prend en charge plus d'une douzaine de plates-formes logicielles différentes. Vous pouvez choisir l'implémentation de Cucumber qui vous convient. Chaque implémentation de Cucumber fournit la même fonctionnalité globale et ils ont également leur propre procédure d'installation et des fonctionnalités spécifiques à la plate-forme.

Étapes de mappage et définitions d'étapes

La clé de Cucumber est le mappage entre les étapes et les définitions d'étape.

Implémentations de concombre

Ci-dessous sont les implémentations de Cucumber.

Rubis / JRuby
JRuby (utilisant Cucumber-JVM)
Java
Sensationnel
.NET (en utilisant SpecFlow)
JavaScript
JavaScript (utilisant Cucumber-JVM et Rhino)
Clojure
Gosu
Lua
PHP (en utilisant Behat)
Jython
C ++
Tcl

Intégration du cadre

Ci-dessous sont les implémentations du Framework.

Rubis sur rails
Sélénium
PicoContainer
Cadre de printemps
Watir