I generatori di test unitari ti hanno aiutato quando hai lavorato con il codice legacy?

10

Sto guardando un piccolo (~ 70kLOC incluso generato) C # (.NET 4.0, alcuni Silverlight) con base di codice che ha una copertura di test molto bassa. Il codice stesso funziona nel senso che ha superato i test di accettazione degli utenti, ma è fragile e in alcune aree non molto ben calcolato. Vorrei aggiungere una copertura di test unitaria solida attorno al codice legacy usando i soliti sospetti (NMock, NUnit, StatLight per i bit Silverlight).

Il mio approccio normale è iniziare a lavorare attraverso il progetto, unit test & refactoring, finché non sono soddisfatto dello stato del codice. L'ho fatto molte volte in passato, e ha funzionato bene.

Tuttavia, stavolta sto pensando di utilizzare un generatore di test (in particolare Pex ) per creare il framework di test, quindi eseguire manualmente il riempimento.

La mia domanda è: hai usato generatori di test di unità in passato quando hai iniziato a lavorare su una base di codice legacy e, in caso affermativo, li consiglieresti?

Il mio timore è che i test generati mancheranno delle sfumature semantiche del code-base, portando alla temuta situazione di avere dei test nell'interesse della metrica di copertura, piuttosto che dei test che esprimono chiaramente il comportamento previsto nel codice.

    
posta Duncan Bayne 04.01.2011 - 05:42
fonte

1 risposta

9

Suggerirei di guardare le cose in modo un po 'diverso. L'aggiunta di un nuovo codice di test unitario a un'applicazione esistente senza incidenti potrebbe non fornire i risultati migliori. Se stai facendo questo per familiarizzare con la base di codice o hai davvero il tempo di uccidere e vuoi testare i generatori di test, allora ignora i miei commenti.

Per essere pragmatici, dovresti esaminare tutte le liste di bug. Quindi creare unit test per ciascuno dei bug, risultante in come dovrebbe comportarsi. Idealmente, dovresti aggiungere solo un nuovo codice per ogni bug quando lo raggiungi.

Tempi per aggiungere il codice di test dell'unità:

  • Aggiunta di nuove funzionalità
  • Codice rielaborato
  • Risolto un bug
  • Imparare cosa fa il codice
  • Dimostra che esiste un bug

È difficile quantificare il valore di aggiungere test unitari dopo il fatto.

Normalmente non mi permetto di scrivere risposte contrarie a quanto vuole il richiedente, ma ritengo che questa sia una buona lezione da seguire.

    
risposta data 04.01.2011 - 06:41
fonte

Leggi altre domande sui tag