Poum - Mot-clé - valeur métierDe la qualité logicielle, méthodes agiles et outils logiciels libres ...2023-08-25T16:53:12+01:00Poumurn:md5:6b5c625a812aff31ffa1cd1f3648e14bDotclearGherkinurn:md5:4497acc6d194965c2b9977c78384a1642012-01-29T18:09:00+01:002012-01-31T16:57:45+01:00PoumQualité logicielleCucumberDomain Specific LanguagefeaturefonctionnalitéGherkinPythonscénariossteptests automatisésvaleur métierYAMLétapes<p><img src="http://philippe.poumaroux.free.fr/public/cuke_logo.png" alt="Cuke" title="Cuke, janv. 2012" /></p>
<p>Ce qui suit est la traduction de <a href="https://github.com/cucumber/cucumber/wiki/Gherkin" title="https://github.com/cucumber/cucumber/wiki/Gherkin">https://github.com/cucumber/cucumbe...</a> augmenté de détails spécifiques à notre belle langue.</p>
<p><a href="http://philippe.poumaroux.free.fr/index.php?tag/Gherkin">Gherkin</a> est le langage parlé par <a href="http://philippe.poumaroux.free.fr/index.php?tag/Cucumber">Cucumber</a>. C'est un langage spécifique au domaine (<a href="http://philippe.poumaroux.free.fr/index.php?tag/Domain%20Specific%20Language">Domain Specific Language</a>) compréhensible par les gens du métier qui vous permet de décrire le comportement d'un logiciel sans détailler comment ce comportement est implémenté.</p>
<p>Gherkin répond à 2 objectifs – documentation et <a href="http://philippe.poumaroux.free.fr/index.php?tag/tests%20automatis%C3%A9s">tests automatisés</a>. Le troisième est une fonctionnalité bonus – quand il crie en rouge, il vous parle et vous indique le code que vous devriez écrire.</p>
<p>La grammaire de Gherkin est définie dans l'arbre Treetop qui est une partie du code de base de Cucumber. La grammaire existe dans différentes variantes pour de nombreuses langues (40 actuellement) de telle sorte qu'on peut utiliser des mots clefs dans sa propre langue.</p> <p>Il existe quelques conventions:</p>
<ul>
<li>Les fichiers source Gherkin contiennent une description d'une unique <a href="http://philippe.poumaroux.free.fr/index.php?tag/fonctionnalit%C3%A9">fonctionnalité</a>.</li>
<li>Les fichiers sources ont l'extension .feature.</li>
</ul>
<h2>Syntaxe Gherkin</h2>
<p>Comme <a href="http://philippe.poumaroux.free.fr/index.php?tag/Python">Python</a> et <a href="http://philippe.poumaroux.free.fr/index.php?tag/YAML">YAML</a>, Gherkin est un langage orienté ligne qui utilise l'indentation pour définir la structure. La fin de ligne termine les commandes (les <a href="http://philippe.poumaroux.free.fr/index.php?tag/%C3%A9tapes">étapes</a> par exemple). Les espaces et les tabulations peuvent être utilisés pour l'indentation (mais les espaces sont gages de portabilité). La plupart des lignes commencent par un mot clef.</p>
<p>Les lignes de commentaires sont autorisés n'importe où dans le fichier. Ils commencent éventuellement par un ou plusieurs espaces, suivis par le signe dièse (#) puis autant de texte que nécessaire.</p>
<p>Le parseur sépare l'entrée en fonctionnalités (<a href="http://philippe.poumaroux.free.fr/index.php?tag/feature">feature</a>), <a href="http://philippe.poumaroux.free.fr/index.php?tag/sc%C3%A9narios">scénarios</a> et étapes (<a href="http://philippe.poumaroux.free.fr/index.php?tag/step">step</a>). Quand vous exécutez la fonctionnalité, la partie finale (après le mot clef) de chaque étape est associée au bloc de code appelé définition d'étape.</p>
<p>Un fichier source Gherkin ressemble habituellement à ceci:</p>
<pre> 1: Feature: Some terse yet descriptive text of what is desired
2: In order to realize a named business value
3: As an explicit system actor
4: I want to gain some beneficial outcome which furthers the goal
5:
6: Scenario: Some determinable business situation
7: Given some precondition
8: And some other precondition
9: When some action by the actor
10: And some other action
11: And yet another action
12: Then some testable outcome is achieved
13: And something else we can check happens too
14:
15: Scenario: A different situation
16: ...</pre>
<p>La première ligne démarre la fonctionnalité. Les lignes 2 à 4 sont du texte qui ne sera pas analysé qui sert à décrire la <a href="http://philippe.poumaroux.free.fr/index.php?tag/valeur%20m%C3%A9tier">valeur métier</a> de cette fonctionnalité. A la ligne 6, le scénario démarre. Les lignes 7 à 13 sont les étapes du scénario. A la ligne 15 démarre le scénario suivant et ainsi de suite.</p>
<p>Comme promis, le même en français:</p>
<pre> 0: # language: fr
1: Fonctionnalité: Un texte descriptif de ce qui est souhaité
2: de façon à obtenir ce qu'on appelle de la valeur métier
3: en tant qu'acteur particulier du système
4: je veux gagner un certain bénéfice qui correspond à l'objectif
5:
6: Scénario: une situation métier particulière
7: Etant donné une certaine précondition
8: Et une autre précondition
9: Quand une action particulière par l'acteur
10: Et une autre action
11: Et encore une autre
12: Alors un résultat particulier testable est produit
13: Et un autre également
14:
15: Scénario: un situation différente
16: ...</pre>
<p>Seule différence, le commentaire initial indiquant la langue utilisée.</p>
<p>Voici les correspondances des mots clefs anglais et français:</p>
<ul>
<li>feature: Fonctionnalité</li>
<li>background: Contexte</li>
<li>scenario: Scénario</li>
<li>scenario_outline: Plan du scénario|Plan du Scénario</li>
<li>examples: Exemples</li>
<li>given: "*|Soit|Etant donné|Etant donnée|Etant donnés|Etant données|Étant donné|Étant donnée|Étant donnés|Étant données"</li>
<li>when: "*|Quand|Lorsque|Lorsqu'<"</li>
<li>then: "*|Alors"</li>
<li>and: "*|Et"</li>
<li>but: "*|Mais"</li>
</ul>