9 tipi di test del software nell’ingegneria del software

By Jason Boog

Il testing del software è un’arte. Un tester del software, come un artigiano, deve avere una solida conoscenza degli strumenti per il testing del software a sua disposizione. Abbiamo compilato un elenco di 9 diversi tipi di testing del software e degli strumenti utilizzati da ciascun tipo, per aiutare gli analisti QA e chiunque altro […]

Il testing del software è un'arte. Un tester del software, come un artigiano, deve avere una solida conoscenza degli strumenti per il testing del software a sua disposizione. Abbiamo compilato un elenco di 9 diversi tipi di testing del software e degli strumenti utilizzati da ciascun tipo, per aiutare gli analisti QA e chiunque altro lavori nel campo del testing del software a comprendere meglio la propria professione.

Perché abbiamo bisogno del testing del software?

A volte è importante ricordare perché ciò che si fa è importante. Il semplice fatto è che ogni prodotto software sviluppato finora che ha avuto successo lo ha ottenuto con l'aiuto dei tester del software, che hanno lavorato instancabilmente per garantire che il prodotto raggiungesse gli standard più elevati possibili. Ecco tre motivi per cui il testing del software è importante. 

  1. Soddisfazione del cliente: Durante lo sviluppo di un progetto, è facile perdersi nel labirinto del codice e dimenticare che anche l'utente deve essere soddisfatto del funzionamento del software. Gli analisti QA e gli altri membri del team QA ricoprono questo ruolo. 
  2. Qualità del prodotto: Ogni professione in cui un team o un singolo individuo crea qualcosa da zero richiede un altro team che individui gli errori. Gli scrittori hanno bisogno di editor. Anche i registi cinematografici hanno bisogno di editor. Gli sviluppatori software non hanno bisogno di editor, ma hanno bisogno di un team QA che fornisca un punto di vista obiettivo e individui eventuali errori. 
  3. Sicurezza: Con il passare dei giorni, questo aspetto sembra diventare sempre più importante. I clienti vogliono la tranquillità di sapere che le informazioni inserite nel software e il lavoro svolto al suo interno rimangano privati. Una parte delle attività QA consiste nel garantire che i clienti abbiano questa fiducia. 

Metodologie di testing del software

Ogni tipo di tecnica di testing del software menzionata in questo articolo appartiene a una delle due categorie principali: testing statico e testing dinamico. Prima di esaminare i dettagli specifici delle nove diverse tecniche di testing del software, spiegherò la differenza tra queste due metodologie e in quale punto del ciclo di sviluppo del software entrano in gioco. 

Testing statico

Il testing statico è un tipo di testing del software eseguito nelle prime fasi del ciclo di sviluppo. È un modo conveniente per individuare i bug prima che diventino problemi importanti per il team di sviluppo. I test statici vengono eseguiti nelle prime fasi del ciclo di sviluppo perché possono essere effettuati senza disporre di un software completamente funzionante. Esatto, il software può essere sottoposto a debug prima ancora di essere vicino al completamento. Vedi quanto può essere utile? 

I test statici vengono eseguiti in due modi:

  • Esami manuali: Il codice viene analizzato da un analista QA o da un tester. 
  • Analisi automatica: Uno strumento di testing controlla automaticamente il documento del programma e annota eventuali errori.

Il testing statico è:

La maggior parte dei test statici viene condotta sotto forma di revisioni dei documenti. In questo scenario, un documento è una descrizione scritta di un prodotto (nota come documento di progettazione del software) oppure il codice sorgente del programma. Ecco alcune tecniche di testing statico che ogni analista QA dovrebbe conoscere:

  • Revisione informale:  Non esistono linee guida rigide per la revisione informale. Il team esamina i documenti di test e commenta ciò che osserva. Non viene prodotta alcuna documentazione.
  • Esame dettagliato: L'autore del codice illustra il proprio documento e il team QA pone domande e solleva dubbi. Gli esami dettagliati sono generalmente molto informali e rappresentano un buon modo per discutere gli argomenti con persone esterne al settore del software. 
  • Revisione tecnica: Gli esperti tecnici si riuniscono e revisionano le specifiche tecniche del codice. Eseguire questa attività nelle prime fasi del processo di sviluppo garantisce che il prodotto finale soddisfi le specifiche richieste.
  • Ispezioni: La più formale di tutte le revisioni. Un team di moderatori qualificati ispeziona accuratamente i documenti durante la riunione. Gli eventuali bug individuati vengono formalmente documentati e registrati per la revisione. Viene effettuato un controllo successivo per verificare che i bug documentati siano stati risolti. 

