Sviluppo guidato dal comportamento - Introduzione
Behaviour Driven Development (BDD) è un processo di sviluppo software originariamente emerso da Test Driven Development (TDD).
Secondo Dan North, responsabile dell'evoluzione di BDD, "BDD sta utilizzando esempi a più livelli per creare una comprensione condivisa e un'incertezza superficiale per fornire software che contano".
BDD utilizza esempi per illustrare il comportamento del sistema scritti in un linguaggio leggibile e comprensibile per tutti coloro che sono coinvolti nello sviluppo. Questi esempi includono:
Convertito in specifiche eseguibili.
Utilizzato come test di accettazione.
BDD - Caratteristiche principali
Lo sviluppo guidato dal comportamento si concentra su:
Fornire un processo condiviso e strumenti condivisi che promuovono la comunicazione a sviluppatori di software, analisti aziendali e stakeholder per collaborare allo sviluppo del software, con l'obiettivo di fornire prodotti con valore di business.
Cosa dovrebbe fare un sistema e non su come dovrebbe essere implementato.
Fornire una migliore leggibilità e visibilità.
Verificare non solo il funzionamento del software ma anche che soddisfi le aspettative del cliente.
Origine di BDD
Il costo per riparare un difetto aumenta molte volte se il difetto non viene rilevato al momento giusto e riparato come e quando viene rilevato. Considera il seguente esempio.
Ciò dimostra che, a meno che i requisiti non siano ottenuti correttamente, sarebbe costoso riparare i difetti derivanti dall'incomprensione dei requisiti in una fase successiva. Inoltre, il prodotto finale potrebbe non soddisfare le aspettative del cliente.
La necessità del momento è un approccio allo sviluppo che -
Si basa sui requisiti.
Si concentra sui requisiti durante lo sviluppo.
Assicura che i requisiti siano soddisfatti.
Un approccio di sviluppo che può prendersi cura dei requisiti sopra menzionati è BDD. Quindi, lo sviluppo guidato dal comportamento -
Deriva esempi di diversi comportamenti attesi del sistema.
Consente di scrivere gli esempi in una lingua utilizzando i termini del dominio aziendale per garantire una facile comprensione da parte di tutti coloro che sono coinvolti nello sviluppo, compresi i clienti.
Ottiene gli esempi ratificati di volta in volta con il cliente tramite conversazioni.
Si concentra sui requisiti del cliente (esempi) durante lo sviluppo.
Utilizza esempi come test di accettazione.
Pratiche BDD
Le due pratiche principali di BDD sono:
Specifica per esempio (SbE)
Sviluppo basato su test (TDD)
Specifica per esempio
Specification by Example (SbE) utilizza esempi nelle conversazioni per illustrare le regole aziendali e il comportamento del software da creare.
La specifica per esempio consente ai proprietari del prodotto, agli analisti aziendali, ai tester e agli sviluppatori di eliminare i malintesi comuni sui requisiti aziendali.
Sviluppo basato su test
Test Driven Development, nel contesto di BDD, trasforma gli esempi in specifiche leggibili ed eseguibili.
Gli sviluppatori utilizzano queste specifiche come guida per implementare incrementi di nuove funzionalità. Ciò si traduce in una base di codice snella e una suite di test di regressione automatizzati che mantengono bassi i costi di manutenzione per tutta la durata del software.
Agile BDD
Nello sviluppo di software Agile, il metodo BDD viene utilizzato per giungere a una comprensione comune delle specifiche in sospeso.
I seguenti passaggi vengono eseguiti in Agile BDD:
Gli sviluppatori e il proprietario del prodotto scrivono in collaborazione le specifiche in sospeso in un semplice editor di testo.
Il proprietario del prodotto specifica i comportamenti che si aspettano dal sistema.
Gli sviluppatori
Compila le specifiche con questi dettagli sul comportamento.
Poni domande in base alla loro comprensione del sistema.
I comportamenti del sistema corrente sono considerati per vedere se la nuova funzionalità interromperà una delle funzionalità esistenti.
Manifesto Agile e BDD
Il Manifesto Agile afferma quanto segue:
Stiamo scoprendo modi migliori per sviluppare software facendolo e aiutando gli altri a farlo. Attraverso questo lavoro, siamo arrivati a valorizzare:
Individuals and interactions - oltre Processi e strumenti
Working software - oltre Documentazione completa
Customer collaboration - Negoziazione contrattuale
Responding to change - oltre a seguire un piano
Cioè, mentre c'è valore negli elementi a destra, diamo più valore agli elementi a sinistra.
BDD si allinea al manifesto Agile come segue:
Manifesto Agile | Allineamento BDD |
---|---|
Individui e interazioni su processi e strumenti. | BDD significa avere conversazioni. |
Software funzionante su documentazione completa. | BDD si concentra sulla semplificazione della creazione di software di valore aziendale. |
Collaborazione con il cliente nella negoziazione del contratto. | BDD si concentra su scenari basati su idee con comunicazione continua con il cliente man mano che lo sviluppo procede. Non si basa su alcuna promessa. |
Rispondere al cambiamento piuttosto che seguire un piano. | BDD si concentra sulla comunicazione e collaborazione continua che facilita l'assorbimento dei cambiamenti. |