Testare l'intera applicazione o parti di esso? O viceversa? [duplicare]

1

Sto scrivendo un'applicazione per console di piccole dimensioni. Ho avuto cura di essere in grado di testare le parti aziendali importanti di esso in Test unitari.

Ma avendo finito quasi tutto mi sono reso conto che potevo semplicemente testare l'applicazione nel suo complesso. Fondamentalmente, ho potuto testare Main con gli argomenti appropriati in modo che l'applicazione eseguisse "tutte le parti precedentemente testate con test specifici.

Perché dovrei scrivere dei test per le parti più piccole quando posso testare il tutto? Non sarebbe meglio testare sempre "dall'esterno", per così dire? Significato perché l'unica "interfaccia" per l'utente sono gli argomenti e la configurazione, dovrei fare anche solo i test da quell'angolo.

Un esempio per illustrare ciò che intendo è quando si considera un calibro. A questo può essere data una stringa da calcolare.

Internall, userà alcune analisi, calcoli e un output.

Quindi, perché dovrei scrivere test unitari specifici per la parte di calcolo quando posso scrivere un test che chiama semplicemente la calcolatrice con una stringa con ad es. una semplice aggiunta.

In questo modo, non solo avrò testato il calcolo stesso, ma anche l'analisi e posso anche controllare se l'output funziona come previsto.

O pensando al contrario : se ho già scritto test per l'analisi, il calcolo e l'output separatamente, dovrei preoccuparmi anche di scriverne un altro che tenga conto di tutto ciò?

Perché, quando si aggiunge tutto, quando si scrivono piccoli test + test per il tutto, in pratica si duplica ogni test. E quella volta la quantità di test effettivi che devi scrivere. Sembra un po 'una perdita di tempo?

    
posta Florian Peschka 25.08.2017 - 11:23
fonte

1 risposta

6

Why would I write tests for smaller parts when I can test the whole thing? Wouldn't it be better to always test "from the outside" so to say?

Hai scritto la tua app, tutto funziona. Grande.

Ma poi vuoi cambiare. Quindi esegui quei test "prova tutto" e uno di questi test fallisce. Da qualche parte in quella massa di codice, c'è un errore. È ora di estrarre il debugger e cercare di individuare dove si trova il problema.

Se anche tu hai i test unitari, è probabile che tale rottura venga scoperta molto più rapidamente anche in caso di fallimento di uno di essi. Questo ti porta direttamente alla fonte del bug.

If I have already written tests for parsing, calculation, and output separately, should I even bother with writing another one that pulls all of it into account?

Posso parlare di un'esperienza amara su questo. Ho testato la mia app a morte. Quindi l'ho passato al QA, fiducioso che fosse robusto. Lo hanno distrutto! I test unitari ti daranno la certezza che le parti funzionano in modo isolato. Se connessi insieme, tuttavia, possono verificarsi altri problemi. Anche quelle "interazioni unità" richiedono test.

Quindi, in sintesi, i test unitari e end-to-end si completano a vicenda. avere entrambi conduce a un'app molto migliore e nessuno dei due può davvero sostituire l'altro. Continua a scrivere entrambi.

    
risposta data 25.08.2017 - 11:29
fonte

Leggi altre domande sui tag