differences between unit testing
Un confronto dettagliato di unità, integrazione e test funzionali:
Per qualsiasi applicazione software, sia il test unitario che il test di integrazione sono molto importanti poiché ciascuno di essi utilizza un processo unico per testare un'applicazione software.
Ma nessuno o entrambi non possono sostituire i test funzionali in nessun momento.
Cosa imparerai:
- Test unitari vs test di integrazione vs test funzionali
- Che cos'è lo unit test?
- Che cos'è il test di integrazione?
- Test unitari vs test di integrazione
- Test funzionali
- Differenza esatta
- Conclusione
- Lettura consigliata
Test unitari vs test di integrazione vs test funzionali
Test di unità significa testare i singoli moduli di un'applicazione in isolamento (senza alcuna interazione con le dipendenze) per confermare che il codice sta facendo le cose bene.
Test d'integrazione significa controllare se diversi moduli funzionano bene se combinati insieme come un gruppo.
Test funzionali significa testare una parte di funzionalità nel sistema (può interagire con le dipendenze) per confermare che il codice sta facendo le cose giuste.
I test funzionali sono correlati ai test di integrazione, tuttavia, significano i test che controllano la funzionalità dell'intera applicazione con tutto il codice in esecuzione insieme, quasi un super test di integrazione.
Il test unitario considera il controllo di un singolo componente del sistema mentre il test della funzionalità considera il controllo del funzionamento di un'applicazione rispetto alla funzionalità prevista descritta nella specifica dei requisiti di sistema. D'altra parte, il test di integrazione considera il controllo dei moduli integrati nel sistema.
E, cosa più importante, per ottimizzare il ritorno sull'investimento (ROI), la tua base di codice dovrebbe avere il maggior numero possibile di unit test, meno test di integrazione e il minor numero di test funzionali.
Ciò è illustrato meglio nella seguente piramide di test:
Gli unit test sono più facili da scrivere e più veloci da eseguire. Il tempo e gli sforzi per implementare e mantenere i test aumentano dal test unitario al test funzionale, come mostrato nella piramide sopra.
come eseguire un attacco ddos
Esempio:
Cerchiamo di capire questi tre tipi di test con un esempio semplificato.
Per esempio . Per un telefono cellulare funzionale, le parti principali richieste sono 'batteria' e 'scheda SIM'.
Esempio di unit test - La batteria viene controllata per la sua durata, capacità e altri parametri. La carta SIM viene controllata per la sua attivazione.
Esempio di test di integrazione - Batteria e scheda SIM sono integrate, cioè assemblate per avviare il telefono cellulare.
Esempio di test funzionale - La funzionalità di un telefono cellulare viene verificata in termini di caratteristiche e utilizzo della batteria, nonché dei servizi della scheda SIM.
Abbiamo visto un esempio in termini profani.
Ora, prendiamo ora un esempio tecnico di una pagina di accesso:
Quasi tutte le applicazioni web richiedono ai propri utenti / clienti di eseguire il login. Per questo, ogni applicazione deve avere una pagina di 'Login' che abbia questi elementi:
- Account / nome utente
- Parola d'ordine
- Pulsante Accedi / Accedi
Per gli unit test, i seguenti possono essere i casi di test:
- Lunghezza campo: campi nome utente e password.
- I valori del campo di input dovrebbero essere validi.
- Il pulsante di login viene abilitato solo dopo aver inserito valori validi (Formato e longitudinale) in entrambi i campi.
Per il test di integrazione, i seguenti possono essere i casi di test:
- L'utente vede il messaggio di benvenuto dopo aver immesso valori validi e aver premuto il pulsante di accesso.
- L'utente dovrebbe essere indirizzato alla pagina di benvenuto o alla home page dopo aver immesso correttamente e facendo clic sul pulsante Accedi.
Ora, dopo aver completato i test di unità e integrazione, vediamo l'ulteriore casi di test considerati per i test funzionali:
- Viene verificato il comportamento previsto, ovvero l'utente può accedere facendo clic sul pulsante di accesso dopo aver immesso un nome utente e una password validi.
- C'è un messaggio di benvenuto che deve apparire dopo un accesso riuscito?
- C'è un messaggio di errore che dovrebbe apparire su un accesso non valido?
- Sono presenti cookie del sito memorizzati per i campi di login?
- Un utente disattivato può accedere?
- Esiste un link 'password dimenticata' per gli utenti che hanno dimenticato la password?
Ci sono molti più casi simili che vengono in mente a un tester funzionale durante l'esecuzione di test funzionali. Ma uno sviluppatore non può occuparsi di tutti i casi durante la creazione di casi di test di unità e integrazione.
Pertanto, ci sono molti scenari che devono ancora essere testati anche dopo i test di unità e integrazione.
È ora il momento di esaminare uno per uno i test di unità, integrazione e funzionalità.
Che cos'è lo unit test?
Come suggerisce il nome, questo livello implica il test di una 'Unità'.
Qui unità può essere la parte più piccola di un'applicazione che è testabile, sia essa la più piccola funzione individuale, metodo, ecc. Gli sviluppatori di software sono quelli che scrivono i casi di unit test. L'obiettivo qui è quello di soddisfare i requisiti e il comportamento previsto dell'unità.
Di seguito sono riportati alcuni punti importanti sui test unitari e sui suoi vantaggi:
- Il test di unità viene eseguito prima del test di integrazione da parte degli sviluppatori di software che utilizzano tecniche di test white box .
- Il test unitario non controlla solo il comportamento positivo, ovvero l'output corretto in caso di input valido, ma anche i guasti che si verificano con input non valido.
- Trovare problemi / bug in una fase iniziale è molto utile e riduce i costi complessivi del progetto. Poiché i test unitari vengono eseguiti prima dell'integrazione del codice, i problemi rilevati in questa fase possono essere risolti molto facilmente e anche il loro impatto è molto minore.
- Uno unit test verifica piccole parti di codice o singole funzioni in modo che i problemi / errori rilevati in questi casi di test siano indipendenti e non influiscano sugli altri casi di test.
- Un altro importante vantaggio è che i casi di unit test semplificano e semplificano il test del codice. Quindi, diventa più facile risolvere i problemi anche in una fase successiva poiché deve essere testato solo l'ultimo cambiamento nel codice.
- Lo unit test consente di risparmiare tempo e costi ed è riutilizzabile e di facile manutenzione.
JUnit ( Framework Java ), PHPUnit (PHP framework), NUnit (.Net framework) ecc. Sono strumenti di test di unità popolari che vengono utilizzati per diversi linguaggi.
Che cos'è il test di integrazione?
Il test di integrazione sta testando l'integrazione di diverse parti del sistema insieme. Due diverse parti o moduli del sistema vengono prima integrati e quindi viene eseguito il test di integrazione.
Lo scopo del test di integrazione è verificare la funzionalità, l'affidabilità e le prestazioni del sistema quando integrato.
Il test di integrazione viene eseguito sui moduli che vengono prima testati dall'unità, quindi il test di integrazione definisce se la combinazione dei moduli fornisce o meno l'output desiderato.
Il test di integrazione può essere eseguito da tester indipendenti o anche da sviluppatori.
Esistono 3 diversi tipi di approcci al test di integrazione. Parliamo brevemente di ciascuno di essi:
a) Approccio all'integrazione del Big Bang
In questo approccio, tutti i moduli o le unità vengono integrati e testati nel loro insieme contemporaneamente. Questo di solito viene fatto quando l'intero sistema è pronto per il test di integrazione in un unico momento.
Si prega di non confondere questo approccio di test di integrazione con il test di sistema, viene testata solo l'integrazione di moduli o unità e non l'intero sistema come viene fatto nel test di sistema.
L'approccio del big bang è importante vantaggio è che tutto ciò che è integrato viene testato contemporaneamente.
Uno dei principali svantaggio è che diventa difficile identificare i guasti.
Esempio: Nella figura seguente, le unità da 1 a 6 sono integrate e testate utilizzando l'approccio del Big Bang.
b) Approccio dall'alto verso il basso
L'integrazione delle unità / moduli viene testata passo dopo passo dall'alto verso il basso.
La prima unità viene testata individualmente mediante scrittura test STUBS . Successivamente, i livelli inferiori vengono integrati uno per uno fino a quando l'ultimo livello viene assemblato e testato.
L'approccio top-down è un modo molto organico di integrazione poiché è coerente con il modo in cui le cose accadono nell'ambiente reale.
Il solo preoccupazione con questo approccio è che la funzionalità principale viene testata alla fine.
c) Approccio bottom-up
Le unità / moduli vengono testati dal livello inferiore a quello superiore, passo dopo passo, fino a quando tutti i livelli di unità / moduli sono integrati e testati come un'unità. Programmi stimolatori chiamati AUTISTI vengono utilizzati in questo approccio. È più facile rilevare problemi o errori ai livelli inferiori.
Il sindaco svantaggio di questo approccio è che le questioni di livello superiore possono essere identificate solo alla fine quando tutte le unità sono state integrate.
Test unitari vs test di integrazione
Dopo aver discusso a sufficienza su unit test e test di integrazione, esaminiamo rapidamente le differenze tra i due nella tabella seguente:
Test unitario | Test d'integrazione |
---|---|
Effettuato nella fase iniziale di collaudo e poi può essere eseguito in qualsiasi momento | Deve essere eseguito dopo il test dell'unità e prima del test del sistema |
Verifica il singolo componente dell'intero sistema, ovvero verifica un'unità in isolamento. | Verifica la collaborazione tra i componenti del sistema, ovvero verifica la collaborazione di più unità. |
Più veloce da eseguire | Può funzionare lentamente |
Nessuna dipendenza esterna. Qualsiasi dipendenza esterna viene derisa o soppressa. | Richiede l'interazione con dipendenze esterne (ad es.Database, hardware, ecc.) |
Semplice | Complesso |
Condotto dallo sviluppatore | Condotto da tester |
È un tipo di test white box | È un tipo di test della scatola nera |
Manutenzione economica | Manutenzione costosa |
Inizia dalla specifica del modulo | Inizia dalla specifica dell'interfaccia |
Il test unitario ha un ambito ristretto in quanto controlla solo se ogni piccola parte di codice sta facendo quello che è inteso fare. | Ha una portata più ampia in quanto copre l'intera applicazione |
Il risultato del test unitario è la visibilità dettagliata del codice | Il risultato del test di integrazione è la visibilità dettagliata della struttura di integrazione |
Scopri i problemi all'interno della funzionalità solo dei singoli moduli. Non espone errori di integrazione o problemi a livello di sistema. | Scopri i bug che sorgono quando diversi moduli interagiscono tra loro per formare il sistema complessivo |
Test funzionali
PER tecnica di prova della scatola nera , dove la funzionalità dell'applicazione viene testata per generare l'output desiderato fornendo un determinato input è chiamato 'Test funzionale'.
Nel nostro processi di test del software , lo facciamo scrivendo casi di test secondo i requisiti e gli scenari. Per qualsiasi funzionalità, il numero di casi di test scritti può variare da uno a molti.
I casi di test comprendono fondamentalmente le seguenti parti:
- Riepilogo del test
- Prerequisiti (se presenti)
- Passaggi di input dello scenario di test
- Dati di test (se presenti)
- Uscita prevista
- Note (se presenti)
'Basato sui requisiti' e 'Basato sullo scenario aziendale' sono le due forme di test funzionale che vengono svolte.
In Test basati sui requisiti, i casi di test vengono creati secondo il requisito e testati di conseguenza. In un test funzionale basato su scenari aziendali, il test viene eseguito tenendo presente tutti gli scenari da una prospettiva aziendale.
Tuttavia, il maggiore svantaggio del testing funzionale è la probabile ridondanza nel testing e la possibilità di perdere alcuni errori logici.
Differenza esatta
Diamo un'occhiata alle loro differenze.
Ecco alcuni dei principali:
Test di unità | Test d'integrazione | Test funzionali | |
---|---|---|---|
Definizione e scopo | Testare singolarmente unità o moduli più piccoli. | Verifica dell'integrazione di due o più unità / moduli combinati per l'esecuzione di attività. | Testare il comportamento dell'applicazione secondo il requisito. |
Complessità | Per niente complesso in quanto include i codici più piccoli. | Leggermente più complesso degli unit test. | Più complesso rispetto ai test unitari e di integrazione. |
Tecniche di prova | Tecnica di prova della scatola bianca. | Tecnica di prova scatola bianca e scatola nera. Test della scatola grigia | Tecnica di prova della scatola nera. |
Maggiore attenzione | Moduli o unità individuali. | Integrazione di moduli o unità. | Funzionalità dell'intera applicazione. |
Errore / problemi coperti | Gli unit test rilevano problemi che possono verificarsi frequentemente nei moduli. | I test di integrazione rilevano problemi che possono verificarsi durante l'integrazione di diversi moduli. | I test funzionali rilevano problemi che non consentono a un'applicazione di eseguire la sua funzionalità. Ciò include anche alcuni problemi basati su scenari. |
Emissione di fuga | Nessuna possibilità di fuga dal problema. | Meno possibilità di fuga dal problema. | Più possibilità di problema sfuggono poiché l'elenco dei test da eseguire è sempre infinito. |
Leggi anche => Che cos'è il test delle funzionalità
cos'è il controllo di qualità e la garanzia di qualità
Conclusione
Tutti questi tre tipi di test sono correlati.
Per ottenere una copertura completa, è necessario disporre di test unitari per i percorsi / linee di codice, test funzionali e di integrazione per garantire che le 'unità' lavorino insieme in modo coerente.
Spero che questo articolo ti abbia dato un'idea chiara dei test di unità, integrazione e funzionalità insieme alle loro differenze, sebbene ci siano molto di più in queste forme di test !!
Lettura consigliata
- Migliori strumenti di test del software 2021 (Strumenti di automazione del test QA)
- Spock per integrazione e test funzionali con selenio
- Test funzionale vs test non funzionale
- Download dell'eBook Testing Primer
- I 10 migliori strumenti di test di integrazione per scrivere test di integrazione
- Differenze chiave tra il test della scatola nera e il test della scatola bianca
- Guida completa al test funzionale con i suoi tipi ed esempi
- Test funzionale vs test delle prestazioni: dovrebbe essere fatto contemporaneamente?