Sviluppo basato sui test: per creare un test quando il problema è archiviato o quando il problema viene rilevato da qualcuno?

2

Recentemente ho lavorato a un progetto di sviluppo web su un team di meno di cinque persone. Le cose stanno andando bene ma ora abbiamo deciso di andare con lo sviluppo basato sui test.

Finora quello che ho imparato è che uno degli obiettivi principali è che quando si esegue il test del software, è necessario passare tutto. Tuttavia, la nostra situazione attuale è che abbiamo più problemi / storie aperti di quello che possiamo gestire all'interno di una iterazione o due e siamo un po 'confusi su come gestire effettivamente lo sviluppo basato sui test in questa situazione.

Una cosa che possiamo fare è che quando ognuno di noi sceglie una storia, quella persona scriverà il test per essa. Ognuno di noi lavorerà all'interno del ciclo refactore rosso-verde. Oppure un'altra cosa che possiamo fare è provare a creare casi di test per tutti i problemi aperti. Allora ognuno di noi può prenderlo e lavorare per eliminare il rosso per quel problema.

Il primo approccio mi sembra piacevole che possiamo garantire che tutto ciò che abbiamo fatto è verde su tutta la linea. Tuttavia, quest'ultimo approccio è quello che stavo pensando sembra più realistico in quanto riflette lo stato imperfetto del tuo software. Non sono sicuro di come sia gestito nel mondo reale o quale dovrebbe essere la migliore pratica per questo.

Gli input di tutti sono i benvenuti.

    
posta Ekkmanz 11.05.2012 - 05:45
fonte

3 risposte

8

Creerei solo test per i problemi prima che inizino e solo per le storie che pianifichi di completare questa iterazione. Probabilmente dovrebbero essere creati dallo sviluppatore che alla fine completerà la funzionalità per la storia.

Il problema con la creazione di tutti i test in anticipo per tutte le tue storie, è che rischi di cambiare le storie. È meglio affrontare le cose una storia alla volta. Quando finisci uno sprint / iterazione / qualunque cosa, dovresti ricominciare i problemi da completare. Spesso, dovranno cambiare a causa di qualcosa che è accaduto nel precedente ciclo di lavoro. Se avessi scritto dei test, dovrebbero anche cambiare.

Scrivendo i test durante lo sviluppo della storia, ti assicuri che i test e il lavoro di sviluppo siano sincronizzati.

    
risposta data 11.05.2012 - 05:57
fonte
4

Ci sono solo 3 semplici regole per TDD.

  1. Non sei autorizzato a scrivere alcun codice di produzione a meno che non si debba effettuare un passaggio di prova dell'unità in errore.
  2. Non è consentito scrivere più di un test unitario di quanto sia sufficiente per fallire; e gli errori di compilazione sono errori.
  3. Non ti è permesso scrivere più codice di produzione di quanto sia sufficiente per superare il test dell'unità fallita.

Indipendentemente che tu stia lavorando su una nuova storia o risolvendo un problema aperto, questo non cambierà. Fallo 1 test unitario alla volta.

Sarà più facile effettuare il test dell'unità per i nuovi codici. Tuttavia, può essere un po 'fastidioso per un codice esistente. Man mano che la correzione va più a fondo nel codice esistente, è necessario creare sempre più test unitari. Ancora una volta per ripetere, prova ognuno prima di procedere a creare un nuovo test.

    
risposta data 11.05.2012 - 08:58
fonte
2

Or another thing we can do is that we try to create test cases for all open issues.

La persona o le persone assegnate a questa attività diventeranno molto annoiate, molto rapidamente. Il progetto "cover this code with unit tests" non è eccitante e non ha obiettivi chiari (OK, sembra chiaro all'inizio, ma non lo è).

Inoltre, questo approccio spreca tutta la conoscenza che gli ingegneri raccolgono lungo la strada. Quando ho scritto un test fallito, ho scoperto:

  • ciò che il software dovrebbe fare
  • come affermano gli autori del software che dovrebbero essere fatti
  • qual è la differenza tra l'aspettativa e la realtà

Sono in una posizione privilegiata per correggere il bug e far passare il test. Se invece passassi a scrivere un test diverso, allora ho sprecato questa opportunità.

    
risposta data 11.05.2012 - 10:10
fonte

Leggi altre domande sui tag