Nella maggior parte dei casi, le revisioni dei test statici sono utili perché l'intero team QA analizzerà il prodotto e proporrà modifiche basate sui problemi rilevati e su quelli previsti. Oltre al vantaggio di coinvolgere nella conversazione un'ampia varietà di opinioni, ciò offre anche il beneficio di aggiornare tutti i membri del team sui progressi e sulla progettazione del progetto. 

Utilizzate i test statici se il vostro team:

  • Si trova nelle prime fasi del processo di sviluppo.
  • Cerca un modo conveniente per individuare i bug.
  • Dispone di un software non ancora pronto per essere eseguito.
  • Vuole rilevare gli errori nelle prime fasi dello sviluppo.
UNISCITI ALLA COMUNITÀ
Arricchisci la tua casella di posta con più saggezza sulla leadership tecnologica per offrire software e sistemi migliori.
Get Free Access

Have an account? Log In

Test dinamici

A differenza dei test statici, i test dinamici sono un tipo di test del software che richiede l'esecuzione del codice. Naturalmente, ciò richiede che lo sviluppo sia più avanzato nel ciclo di produzione. Il vantaggio di testare codice eseguibile è che gli analisti QA possono osservare come si comporta il software durante l'esecuzione in una situazione reale. È un ottimo modo per verificare il comportamento funzionale del software e altri aspetti, come l'utilizzo della CPU. I test dinamici verificano che il risultato atteso corrisponda a quello reale. L'obiettivo principale dei test dinamici è verificare che il prodotto soddisfi i requisiti di progettazione e funzionali definiti prima dell'inizio del progetto.

In genere, quando il software di sistema viene sottoposto a test dinamici, sono previste quattro fasi che gli analisti QA dovrebbero conoscere:

  • Test unitari: quando il software viene sottoposto a test unitari, viene suddiviso nei componenti più piccoli possibili e testato individualmente. Testando in questo modo, gli analisti QA possono essere certi che ogni singola parte del software funzioni come previsto. Inoltre, se viene trovato un bug, sarà più facile correggerlo in questa fase dello sviluppo, perché sarà possibile isolare rapidamente il codice problematico. In genere, quando il team QA avvia i test dinamici (anche se talvolta questa fase viene gestita dal team di sviluppo), inizierà con i test unitari.
  • Test di integrazione: dopo che il software è stato accuratamente suddiviso nei suoi componenti e testato tramite test unitari, verrà assemblato in gruppi e testato nuovamente. Se i test unitari servono a garantire che ogni singola parte funzioni correttamente, i test di integrazione verificano che tali parti comunichino tra loro come previsto. Si può pensare all'assemblaggio di un'automobile. In ogni fase dell'assemblaggio, i componenti dell'auto (il motore, i pedali, il volante) vengono testati singolarmente. Poi l'auto viene assemblata e testata nel suo insieme, per assicurarsi che il pedale dell'acceleratore comunichi correttamente con il motore (e che lo stesso valga per i freni!). Volete garantire un'integrazione perfetta tra i moduli? I nostri strumenti di test del software consigliati possono aiutarvi a raggiungere proprio questo obiettivo.
  • Test di sistema: i test di sistema rappresentano il terzo livello dei test del software. In questa fase viene testato un software completo e pienamente integrato. Lo scopo del test di sistema è assicurarsi che il software soddisfi i requisiti, ovvero che faccia ciò per cui è stato progettato. 
  • Test di accettazione: la fase finale dei test dinamici. Il test di accettazione consiste nel verificare nuovamente la conformità ai requisiti e nell'assicurarsi che il software sia rifinito secondo uno standard accettabile. Viene eseguito per assicurarsi che nessun errore sia sfuggito alle altre fasi di test. In sostanza, è un ulteriore controllo effettuato per motivi di sicurezza. 

Fasi dei test dinamici

  1. Test unitari
  2. Test di integrazione
  3. Test di sistema
  4. Test di accettazione

Suggerimento rapido: test di verifica e test di convalida 

