Sviluppo guidato dal comportamento - Gherkin

Il cetriolino è una lingua usata per scrivere Features, Scenarios, and Steps. Lo scopo di Gherkin è aiutarci a scrivere requisiti concreti.

Per capire cosa si intende per requisiti concreti, si consideri il seguente esempio:

Ai clienti dovrebbe essere impedito di inserire dettagli della carta di credito non validi.

Contro

Se un cliente inserisce un numero di carta di credito che non è esattamente di 16 cifre, quando tenta di inviare il modulo, dovrebbe essere visualizzato di nuovo con un messaggio di errore che lo informa del numero corretto di cifre.

Quest'ultimo non ha ambiguità ed evita errori ed è molto più testabile.

Gherkin è progettato per creare requisiti più concreti. In Gherkin, l'esempio sopra ha il seguente aspetto:

Feature

Feedback quando si immettono dettagli della carta di credito non validi Feature Definition

Nei test degli utenti, abbiamo visto molte persone che commettono errori Documentazione

Background True for all Scenarios Below

Given Ho scelto un oggetto da acquistare,

And Sto per inserire il numero della mia carta di credito

Scenario - Numero di carta di credito troppo breveScenario Definition

When Inserisco un numero di carta di lunghezza inferiore a 16 cifre

And tutti gli altri dettagli sono corretti

And Invio il moduloSteps

Then il modulo dovrebbe essere visualizzato nuovamente

And Dovrei vedere un messaggio che mi informa del numero corretto di cifre

Formato e sintassi di Gherkin

I file Gherkin sono file di testo semplice e hanno l'estensione .feature. Ogni riga che non è vuota deve iniziare con una parola chiave Gherkin, seguita dal testo che ti piace. Le parole chiave sono:

  • Feature

  • Scenario

  • Dato, Quando, Allora, E, Ma (Passi)

  • Background

  • Schema dello scenario

  • Examples

  • "" "(Doc Strings)

  • | (Tabelle dati)

  • @ (Tag)

  • # (Commenti)

  • *

Caratteristica

Il Featurela parola chiave viene utilizzata per descrivere una funzionalità del software e per raggruppare gli scenari correlati. Una caratteristica ha tre elementi di base:

  • La parola chiave: caratteristica.

  • Il nome della funzionalità, fornito sulla stessa riga della parola chiave Feature.

  • Una descrizione facoltativa (ma altamente consigliata) che può estendersi su più righe, ovvero tutto il testo compreso tra la riga contenente la parola chiave Feature e una riga che inizia con Scenario, Sfondo o Struttura dello scenario.

Oltre a un nome e una descrizione, le funzionalità contengono un elenco di scenari o schemi di scenari e uno sfondo opzionale.

È convenzionale nominare un file .featurefile prendendo il nome del Feature, convertendolo in minuscolo e sostituendo gli spazi con sottolineature. Per esempio,

feedback_when_entering_invalid_credit_card_details.feature

Per identificare le funzionalità nel sistema, è possibile utilizzare ciò che è noto come "modello di iniezione di funzionalità".

Per <raggiungere un obiettivo> come <tipo di utente> voglio una <a funzionalità>

Descrizioni

Alcune parti dei documenti Gherkin non devono iniziare con una parola chiave.

Nelle righe che seguono una caratteristica, uno scenario, uno schema di scenario o degli esempi, puoi scrivere qualsiasi cosa tu voglia, purché nessuna riga inizi con una parola chiave. Questo è il modo per includere le descrizioni.

Scenario

Per esprimere il comportamento del tuo sistema, allega uno o più scenari a ciascuna caratteristica. È tipico vedere da 5 a 20 scenari per caratteristica per specificare completamente tutti i comportamenti attorno a quella caratteristica.

Gli scenari seguono il seguente schema:

  • Descrivi un contesto iniziale

  • Descrivi un evento

  • Descrivi un risultato atteso

Partiamo da un contesto, descriviamo un'azione e controlliamo il risultato. Questo viene fatto con passaggi. Gherkin fornisce tre parole chiave per descrivere ciascuno dei contesti, azioni e risultati come passaggi.

  • Given - Stabilisci il contesto

  • When - Eseguire l'azione

  • Then - Controlla il risultato

Queste parole chiave forniscono la leggibilità dello scenario.

Example

Scenario - Preleva denaro dal conto.

  • Given Ho $ 100 nel mio account.

  • When Chiedo $ 20.

  • Then $ 20 dovrebbero essere erogati.

Se sono presenti più file Given o When gradini uno sotto l'altro, puoi usare And o But. Consentono di specificare gli scenari in dettaglio.

Example

Scenario - Tentare il ritiro utilizzando la carta rubata.

  • Given Ho $ 100 nel mio account.

  • But la mia carta non è valida.

  • When Chiedo $ 50.

  • Then la mia carta non deve essere restituita.

  • And Mi dovrebbe essere detto di contattare la banca.

Durante la creazione degli scenari, ricorda che "ogni scenario deve avere un senso ed essere in grado di essere eseguito indipendentemente da qualsiasi altro scenario". Ciò significa:

  • Non è possibile fare in modo che la condizione di successo di uno scenario dipenda dal fatto che un altro scenario è stato eseguito prima di esso.

  • Ogni scenario crea il proprio contesto particolare, esegue una cosa e verifica il risultato.

Tali scenari forniscono i seguenti vantaggi:

  • I test saranno più semplici e più facili da capire.

  • Puoi eseguire solo un sottoinsieme dei tuoi scenari e non devi preoccuparti della rottura del tuo set di test.

  • A seconda del sistema, potresti essere in grado di eseguire i test in parallelo, riducendo la quantità di tempo necessaria per eseguire tutti i test.

Schema dello scenario

Se devi scrivere scenari con più input o output, potresti finire per creare diversi scenari che differiscono solo per i loro valori. La soluzione è utilizzare lo schema dello scenario. Per scrivere uno schema di scenario,

  • Le variabili nei passaggi della struttura dello scenario sono contrassegnate con <e>.

  • I vari valori delle variabili sono forniti come esempi in una tabella.

Example

Supponi di scrivere una caratteristica per aggiungere due numeri su una calcolatrice.

Feature - Aggiungi.

Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

Una sezione della struttura dello scenario è sempre seguita da una o più sezioni di esempi, che sono un contenitore per una tabella. La tabella deve avere una riga di intestazione corrispondente alle variabili nei passaggi della struttura dello scenario. Ciascuna delle righe seguenti creerà un nuovo scenario, inserendo i valori delle variabili