Strategia di test per una base di codice disordinata

1

A un entry level per una base di codice che non hai familiarità con, come si introducono i test, a quali livelli?

Quando vengono introdotti in codebase senza test e allo stesso tempo vengono aggrovigliati insieme, è difficile misurare dove è meglio mettere l'energia.

Spesso scelgo un angolo più piccolo da cui partire, ma in codebys disordinati quell'angolo diventa sempre più grande più scavando in quell'angolo iniziale. Così all'improvviso ho le mani piene e da un piccolo angolo mi ritrovo a rifactoring molto più di quanto ho deciso di fare. Non è una cattiva idea, ma mi chiedevo se avrei potuto usare un'altra strategia.

Ho anche difficoltà a scrivere test per qualcosa che so che cambierò nel breve periodo, ma è un argomento valido? C'è un punto debole per quando introdurre i test in un codebase disordinato?

Grazie mille!

    
posta frostings 20.09.2017 - 08:35
fonte

1 risposta

9

Sì, non è facile da risolvere. Una proprietà comune dell'architettura disordinata di una palla grande di fango è esattamente che molti moduli ed effetti sono interconnessi in modo tale che è difficile isolare le unità per il test. Il refactoring per rompere le dipendenze e isolare gli effetti collaterali è di per sé un'operazione rischiosa se non si hanno le unittests, quindi si tratta di un problema di pollo-uovo.

In tal caso, concentrati prima sui test di integrazione che testano il sistema nel suo insieme. Solo fingere servizi esterni. Potrebbe essere necessario creare un database di test completo con lo stesso schema del database di produzione e con dati di esempio. (Ricordarsi di scrivere questo script, in modo che il database possa essere ricreato dopo ogni test.) Quindi scrivere test che simulino casi d'uso reali del sistema.

Ci sarà un po 'di lavoro, e probabilmente i test di integrazione saranno lenti da eseguire.

Quando hai coperto una serie significativa di casi d'uso, puoi iniziare il refactoring isolando i servizi esterni, il livello del database e così via. Questo refactoring consentirà di testare gradualmente unità di codice più piccole. Vuoi raggiungere il livello in cui puoi eseguire un nuovo sviluppo in stile TDD, ma potrebbe essere un lungo viaggio per arrivarci.

    
risposta data 20.09.2017 - 08:53
fonte

Leggi altre domande sui tag