TL; DR
Le storie degli utenti servono a documentare quale valore dovrebbe essere aggiunto al prodotto e perché. I dettagli dell'implementazione (ad es. Come il valore deve essere aggiunto, testato, misurato o validato) sono vincolati dalla trama, ma non sono contenuti al loro interno. Vengono deliberatamente lasciati come artefatti separati per mantenere flessibilità e agilità all'interno della struttura.
Le specifiche e i dettagli di implementazione sono spesso catturati in altri artefatti come gli script e gli scenari di accettazione-Test Driven Development (ATDD), Test-Driven Development (TDD) e Behavior-Driven Development (BDD). Questi particolari artefatti non sono obbligati dal framework Scrum, ma ti daranno sicuramente un buon punto di partenza se non hai già in atto altri controlli di processo efficaci.
Le storie degli utenti non sono specifiche
Il poster originale (OP) ha posto la seguente domanda :
[A] il cliente desidera un trattamento diverso per le diverse carte di credito, ci sono requisiti rigorosi che devono essere implementati e conosciuti in modo che i casi di test possano essere scritti ... DOVE DOVREI INSERIRLO SE NON NELLA STORIA?
Una user story è una funzionalità che offre valore , fornisce un contesto per guidare le conversazioni sull'implementazione e un punto di vista legato a un consumatore di valore che trarrà vantaggio dal valore fornito dalla funzionalità.
Il punto centrale di una user story è che i dettagli di implementazione non sono prescrittivi. Il team è libero di implementare la funzionalità in qualsiasi modo che offra il valore identificato al consumatore di valore nel contesto appropriato.
Un esempio lavorato
Una storia utente di esempio
Questo è più facile da spiegare se inizi con un insieme meno ambiguo di storie utente. Dato che l'OP non ha fornito una user story fruibile che segue il mnemonico INVEST , ne inventerò uno a titolo di esempio. Considera la seguente storia:
Come utente che preferisce pagare con la carta Discover,
vorrei avere la possibilità di effettuare i miei acquisti con la carta Discover in
modo da non essere limitato a Visa, Mastercard o American Express.
Ciò fornisce una funzionalità concreta, fornisce un contesto che può guidare le decisioni di implementazione che il team deve prendere e identifica il consumatore di valore come cliente proprietario di Discover-card. Non è un insieme di specifiche, ma è ciò di cui hai bisogno per avere le giuste conversazioni con il cliente e con il team su come implementare al meglio la storia durante un'iterazione di sviluppo.
Analisi e implementazione
L'implementazione effettiva dipende dal team. Il team dovrà fare alcune analisi per determinare:
- Il modo più semplice per implementare una nuova funzionalità.
- Quale delle varie opzioni di implementazione sarà più semplice da supportare in futuro, senza accumulare debiti tecnici.
- Come applicare i principi open-closed e YAGNI per garantire che la tua nuova funzionalità sia robusta senza essere troppo ingegnerizzata.
Uno dei principi fondamentali del Manifesto Agile è la collaborazione con i clienti. Un team interfunzionale e auto-organizzato dovrebbe essere in grado di collaborare con il cliente per elaborare i dettagli di implementazione all'interno delle linee guida fornite dalla user story.
Se le storie dei tuoi utenti non sono scritte bene, o se il team non ha le competenze o la maturità dei processi per fare le analisi appena sufficienti richieste dal loro agile framework, questo ovviamente sarà molto più difficile di quanto debba essere. Sono stati scritti interi libri sull'argomento di come creare buone storie utente al giusto livello di granularità; purtroppo non esiste un proiettile d'argento, ma è un'abilità apprendibile per i team agili.
Progettazione guidata dai test e basata sul comportamento
Il modo migliore per garantire che l'analisi sia valida e che l'implementazione sia sia sana che sostenibile è attraverso l'uso delle pratiche TDD e BDD. Ad esempio, vista la storia sopra, il team dovrebbe catturare l'implementazione pianificata attraverso artefatti come:
Funzionalità del cetriolo con scenari verificabili.
Questo è molto utile per guidare lo sviluppo di test di accettazione e per documentare le aspettative degli utenti sul comportamento dell'applicazione. Ad esempio, la user story dovrebbe avere una o più funzionalità di Cucumber correlate che descrivono come l'utente è in grado di effettuare il checkout con una scheda Discover e quale aspetto ha tale processo per l'utente.
Test RSpec che convalidano il comportamento (non i dettagli di implementazione interna) delle nuove funzionalità del codice.
Ciò è molto utile per documentare e convalidare il comportamento previsto della funzionalità all'interno dell'applicazione. Ad esempio, la user story guiderà la creazione di test unitari e di integrazione che assicurano che l'utilizzo di una carta Discover richiami qualsiasi comportamento specifico della carta richiesto dall'applicazione per autorizzare una vendita attraverso il gateway di pagamento.
Gli strumenti specifici non contano. Se non ti piace Cucumber o RSpec, usa gli strumenti o le metodologie che funzionano meglio per il tuo team. Tuttavia, il punto è che i dettagli di implementazione sono basati sulla user story , ma non sono prescritti da essa . Invece, l'implementazione (o le specifiche, se si preferisce) sono dettagli da elaborare durante lo sviluppo della funzionalità in modo collaborativo.