I test di verifica condividono tutte le caratteristiche principali dei test statici. Lo scopo di un test di verifica è verificare tutti i documenti e il codice, e viene raggiunto attraverso gli stessi metodi utilizzati nei test statici

Analogamente, i test di convalida condividono tutte le caratteristiche principali dei test dinamici. Un test di verifica si concentra sulla conferma dell'elevata qualità del software, che è esattamente ciò di cui si occupano i test di sistema e di accettazione.

Ora che abbiamo esaminato alcuni concetti fondamentali relativi ai test del software, analizziamo i 9 tipi di test del software che ogni analista QA dovrebbe conoscere.

9 tipi di test del software che ogni analista QA dovrebbe conoscere:

  1. Scatola nera
  2. Scatola bianca
  3. Scatola grigia 
  4. Automatizzati 
  5. Unitari
  6. Di regressione
  7. Esplorativi
  8. Test funzionali
  9. Test di usabilità

1. Test della scatola nera

Il test della scatola nera è una strategia di test del software in cui il tester non conosce la progettazione del sistema software sottoposto a test.

Ricordi la scena alla fine di Pulp Fiction, quando Samuel Jackson apre la valigetta e il suo volto si illumina? Come pubblico, sappiamo cosa significa e rappresenta la valigetta nel contesto del film, ma non scopriamo mai cosa contiene. Un tester della scatola nera è come uno spettatore: sa cosa dovrebbe fare l'elemento, che si tratti di una valigetta o di un software di sistema, ma non sa di cosa sia composto.

Foto dei test della scatola nera, tipologie di test del software

Un tester incaricato di eseguire il test della scatola nera su un software per il monitoraggio del tempo aprirà il programma senza conoscere la progettazione interna del software e proverà le diverse funzionalità e i menu per assicurarsi che funzionino come previsto. Il motivo per eseguire un test della scatola nera è che, non avendo una conoscenza approfondita della progettazione del software, il tester si approccerà al software con aspettative simili a quelle dell'utente finale. 

Alcuni vantaggi del test della scatola nera sono:

  • I tester non hanno bisogno di una conoscenza approfondita dei linguaggi di programmazione, perché utilizzano il software dalla prospettiva di un utente.
  • Fornisce una valutazione imparziale del software, perché il test viene eseguito dal team QA anziché dagli sviluppatori del software.
  • I tester non devono essere aggiornati sullo sviluppo dei sistemi software, pertanto è necessario pochissimo tempo di preparazione prima di poter eseguire i test.

Articolo correlato: I 10 migliori strumenti per il test della scatola nera

2. Test della scatola bianca

Nel test della scatola bianca, il membro del team QA conosce a fondo la struttura interna e la progettazione del software sottoposto a test. Affronterà il test come un ispettore, assicurandosi che ogni parte del programma funzioni correttamente. Il test della scatola bianca viene talvolta definito test della scatola trasparente, perché il tester osserva le interazioni tra le unità mentre testa il software. A differenza del test della scatola nera, un tester della scatola bianca non è particolarmente interessato all'esperienza dell'utente. 

Alcuni vantaggi del test della scatola bianca sono:

  • I test possono essere eseguiti nelle prime fasi dello sviluppo. L'interfaccia grafica utente (GUI) non deve essere completamente funzionale. 
  • I test sono più approfonditi e metodici rispetto ai test della scatola nera.

Nell'esempio di Pulp Fiction, il tester della scatola bianca è il personaggio interpretato da Tim Roth, che guarda direttamente cosa c'è dentro la valigetta. 

3. Test della scatola grigia

Nel test della scatola grigia, il tester possiede una certa conoscenza della struttura interna e della progettazione del software (scatola bianca), ma esegue comunque il test dalla prospettiva di un utente finale (scatola nera). È così che è nato il test della scatola grigia. Nel test della scatola grigia, la progettazione del test viene sviluppata esaminando la struttura interna del software, mentre il test effettivo viene eseguito utilizzando l'interfaccia utente.

Ancora una volta, se questa fosse la famosa scena di Pulp Fiction, il tester della scatola grigia non sarebbe né il pubblico né Tim Roth. Questa volta, il tester è Quentin Tarantino in persona.  

4. Test automatizzati

I test automatizzati utilizzano software per eseguire attività senza le istruzioni manuali di un tester.

