BDD - Specifiche per esempio
Secondo Gojko Adzic, l'autore di "Specification by Example", Specification by Example è un insieme di schemi di processo che facilitano il cambiamento nei prodotti software per garantire che il prodotto giusto sia consegnato in modo efficiente ".
La specifica per esempio è un approccio collaborativo per definire i requisiti e i test funzionali orientati al business per i prodotti software basati sull'acquisizione e l'illustrazione dei requisiti utilizzando esempi realistici invece di dichiarazioni astratte.
Specifica per esempio - Panoramica
L'obiettivo della specifica per esempio è concentrarsi sullo sviluppo e la fornitura di requisiti aziendali prioritari e verificabili. Sebbene il concetto di specifica per esempio sia di per sé relativamente nuovo, è semplicemente una riformulazione di pratiche esistenti.
Supporta un vocabolario molto specifico e conciso noto come linguaggio onnipresente che:
Abilita i requisiti eseguibili.
Viene utilizzato da tutti i membri del team.
È creato da un team interfunzionale.
Cattura la comprensione di tutti.
La specifica per esempio può essere utilizzata come input diretto nella creazione di test automatizzati che riflettono il dominio aziendale. Pertanto, il focus della specifica per esempio è sulla costruzione del prodotto giusto e sulla costruzione del prodotto giusto.
Scopo della specifica per esempio
Lo scopo principale della specifica per esempio è costruire il prodotto giusto. Si concentra sulla comprensione condivisa, stabilendo così un'unica fonte di verità. Consente l'automazione dei criteri di accettazione in modo che l'attenzione si concentri sulla prevenzione dei difetti piuttosto che sul rilevamento dei difetti. Promuove anche il test precoce per trovare i difetti in anticipo.
Uso di SbE
La specifica per esempio viene utilizzata per illustrare il comportamento del sistema previsto che descrive il valore aziendale. L'illustrazione è per mezzo di esempi concreti e di vita reale. Questi esempi vengono utilizzati per creare requisiti eseguibili che sono:
Testabile senza traduzione.
Catturato nella documentazione live.
Di seguito sono riportati i motivi per cui utilizziamo esempi per descrivere specifiche particolari:
Sono più facili da capire.
Sono più difficili da interpretare male.
Vantaggi di SbE
I vantaggi dell'utilizzo della specifica per esempio sono:
Maggiore qualità
Riduzione degli sprechi
Rischio ridotto di difetti di produzione
Sforzo mirato
Le modifiche possono essere apportate in modo più sicuro
Migliore coinvolgimento delle imprese
Applicazioni di SbE
Specifica per esempio trova applicazioni in -
O azienda complessa o organizzazione complessa.
Non funziona bene per problemi puramente tecnici.
Non funziona bene per i prodotti software focalizzati sull'interfaccia utente.
Può essere applicato anche a sistemi legacy.
SbE e test di accettazione
I vantaggi della specifica per esempio in termini di test di accettazione sono:
Una singola illustrazione viene utilizzata sia per i requisiti dettagliati che per i test
Lo stato di avanzamento del progetto è in termini di Test di accettazione -
Ogni test serve a testare un comportamento.
Un test sta passando per un comportamento o non lo è.
Un test di superamento rappresenta che il comportamento particolare è stato completato.
Se un progetto che richiede 100 comportamenti per essere completato ha 60 comportamenti completati, allora è finito al 60%.
I tester passano dalla correzione dei difetti alla prevenzione dei difetti e contribuiscono alla progettazione della soluzione.
L'automazione consente la comprensione immediata dell'impatto di una modifica dei requisiti sulla soluzione.
Specifica per esempio: cosa significa per ruoli diversi
L'obiettivo della specifica per esempio è promuovere la collaborazione di tutti i membri del team, incluso il cliente durante tutto il progetto per fornire valore aziendale. Tutti per una migliore comprensibilità usano lo stesso vocabolario.
Ruolo | Uso di SbE |
---|---|
Analista di affari |
|
Sviluppatore |
|
Tester |
|
Tutti |
|
SbE - Una serie di modelli di processo
Come abbiamo visto all'inizio di questo capitolo, la specifica per esempio è definita come un insieme di schemi di processo che facilitano il cambiamento nei prodotti software per garantire che il prodotto giusto sia consegnato in modo efficiente.
I modelli di processo sono:
Specifica collaborativa
Illustrare le specifiche utilizzando esempi
Affinamento delle specifiche
Automatizzare gli esempi
Convalida frequentemente
Documentazione vivente
Specifica collaborativa
Gli obiettivi della specifica collaborativa sono:
Ottieni i vari ruoli in una squadra per avere una comprensione comune e un vocabolario condiviso.
Coinvolgi tutti nel progetto in modo che possano contribuire con le loro diverse prospettive su una caratteristica.
Garantire una comunicazione condivisa e la proprietà delle funzionalità.
Questi obiettivi vengono raggiunti in un seminario sulle specifiche noto anche come riunione dei Tre Amigos. I tre Amigos sono BA, QA e lo sviluppatore. Sebbene ci siano altri ruoli nel progetto, questi tre sarebbero responsabili e responsabili dalla definizione alla consegna delle caratteristiche.
During the meeting −
Il Business Analyst (BA) presenta i requisiti e i test per una nuova funzionalità.
I tre Amigo (BA, Developer e QA) discutono la nuova funzionalità e rivedono le specifiche.
Il QA e lo sviluppatore identificano anche i requisiti mancanti.
I tre Amigo
Utilizza un modello condiviso utilizzando un linguaggio onnipresente.
Usa il vocabolario del dominio (un glossario viene mantenuto se necessario).
Cerca differenze e conflitti.
Non saltare ai dettagli di implementazione a questo punto.
Raggiungi un consenso sul fatto che una caratteristica sia stata specificata sufficientemente.
Un senso condiviso dei requisiti e della proprietà dei test facilita le specifiche di qualità
I requisiti sono presentati come scenari, che forniscono requisiti espliciti e non ambigui. Uno scenario è un esempio del comportamento del sistema dal punto di vista degli utenti.
Illustrare le specifiche utilizzando esempi
Gli scenari vengono specificati utilizzando la struttura Dato-Quando-Allora per creare una specifica verificabile -
Given <qualche precondizione>
And <condizioni preliminari aggiuntive> Optional
When <si verifica un'azione / trigger>
Then <qualche condizione del post>
And <condizioni post aggiuntive> Optional
Questa specifica è un esempio di un comportamento del sistema. Rappresenta anche un criterio di accettazione del sistema.
Il team discute gli esempi e il feedback viene incorporato fino a quando non si concorda sul fatto che gli esempi coprono il comportamento previsto della funzionalità. Ciò garantisce una buona copertura del test.
Affinamento della specifica
Per perfezionare una specifica,
Sii preciso nello scrivere gli esempi. Se un esempio si rivela complesso, suddividilo in esempi più semplici.
Concentrati sulla prospettiva aziendale ed evita i dettagli tecnici.
Considera condizioni sia positive che negative.
Attenersi al vocabolario specifico del dominio.
Discuti gli esempi con il cliente.
Scegli le conversazioni per farlo.
Considera solo quegli esempi a cui il cliente è interessato. Ciò consente la produzione solo del codice richiesto ed evita di coprire ogni possibile combinazione, che potrebbe non essere richiesta
Per garantire che lo scenario venga superato, devono essere superati tutti i casi di test per quello scenario. Quindi, migliorare le specifiche per renderle testabili. I casi di test possono includere vari intervalli e valori di dati (boundary e corner case) nonché diverse regole aziendali che comportano modifiche nei dati.
Specificare regole di business aggiuntive come calcoli complessi, manipolazione / trasformazione dei dati, ecc.
Includere scenari non funzionali (ad esempio prestazioni, carico, usabilità, ecc.) Come Specifica per esempio
Esempi di automazione
Il livello di automazione deve essere mantenuto molto semplice: basta collegare le specifiche al sistema in prova. Puoi usare uno strumento per lo stesso.
Esegui l'automazione dei test utilizzando il linguaggio DSL (Domain Specific Language) e mostra una chiara connessione tra input e output. Concentrati sulle specifiche e non sullo script. Assicurati che i test siano precisi, facili da capire e verificabili.
Convalida frequentemente
Includere la convalida di esempio nella pipeline di sviluppo con ogni modifica (aggiunta / modifica). Esistono molte tecniche e strumenti che possono (e dovrebbero) essere adottati per garantire la qualità di un prodotto. Ruotano attorno a tre principi chiave:Test Early, Test Well e Test Often.
Eseguire i test frequentemente in modo da poter identificare i collegamenti deboli. Gli esempi che rappresentano i comportamenti aiutano a tenere traccia dei progressi e si dice che un comportamento sia completo solo dopo il superamento del test corrispondente.
Documentazione vivente
Mantieni le specifiche il più semplici e brevi possibile. Organizza le specifiche ed evolvile man mano che il lavoro procede. Rendi la documentazione accessibile a tutti i membri del team.
Specifica tramite passaggi di processo di esempio
L'illustrazione mostra le fasi del processo in Specifica per esempio.
Anti-modelli
Gli anti-pattern sono determinati modelli nello sviluppo del software che sono considerati una cattiva pratica di programmazione. Al contrario dei modelli di progettazione, che sono approcci comuni a problemi comuni, che sono stati formalizzati e sono generalmente considerati una buona pratica di sviluppo, gli anti-modelli sono l'opposto e non sono desiderabili
Gli anti-pattern danno origine a vari problemi.
Anti-pattern | I problemi |
---|---|
Nessuna collaborazione |
|
Ignaro quando il codice è finito |
|
Esempi troppo dettagliati o troppo incentrati sull'interfaccia utente |
|
Sottovalutare lo sforzo richiesto |
|
Soluzione ai problemi - Qualità
La qualità può essere garantita tenendo d'occhio gli anti-modelli. Per ridurre al minimo i problemi creati dagli anti-pattern, dovresti:
Riunisciti per specificare utilizzando esempi.
Pulisci e migliora gli esempi.
Scrivi un codice che soddisfi gli esempi
Automatizza gli esempi e distribuisci.
Ripeti l'approccio per ogni user story.
Risolvere i problemi dovuti agli anti-pattern significa aderire a -
Collaboration.
Concentrandosi su cosa.
Concentrandosi sul business.
Essere preparato.
Cerchiamo di capire cosa significano ognuna delle precedenti.
Collaborazione
In collaborazione -
Gli uomini d'affari, gli sviluppatori e i tester danno input dal loro punto di vista.
Esempi automatizzati dimostrano che il team ha costruito la cosa corretta.
Il processo è più prezioso dei test stessi.
Concentrandosi su cosa
Devi concentrarti sulla domanda: "cosa". Mentre ci si concentra su 'cosa' -
Non cercare di coprire tutti i casi possibili.
Non dimenticare di utilizzare diversi tipi di test.
Mantieni gli esempi il più semplici possibile.
Gli esempi dovrebbero essere facilmente comprensibili dagli utenti del sistema.
Gli strumenti non dovrebbero svolgere un ruolo importante nei seminari.
Concentrandosi sul business
Per concentrarsi sul business -
Mantieni le specifiche secondo l'intento aziendale.
Includere l'attività nella creazione e revisione delle specifiche.
Nascondi tutti i dettagli nel livello di automazione.
Essere preparato
Preparati per quanto segue:
I vantaggi non sono immediatamente evidenti, anche se le pratiche di squadra sono cambiate.
L'introduzione di SbE è impegnativo.
Richiede tempo e investimenti.
I test automatizzati non sono gratuiti.
Utensili
L'uso degli strumenti non è obbligatorio per la specifica mediante esempio, sebbene in pratica siano disponibili diversi strumenti. Ci sono casi che riescono a seguire la specifica per esempio anche senza utilizzare uno strumento.
I seguenti strumenti supportano la specifica per esempio:
Cucumber
SpecFlow
Fitnesse
Jbehave
Concordion
Behat
Jasmine
Relish
Speclog