Mi piace l'approccio BDD allo sviluppo, ma mi sono imbattuto in una preoccupazione per quanto lontano andare. Questo commento da ThoughtWorks più recente Radar mi dà una pausa:Come gestiamo le permutazioni minori degli scenari BDD?
"L'avvento del design comportamento-driven (BDD) framework di test come il cetriolo, in combinazione con strumenti di automazione del browser come il selenio, ha incoraggiato l'uso diffuso di test di accettazione presso il livello di browser, che purtroppo è stato incoraggiato a eseguire la maggior parte dei test in cui il costo per eseguire i test è il massimo, ma dovremmo testare al livello appropriato, il più vicino possibile al codice, in modo che i test possano essere eseguiti con la massima efficienza. I test a livello di browser dovrebbero essere la ciliegina sulla torta, supportati da test di accettazione e unitari eseguiti a livelli appropriati. "
Quindi, ecco il mio scenario (gioco di parole):
Ho un app di base CRUD con un requisito aziendale per filtrare i dati visualizzati basano su criteri l'utente finale è autorizzato a selezionare. Per facilità di discussione, diciamo che è un'app per la compagnia elettrica e sto visualizzando l'attuale consumo di energia di ogni mese per ciascun cliente. L'utente di questa app potrebbe restringere i dati selezionando un singolo cliente, più clienti, nessun cliente o "Tutti i clienti". I dati visualizzati cambieranno in base a ciò che selezionano.
Per uno stakeholder del prodotto, questi davvero rappresentano 4 scenari separati. Tuttavia dal punto di vista dello sviluppatore sono praticamente identici, con l'unica differenza che è un parametro passato al DB. Quindi la domanda diventa: il vantaggio di avere ciascuna permutazione enunciata supera il costo della gestione e della manutenzione?
Penso principi BDD probabilmente dire "sì", perché la comunicazione del comportamento atteso è più esplicito, ma non sono sicuro. Certamente mi ha dato la sensazione di essere eccessivo. Gli scenari potrebbero essere un sacco di copia-incolla con piccole modifiche.
La mia inclinazione è quella di coprire questa funzionalità con un singolo scenario che cattura il valore del core business ("quando seleziono un cliente vedo i dati di utilizzo di energia"), e quindi coprire le altre permutazioni con un set di non-UI I test di integrazione basati sulla convalida del servizio/query restituiscono i dati corretti. Questo pensiero è sbagliato? Qual è la migliore risposta per assicurarti che questi scenari siano coperti, senza rinunciare ai benefici di BDD?
Grazie, Liz, è utile. Penso che il trabocchetto in cui stiamo arrivando qui stia ancora pensando a comportamenti come i test. Vogliamo test completi, quindi vogliamo scenari completi. Devo cambiare quella mentalità. Inoltre, dove posso imparare un po 'di più su questo schema "Ginger Cake"? Google non mi è venuto in mente molto, tranne alcune belle ricette di torte ... :) –
@ ryan-nelson Dan North si spera che scriverà un libro a * qualche * punto ... a parte quello, guarda i suoi video. Sostanzialmente prendi una ricetta per un pezzo di software ben compreso (torta al cioccolato) e sostituisci il pezzo che devi sostituire con qualcos'altro (il cioccolato sostituito dallo zenzero). Non è necessario spiegare l'intera ricetta per uno chef - o un dev - per ottenerlo. – Lunivore
Trovato un video qui dove lo spiega: http://oredev.org/2011/sessions/patterns-of-effective-delivery –