Nel test manuale, il tester scrive il codice che desidera eseguire o pianifica il percorso del software di cui vuole verificare il corretto funzionamento. I test automatizzati si occupano di questi aspetti al posto del tester. Ecco un breve elenco di software e strumenti QA automatizzati che gli analisti QA dovrebbero conoscere:

Per una panoramica più approfondita degli strumenti per i test automatizzati, consulta l'elenco dei migliori strumenti per i test automatizzati che dovresti utilizzare.

5. Test delle unità

Strumenti per i test unitari assicurano che ogni singola parte del software funzioni correttamente. È estremamente importante assicurarsi che i test unitari vengano eseguiti correttamente, altrimenti il team di sviluppo subirà una grave battuta d'arresto quando si renderà conto in seguito che una parte fondamentale del software non funziona. 

6. Test di regressione

Gli strumenti per i test di regressione eseguono i vecchi test sulle nuove build per assicurarsi che il software continui a funzionare come previsto. L'esecuzione dei test di regressione protegge gli sviluppatori dagli effetti latenti, assicurandosi che una modifica al software nel punto A non abbia accidentalmente causato un problema in un punto molto distante, come il punto D. 

Per un analista QA, fare due passi avanti e uno indietro non dovrebbe essere visto come qualcosa di negativo. Facendo ogni tanto un passo indietro, ci si assicura di non essere sul punto di farne cinquanta indietro in seguito.

7. Test esplorativi

Il test esplorativo è il test adatto a chi non ama pianificare. Nella maggior parte delle altre situazioni, il caso di test viene pianificato accuratamente prima di essere eseguito. Non in questo caso. Quando esegue un test esplorativo, il tester esplora il software senza alcun piano predefinito, utilizzando strumenti specializzati per i test esplorativi.

Il vantaggio del test esplorativo è che consente al tester di adattarsi immediatamente alle proprie scoperte, senza dover scrivere un altro caso di test. Il test esplorativo consente inoltre di collaborare, elaborare teorie e prendere decisioni, tutto sul momento.

Con la crescente diffusione della teoria agile dello sviluppo, anche i test esplorativi sono diventati più comuni. Consentendo ai tester QA di affidarsi al proprio intuito, vengono individuati molti bug interessanti che un'esecuzione di test tradizionale potrebbe non aver cercato. 

Attenzione: i test esplorativi possono richiedere una grande dose di creatività. 

More Articles

8. Test funzionali

I test funzionali vengono eseguiti per assicurarsi che il software di sistema soddisfi i requisiti del progetto definiti prima dell'inizio dello sviluppo.

Il tester del software verificherà che i propri input corrispondano all'output previsto. Viene eseguito durante una delle fasi finali dei test, nei test di sistema o di accettazione, ed è esclusivamente una forma di test a scatola nera, poiché non si interessa di come funziona il software, purché funzioni. 

9. Test di usabilità

I tester dell'usabilità si assicurano che le scelte progettuali siano funzionali e al contempo intuitive.

Se prevedi che molti utenti del tuo software vorranno eseguire il backup dei propri documenti ogni mezz'ora, è meglio collocare la funzione di backup in un punto facilmente accessibile invece di nasconderla dietro quattro sottomenu. 

In molti casi è stato sviluppato un software che funziona alla perfezione e soddisfa un'esigenza importante del mercato, ma è completamente impossibile da usare dal punto di vista dell'utente. Questo può essere spiegato dalla mancanza di test di usabilità durante la fase di test del software.

In definitiva, per quanto un software possa essere valido dal punto di vista tecnico, sarà difficile trovare un mercato se agli utenti non piace utilizzarlo.

Vuoi saperne di più?

Il settore dei test del software è in continua evoluzione e gli analisti QA devono rimanere aggiornati sulle tendenze attuali. Esistono infinite risorse sui test del software, tra cui podcast, libri, newsletter e molto altro.

Iscriviti alla newsletter di The CTO Club per ricevere aggiornamenti sui prodotti, recensioni di strumenti e altre raccolte di risorse.

Jason Boog
Over his 15-year career, Jason Boog has worked as a QA tester, QA analyst, and Senior QA Analyst on video games, commercial sites, and interactive web applications. He spent more than a decade building out the QA team and process as Director of Quality & Client Support at a full-service digital agency.
Follow the author:

You may also like