Come confrontare il tempo di costruzione e il tempo di test unitario?

0

Questo dipende in larga misura dal tipo di progetto (ad esempio software scientifico vs sistema bancario vs gioco)? In tal caso, in quali aree è la differenza più alta e più bassa? Nella tua esperienza, è sicuro affermare che, di norma, il tempo necessario per eseguire i test unitari è almeno di un ordine di grandezza superiore a quello di creazione del software, in primo luogo?

    
posta suszterpatt 23.07.2011 - 20:06
fonte

3 risposte

1

Non sul tipo di progetto, ma piuttosto sui problemi relativi al progetto.

Se stai sviluppando un software che verrà utilizzato per controllare una centrale nucleare, è probabile che dovrai eseguire test approfonditi, revisione del codice, ecc. Per progetti in cui sono coinvolte enormi quantità di denaro e di persone , non è insolito passare giorni su una singola riga di codice, decidere se deve essere scritto, e se sì, come, aggiungere test, ecc. Ciò significa anche che si avrà un sacco di codice di test, che sarà lento a eseguire rispetto al tempo di compilazione di un codebase piuttosto piccolo.

Se invece stai scrivendo un pezzo di codice che utilizzerai per il tuo sito web personale che viene visitato al meglio da alcuni membri della tua famiglia o da alcuni amici, è probabile che passerai tutto il tuo tempo a sviluppare nuove funzionalità, senza alcun test, quindi il tempo speso nell'esecuzione dei test unitari sarà sempre pari a zero.

Detto questo, non capisco perché confronti il tempo impiegato nell'esecuzione dei test con il tempo impiegato per compilare il codebase. Questi sono due processi molto diversi che non hanno nulla in comune. Supponi di voler testare una semplice app Hello World che deve attendere dieci secondi, quindi visualizzare "Hello World". Probabilmente i test dureranno circa venti secondi, forse molto di più, mentre il tempo di compilazione sarà di alcuni millisecondi.

    
risposta data 23.07.2011 - 20:17
fonte
1

In your experience, is it safe to say that as a rule, the time it takes to run unit tests is at least one order of magnitude larger than that of building the software in the first place?

No. Dipende da troppe cose, come quanti test ci sono, quanto setup hanno bisogno, che lingua è usata (C ++ è notoriamente lento da compilare, ma veloce da eseguire), quanto è efficiente il compilatore, ecc.

Inoltre, quale conclusione significativa potrebbe essere tratta da questo rapporto?

    
risposta data 23.07.2011 - 20:45
fonte
0

Stiamo creando un motore di gioco e i nostri test unitari impiegano circa lo stesso tempo per eseguire il processo di compilazione del motore. Ma:

  • alcuni dei nostri test dovrebbero richiedere un po 'di tempo, ad es. test del timer
  • alcuni dei nostri test mostrano visualizzazioni (beh, devi testare la grafica) e non sono automatizzati (non può essere, perché non possiamo controllare se sembra giusto automaticamente) e hanno bisogno del programmatore per valutare il test, che richiede tempo
  • Inoltre, abbiamo 20 test, e il loro tempo di collegamento è abbastanza alto (circa 1-2 secondi ciascuno, quindi trascorri mezzo minuto semplicemente collegando il test) che non fa parte della build del motore

La maggior parte di questo non si applica alla maggior parte delle applicazioni, immagino. Quindi sì, penso che il rapporto che hai citato dipenda dal tipo di applicazione (non esclusivamente, ma dipende).

    
risposta data 23.07.2011 - 22:02
fonte

Leggi altre domande sui tag