A partire dal momento in cui ho scritto questa risposta, ho capito che non si tratta di test, ma di documentazione. Per prima cosa, leggi manifesto agile :
[We value] working software over comprehensive documentation
Pertanto, dovresti rendere eseguibili le tue specifiche, scrivendole come un set di test completamente automatizzato.
Is writing specs based on stories a good idea?
Sì, imho, lo è. Si chiama "sviluppo guidato dal comportamento" o "specifica dall'esempio". In ruby c'è un ottimo strumento cetriolo che aiuta molto.
The problem now is that because there's so many stories, it's not immediately clear, for any part of the system which stories relate to it.
Perché vuoi che sia chiaro? Voglio dire, hai davvero bisogno di una matrice di tracciabilità "test / codice"? Il vantaggio di scrivere test come una specifica è che non è necessaria una tracciabilità separata "requisiti / test", perché i test diventano requisiti. Ai fini dei test di integrazione, dovresti trattare il tuo 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 quale specifica questo particolare codice corrisponde. Dovrebbe essere viceversa: da una particolare specifica dovresti sapere quale parte del sistema corrisponde ad essa. Non dovresti preoccuparti di alcune duplicazioni nelle tue specifiche. E se applichi un principio DRY al tuo codice ci saranno dozzine di specifiche che eseguono lo stesso codice.
It works at the time of developers, every sprint the devs just get a spec outlining what they need to do and the changes they need to make. But in terms of maintaining this story list and for testing, its starting to get really hard tracking bugs and in general just maintaining the specs, because one piece of functionality in the screen might have been documented in a number of different places due to it being split by story.
Non è infrequente che centinaia di test di integrazione vengano interrotti da una piccola modifica in un modulo critico. È qui che entra in gioco il test dell'unità.
Dovresti strutturare i tuoi test in modo tale che tu possa capire se un determinato 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à uno e un solo errore di test.
Have we written the stories in the wrong way?
Penso che devi solo organizzare le tue storie in epopee per utente, ad es. "Cliente", "Assistente" o per funzioni / schermate / flussi di lavoro ("Acquista", "Rimborso").
E ancora, i test delle specifiche non sostituiscono il collaudo delle unità. Ulteriori informazioni