2010-07-29 10 views
5

Presto sarò coinvolto in un progetto che utilizzerà l'approccio di gestione/sviluppo del progetto agile, con 5 (o così) scatti di 2 settimane. Il progetto userà un modello di progettazione DDD che ho trovato in passato funziona alla grande con i test unitari, quindi ho l'entusiasmo di usarlo anche per questo progetto. L'unico problema è dato dai seguenti fattori sono incerto sul fatto test di unità può essere implementato con successo con lo sviluppo agile:I test delle unità possono essere implementati efficacemente con uno sviluppo agile?

  • potenziale per cambiare costantemente i requisiti (requisiti cambiano, le prove si rompono, le prove devono essere aggiornati troppo).
  • Fattore di tempo (i test di unità possono far sì che il processo di sviluppo impieghi un po 'più di tempo e se i requisiti cambiano verso la fine di uno sprint ci potrebbe essere troppo poco tempo per aggiornare test e codice di produzione con la migliore qualità).

Ho la sensazione che se/quando i requisiti cambiano (specialmente se verso la fine di uno sprint) e date le scadenze ravvicinate le prove di unità diventeranno un peso. Qualcuno ha qualche buon consiglio in merito?

+1

Questa domanda è off-topic perché non rientra nell'ambito di questo sito, come definito in [Quali argomenti posso chiedere qui?] (// stackoverflow.com/help/on-topic) Vedi anche: [Cosa tipi di domande dovrei evitare di chiedere?] (// stackoverflow.com/help/dont-ask) Potresti essere in grado di chiedere su [un altro sito Stack Exchange] (// stackexchange.com/sites#name), * forse * [pm.se] o [softwareengineering.se]. Assicurati di leggere la pagina dell'argomento del centro assistenza per qualsiasi sito su cui intendi pubblicare una domanda. – Makyen

+0

@Makyen Questa domanda è stata pubblicata oltre 7 anni fa quando questi altri scambi non esistevano/non erano ben noti o i confini non erano chiaramente definiti ... quindi, uh .. grazie per le informazioni? Che strano aggiornamento. – Scozzard

+0

@Makyen stai letteralmente passando per il più vecchio dei vecchi post e fornisci consigli basati sull'attuale serie di domande frequenti? Hai una lunga strada davanti a te amico mio! – Scozzard

risposta

7

Penso che tagli in entrambi i modi. Da un lato, sì, i test unitari sono codici extra che richiedono una manutenzione extra e rallentano un po '. D'altra parte, se i requisiti iniziano ad evolversi, avere test unitari in atto sarà un risparmiatore di vita per assicurarsi che ciò che si sta cambiando funzioni ancora.

+2

Il secondo punto è il più importante nei miei libri. Essere in grado di cambiare le cose con la certezza che il resto del sistema funziona ancora rende molto più facile apportare tali modifiche. –

+1

Non penso che il TDD sia molto controverso. La maggior parte delle persone concorda sul fatto che i test unitari richiedono tempo ma aiutano lo sviluppo (e che solitamente i benefici superano i costi), ma non tutti sono convinti che scrivere i test prima sia utile. Scrivere i test per primo ha valore come processo di progettazione, ma non funziona per tutti. – Mathias

3

Considerando il valore di oltre 10 settimane di codice senza copertura del test, mi fa rabbrividire. Quando avrai il tempo di testare manualmente tutto quel codice? E in base ai requisiti in evoluzione, impiegherete molto più tempo a rintracciare gli impatti che i cambiamenti avranno nel vostro codice base.

Non posso consigliare abbastanza forte da utilizzare il test dell'unità. Anche quando fai DDD, lascia che i test unitari guidino l'implementazione. Accoppiato con buoni modelli come DI/IoC e SRP, dovresti trovare sia la tua base di codice che i test per essere più resilienti al cambiamento, e quindi risparmiare un sacco di tempo durante questi sprint.

+0

Lavoro in progetti che richiedono anni e non hanno copertura di prova. Non che mi piaccia. Affatto. –

+0

@Peri - Mi dispiace per te, e purtroppo molti progetti sono così. Speriamo che non troppi progetti greenfield inizino a lesinare su test automatizzati. Non è troppo tardi, però, mi hanno consegnato sistemi con copertura dello 0% e sono stato in grado di portarlo fino al 50%, testando gradualmente i pezzi man mano che avanzavano le nuove modifiche. –

3

A meno che non si disponga di test unitari con copertura elevata, il costo del cambiamento aumenterà in modo esponenziale con l'avanzamento dei progetti. Quindi, in pratica, più cambi anticiperai il PIÙ, avrai effettivamente bisogno dei tuoi test unitari.

In secondo luogo, i buoni test di unità dipendono da pochissime parti di funzionalità nel codice di produzione. Quando questo è vero, solo alcuni test verranno influenzati quando una funzionalità cambia. Fondamentalmente, ogni test verifica solo una cosa e un piccolo pezzo di codice di produzione. La chiave per scrivere i test unitari che seguono questo principio è quella di disaccoppiare il codice e testare separatamente.

In terzo luogo, è necessario comprendere meglio il concetto di DONE e perché la sua definizione è così importante in termini di sviluppo sostenibile. Fondamentalmente, non puoi andare veloce nel tempo in modo sostenibile se la tua squadra compromette il concetto di FATTO a breve termine.

Problemi correlati