SfondoCome si acquisiscono i requisiti con i test di accettazione dichiarativi?
Sto cercando di aiutare la mia squadra ad organizzare per un nuovo progetto di applicazione per cellulare. Abbiamo scelto di seguire BDD (vedere anche BDD definition) al fine di acquisire semplici requisiti inglesi che formano un contratto tra parti interessate e sviluppatori per ogni singola storia utente.
Utilizziamo i test di accettazione per documentare i requisiti di ogni utente. I test di accettazione vengono scritti prima della pianificazione dello sprint. Gli sviluppatori perfezionano e aggiungono ai test durante la pianificazione dello sprint.
Definiamo Criteri di accettazione come un elenco di regole (ad esempio: convalida dell'input, valori predefiniti, ecc) e Test di collaudo come un elenco di scenari cetriolo. Abbiamo in programma di utilizzare Calabash per i test sui dispositivi mobili.
Ritengo che i criteri/test di accettazione siano una soluzione più agile e quindi migliore per documenti con requisiti più formali.
Sento di aver trovato una soluzione efficace per me, ma vorrei capire come altri stanno raccogliendo i requisiti e scrivendo test di accettazione.
Problema
C'è un dibattito nella comunità Cetriolo di imperative vs declarative fasi della prova. Mi avvicino all'imperativo, perché uno sviluppatore deve sapere che aspetto ha una storia utente consegnabile.
Non mi sento un problema con l'accoppiamento UI. Esistono modi per disaccoppiare l'interfaccia utente dal test (ad esempio: page objects). Inoltre, non ritengo che avere passaggi dettagliati rendano difficile per un partecipante non tecnico comprendere (a meno che non sappia come utilizzare un browser Web o un dispositivo mobile, ma si tratta di un problema separato).
È possibile che il termine "Acceptance Test" sia errato. Nel mio utilizzo, un test di accettazione non è allo stesso livello di un test unitario. Vedo un test di collaudo come livello elevato integration test.
L'esempio
- Come ospite
- voglio login
- per accedere alle funzionalità di app
prova imperativo
- Scenario: accesso valido
- Dato Sono nella schermata di "login"
- Quando entro in "e-mail @ dominio.com" in "e-mail"
- E io entro in "password1" in "password"
- E io batto "Login"
- poi vedo "login riuscito"
dichiarativa di prova
- Sc enario: accesso valido
- Dato che ho un account valido
- Allora posso accedere
Questi sia in grado di coprire le stesse funzionalità e la seconda è più breve, ma non dice se io può accedere con un nome utente, e-mail o account facebook/twitter/google/etc. E 'solo non è sufficiente per codificare in realtà una soluzione
La questione
Come si fa a catturare i requisiti per una funzione con gradini dichiarativi?
Dan Nord (creatore di BDD) ha alcune riflessioni sulla questione: http://dannorth.net/2011/01/31/whose- dominio-è-da-comunque /. È utile tenere presente che uno scenario deve riguardare solo 2 domini: l'utente della funzionalità e lo sviluppatore che lo implementerà. Lo scenario dovrebbe chiarire a entrambi i domini ciò che accadrà come (ad esempio: "utente accede con email e password", non "utente accede con username e password", ecc) – Brenden
http://blog.cyrusinnovation.com/2013 /04/improve-your-ios-frank-cucumber-acceptance-tests.html dice che l'imperativo è appropriato quando uno stakeholder è interessato all'esperienza utente di un determinato scenario. Ha senso mirare alla brevità tramite dichiarativo pur essendo esplicito con imperativo quando è richiesto. – Brenden
Questa domanda sembra essere fuori tema perché riguarda la pianificazione del progetto. Penso che dovrebbe essere migrato a programmers.stackexchange.com. – Brenden