Ho lavorato su una base di codice molto grande che inizialmente non aveva test di unità. Seguendo alcune pratiche, ora (dopo diversi anni) la maggior parte della base di codice è coperta dai test.
Tutti i nuovi codici devono avere test delle unità.
A tutti i codici modificati devono essere stati aggiunti test di unità.
Il modo in cui abbiamo tranquillamente aggiunto test al vecchio codice senza interromperlo è principalmente quello di utilizzare il seguente approccio di base:
Scegli una piccola sezione di codice che è necessario modificare la funzionalità di.
- Prova a creare test di integrazione a livello di sistema per circondare il codice. A causa della complessità combinatoria dei test a questo livello, questi test formeranno solo un test "fumo" per raccogliere gli errori più importanti.
-
Introduci le interfacce necessarie per poter testare il codice che stai modificando. Usa tecniche di Refactoring che consistono in sequenze di cambiamenti molto piccoli che hai alta confidenza sono corrette. Prova a utilizzare il supporto strumenti ove possibile. Puoi farlo, ad esempio, spostando / estraendo il metodo che stai modificando sul proprio oggetto. Controlla regolarmente le modifiche per poterle ripristinare. Registra periodicamente la revisione da parte dell'utente delle modifiche apportate passando attraverso la cronologia del controllo di revisione.
Cerca di fare il minimo delle modifiche richieste per rompere le dipendenze che ti impediscono di aggiungere test.
- Scrivere test per quanto possibile coprire la funzionalità del codice che si intende modificare. Effettua il check-in regolarmente e rivedi tutti i cambiamenti.
- Scrivi test per la nuova funzionalità / cambio di funzionalità.
- Implementa la funzionalità (questo è il tuo normale ciclo TDD)
- Assicurati di refactoring le aree che hai coperto dai test (red-green-refactor).
Abbiamo scoperto che più lo facevamo, più facile diventava. Come ogni volta che torni al codice base, è un po 'meglio.
Abbiamo assistito a un massiccio calo del numero di bug che arrivavano ai nostri tester del QA. Con regressioni di funzionalità ormai quasi sconosciute, penso che ne valga la pena.