Mi sto chiedendo come scrivere casi di test BDD per un sistema reale. Tutti gli esempi che riesco a trovare sono banali e non rispondono alla domanda.
Il caso d'uso / storia di esempio è fondamentalmente simile a questo:
- L'utente si trova nella pagina principale dell'applicazione
- Fa clic su recupera per recuperare qualche ordine su cui lavorare
- Riempie 4 caselle di testo e invia invia.
- Accade qualcosa
- Il prossimo ordine è presentato all'utente
Quindi, il punto 4 è un po 'vago, ma c'è molta logica in gioco, c'è un flusso di lavoro sotto, ecc. In pratica puoi definirlo in questo modo:
Given order of types A+B+C+E+F (20 possible values with arbitraty combination)
and subtype a1 and the order has attribute X = 1, attribute Y=asdasd, (and much more)
When user enters some specific kind of value in here, and other in here and clicks submit
Then order does this, this, this, this, this, this and that
Non ha un bell'aspetto ...
Quindi l'altro modo è scrivere:
Given the order with type A (and the rest is "default")
When user does ...
Then the order does things-depentant-only-on-A
Sembra più bello, ma - è davvero l'approccio giusto per definire quello "stato predefinito" del sistema? Non può essere arbitrario perché "cose-dipendenti-solo-su-A" non sono realmente indipendenti - potrebbero non avere nemmeno la possibilità di calciare se l'indicatore "non-prendere-A-dentro-conto" è attivo, o qualsiasi altro caso strano strano. (sì, il mio progetto attuale è: una logica non troppo complessa + anni-uomo di casi speciali)
Una nota: quando descriviamo i requisiti a volte specificiamo i parametri necessari perché la storia abbia un senso, a volte no - funziona per noi, perché conosciamo altre storie. Ma in BDD sembra che il test case dovrebbe essere specifico e inequivocabile.