Appena ho scritto questa risposta, ho capito che non si trattava di test, si tratta di documentazione. Dovresti prima leggere il manifesto agile :
[Apprezziamo] software funzionante su documentazione completa
Pertanto, è necessario rendere eseguibili le specifiche, ovvero scriverle come un set di test completamente automatizzato.
Scrivere specifiche basate su storie è una buona idea?
Sì, lo sono. Si chiama "sviluppo guidato dal comportamento" o "specifica per esempio". Nel rubino c'è un ottimo cetriolo strumento che aiuta in questo.
Il problema ora è che, poiché ci sono così tante storie, non è immediatamente chiaro, per qualsiasi parte del sistema a cui le storie si riferiscono.
Perché vuoi che sia chiaro? Voglio dire, hai davvero bisogno di una matrice di tracciabilità "test / codice"? Il vantaggio di scrivere i test come specifica è che non è necessaria una tracciabilità "requisiti / test" separata, poiché i test diventano requisiti. Ai fini del test di integrazione, è necessario trattare il software nel suo insieme, non come parti separate.
Potrebbe essere necessario uno strumento di copertura per vedere se ci sono moduli "morti", parti del sistema non coperte dai test delle specifiche. Ma non dovresti davvero preoccuparti di quali specifiche corrispondono a questo particolare codice. Dovrebbe essere viceversa: da una specifica specifica dovresti sapere quale parte del sistema corrisponde ad essa. Non dovresti preoccuparti di qualche duplicazione nelle tue specifiche. E se applichi un principio DRY al tuo codice, ci sarebbero dozzine di specifiche che eseguono lo stesso codice.
Funziona al tempo degli sviluppatori, ogni sprint che gli sviluppatori ricevono solo una specifica che descrive ciò che devono fare e le modifiche che devono apportare. Ma in termini di mantenimento di questo elenco di storie e di test, sta iniziando a ottenere bug di tracciamento davvero difficili e in generale solo a mantenere le specifiche, perché un pezzo di funzionalità nella schermata potrebbe essere stato documentato in un numero di luoghi diversi a causa del fatto che è diviso per storia.
Non è raro che centinaia di test di integrazione vengano interrotti da una piccola modifica in un modulo critico. È qui che entra in gioco il test unitario.
Dovresti strutturare i tuoi test in modo tale da poter dire se un particolare test copre un requisito di alto livello, o solo un sottile dettaglio di esso. In quest'ultimo caso, è necessario separare questo test dalla suite di test di integrazione. Lo scopo del test unitario è localizzare i bug. In modo che se si introduce un bug, ci sarà un solo errore di test.
Abbiamo scritto le storie nel modo sbagliato?
Penso che devi solo organizzare le tue storie in epopee per utente, ad esempio "Cliente", "Assistente", o per caratteristiche / schermate / flussi di lavoro ("Acquisto", "Rimborso").
E ancora, i test delle specifiche non sostituiscono i test unitari. Leggi di più