User Story e criteri di accettazione. Given, When, Then

Vuoi migliorare la comunicazione tra IT e Business? Usa Gherkin per scrivere i requisiti e i criteri di accettazione.

User story, ti presento Gherkin

La reazione del team quando si propone l’uso di Gherkin, può variare dall’entusiasmo al sospetto (stanno mettendo in dubbio i miei test?), alla preoccupazione (sarò in grado di farlo?) ma l’approccio in generale piace, e l’accettazione aumenta dopo qualche settimana di utilizzo.

Le user story diventano infatti più focalizzate, più brevi e comprensibilli sia dal punto di vista dello sviluppo che da quello del business. le conversazioni durante le sessioni di planning e refinement sono più strutturate ed efficaci.

Ma cos’è Gherkin?

Gherkin è un linguaggio english-like molto semplice, che può essere utilizzato per descrivere requisiti, criteri di accettazione, eventi e comportamenti. La struttura di base è la seguente:

Gherkin è un linguaggio che può essere usato e compreso anche da ruoli non IT come il product owner o il business analyst, ma è abbastanza strutturato per essere usato da tester e sviluppatori come base per comprendere i requisiti e automatizzare i test. Gherkin migliora la comunicazione tra ruoli business e IT, dando maggiore chiarezza e focus al cosa dev’essere sviluppato

Come funziona? Si comincia descrivendo la feature o il prodotto da sviluppare, idealmente in forma di user story:

COME <persona>, VOGLIO <feature> ,PER <valore di business>

La storia viene quindi focalizzata con uno o più scenari, ad indicare il comportamento complessivo che si vuole descrivere.

  • Scenario. Uno scenario può essere descritto come segue: “Il proprietario di Carta Visa Classic usa la carta per il pagamento”
  • Given. La keyword given descrive il contesto di un comportamento di business del cliente o dell’applicazione. Per esempio “Sono un proprietario di Visa Classic”
  • When. Descrive l’azione richiesta per produrre l’output descritto. Ad esempio “pago con la mia carta Visa Classic”
  • Then. descrive l’output atteso: “La mia carta Visa Classic viene accettata”
Feature: Payments with Visa Classic
As a Visa Classic Cardholder, 
I want to use my Visa Card, 
For paying my purchases.

Scenario: The Visa Cardholder use the Visa Classic for paying
    Given I am a Visa Classic Cardholder
    When I pay with my Visa Classic
    Then My Visa card is accepted

Condizioni multiple possono essere concatenate con la parola AND. Ad esempio:

Given I am a Miles&More Fidelity Card holder,
And I Am a Premium Bank Customer 
When I transfer money to my account
Then I also receive 100 points on my Miles&More Card

E’ possibile gestire scenari multipli, oppure accorparli in un formato specifico usando gli Outline e le Data Table:

# Two scenarios for the same feature

Feature: Bank account calculation 
As A bank customer,
I want the balance of my account correctly calculated
To be certain of my financial sistuation

  Scenario: 1) bank account in-flow calculation
    Given the starting balance has 4000 Euro
    When 3000 euros are added to the account
    Then the final balance is 7000 euro     


  Scenario: 2) bank account out-flow calculation
    Given the starting balance has 4000 Euro
    When 3000 euros are transferred to another account
    Then the final balance is 1000 euro    

# Here we use a scenario outline to include the 
# two previous scenarios into a single one

Scenario Outline: bank account cash flow calculations
  Given the starting balance has <start> euros
  When <amount> is trasferred
  Then I should have <left> euros
    | start   | trasferred | left |
    | 4000    | +3000      | 7000 |
    | 4000    | -3000      | 1000 |

Test Automation – Il prossimo passo

Una volta che ci siamo abituati a descrivere i requisiti e le user story in Gherkin, il passo successivo è trasformarli in test case, da eseguire automaticamente ad ogni deploy. Ci sono diversi framework che supportano questo tipo di automazione: Cucumber, Behave, pytest-bdd etc.

Con la sua semplicità, Gherkin aiuta i product owner a specificare i desiderata in termini strutturati, coerenti, facilmente comunicabili e facilmente automatizzabili per consentire, in definitiva, una maggior qualità dei delivery e del valore di business creato.


Marcello Del Bono is coaching and leading Agile Teams, supporting Transformation programs. He has multi-year experience as a Product Owner, Scrum Master and Agile Coach in e-commerce, IT, Marketing and Decision Support Systems in Media, Telco, Finance, Fashion industries.

Contact him on LinkedIn.