Come suggerisce il nome, il behavior-driven development si basa sul comportamento che il rispettivo software dovrebbe mostrare. Grazie al cosiddetto linguaggio ubiquo, ovvero al “linguaggio comunemente usato”, anche i dilettanti possono creare determinate descrizioni comportamentali. Il linguaggio ubiquo deriva dal domain-driven design (DDD), che, come il BDD, si concentra sul dominio dell’applicazione. Entrambi gli approcci tengono conto di tutte le aree coinvolte nella creazione del software e le combinano indipendentemente da framework, linguaggi di programmazione o strumenti. L’uso di un linguaggio uniforme consente proprio questo.
Nonostante tutto anche il behavior-driven development richiede strumenti e framework. Affinché i casi di test definiti possano anche essere tradotti in un codice eseguibile, è necessario seguire alcune regole. Ad esempio, le descrizioni nel BDD non sono scritte in testo libero. Utilizzando strumenti BDD come JBehave, Cucumber o Behat si segue una struttura definita che consente un’implementazione corretta. L’uso di questi strumenti è molto più semplice dell’apprendimento di un linguaggio di programmazione classico. Ecco la struttura gerarchica che seguite normalmente nel behavior-driven development:
- Eseguite innanzitutto un’analisi dei requisiti in cui definite esattamente i compiti, gli obiettivi e le funzionalità del software. Quindi chiedete a voi stessi o al vostro cliente cosa dovrebbe fare il software.
- Dopo avere identificato tutte le funzionalità, queste vengono descritte sotto forma di scenari predefiniti. Provate a pensare a tutte le possibili situazioni in cui il software dovrebbe rispondere con una risposta specifica.
- Nel passaggio successivo registrate la risposta prevista per ogni scenario nello schema “Assume-If-Then”. “Supposto” descrive il software prima del test, “Se” l’azione durante il test e “Allora” lo stato del software dopo il test.
Il vocabolario può variare leggermente a seconda dello strumento BDD in uso. Invece di “Supposto” alcuni strumenti accettano anche formulazioni come “Dato”. Per inciso, tali strumenti sono disponibili per i linguaggi di programmazione più comuni come Java, JavaScript, Python o Ruby.