Lo sviluppo basato sui test di accettazione (ATDD) è un processo collaborativo in cui sviluppatori, tester e rappresentanti aziendali si uniscono per elaborare i requisiti, percepire potenziali insidie e ridurre la possibilità di errori prima dell'inizio della codifica. ATDD è scritto dal punto di vista dell'utente e risponde alla domanda "Il codice fa quello che dovrebbe fare?"
Il primo passo in ATDD è riunire tutte le parti coinvolte e tenere un seminario sulle specifiche. Una volta definiti e chiariti i requisiti in officina, i tester possono creare test automatizzati in base ai criteri specificati. I tester del controllo qualità (QA) collaborano con gli sviluppatori per implementare il primo test e automatizzarlo. ATDD semplifica inoltre l'implementazione dei test unitari.
Formato di prova ATDD
I test ATDD di solito aderiscono al seguente formato:
Dato: Una configurazione, uno stato specificato.
E (opzionale): l'installazione continua.
Quando: Trigger, si verifica un'azione o un evento.
Quindi: Verifica. Lo stato è cambiato o viene prodotto un output.
Un esempio che utilizza il formato ATDD:
Dato: Film elencato nel catalogo dell'app di streaming video.
E: L'utente è un abbonato a pagamento.
quando: L'utente seleziona il film da guardare dal catalogo delle app.
Poi: Il film viene riprodotto in streaming per l'utente.
Vantaggi di ATDD
ATDD riunisce tutte le persone coinvolte nello sviluppo per discutere i criteri attorno ai quali è costruita un'app. La chiarezza sui requisiti aiuta a ridurre gli sforzi sprecati e la comprensione di come un'azienda si aspetta che le cose funzionino possono ridurre la ricodifica e gli errori. ATDD può spesso essere utile per gli sviluppatori che utilizzano Agile.
Anche nei casi in cui il test non è automatizzato o i tester hanno poca conoscenza della codifica, è comunque utile chiarire le condizioni e la logica del business. Tutti i team possono trarre vantaggio dalla collaborazione con esperti aziendali e dalla discussione iniziale su come eseguire i test in modo da soddisfare i requisiti necessari. Il risultato finale di ATDD è un'applicazione migliore e più affidabile.
ATDD contro TDD
Mentre ATDD si concentra sulla collaborazione e sul test delle funzionalità utente, lo sviluppo basato sui test (TDD) segue un approccio più incentrato sullo sviluppatore. TDD si concentra sull'esecuzione e sull'automazione di unit test ed è più facile da implementare. Sia ATDD che TDD mirano a ridurre il codice non necessario e le risorse per sviluppatori, creando requisiti completi e testando continuamente per assicurarsi che un prodotto soddisfi le aspettative degli utenti.