Il collaudo del software è un'arte. Un tester software, proprio come un artigiano, deve avere una solida conoscenza degli strumenti per il collaudo del software a sua disposizione. Abbiamo raccolto un elenco di 9 diversi tipi di test del software e degli strumenti utilizzati per ciascun tipo, per aiutare i QA analyst e chiunque lavori nella professione del testing software a comprendere meglio il proprio mestiere.
Perché Abbiamo Bisogno del Collaudo del Software?
A volte è importante ricordare perché ciò che stiamo facendo ha valore. Il semplice fatto è che ogni software che ha avuto successo lo ha fatto grazie al lavoro dei tester software, che si sono impegnati instancabilmente per garantire che il prodotto fosse di uno standard il più alto possibile. Ecco tre motivi per cui il collaudo software è importante.
- Soddisfazione del cliente: Durante lo sviluppo di un progetto, può essere facile perdersi tra le righe di codice e dimenticare che anche l'utente deve essere soddisfatto di come funziona il software. I QA analyst e gli altri membri QA ricoprono proprio questo ruolo.
- Qualità del prodotto: Ogni professione in cui un team o un individuo crea qualcosa da zero necessita di un altro team per rilevare eventuali errori. Gli scrittori hanno bisogno degli editor. Anche i registi di film hanno bisogno degli editor. Gli sviluppatori software non hanno bisogno di editor, ma necessitano del team QA per avere un punto di vista oggettivo e rilevare eventuali errori.
- Sicurezza: Con il passare del tempo, questo punto sembra diventare sempre più importante. I clienti vogliono la tranquillità di sapere che le informazioni inserite nel software e il lavoro svolto rimangano privati. Parte del lavoro QA è assicurarsi che i clienti possano fidarsi.
Metodologie di Collaudo del Software
Ogni tipo di tecnica di collaudo software menzionata in questo articolo appartiene a una delle due principali categorie: testing statico e testing dinamico. Prima di esplorare i dettagli delle nove diverse tecniche di testing software, spiegherò la differenza tra queste due metodologie e dove intervengono nel ciclo di sviluppo del software.
Testing Statico
Il testing statico è un tipo di collaudo software che viene eseguito nelle prime fasi del ciclo di sviluppo. È un modo conveniente per trovare bug prima che diventino grandi grattacapi per il team di sviluppo. I test statici vengono eseguiti all’inizio dello sviluppo perché possono essere fatti senza avere il software pienamente funzionante. Esatto, il software può essere debugato anche prima di essere vicino al completamento. Capisci quanto possa essere utile?
I test statici vengono effettuati in due modi:
- Esami manuali: il codice viene analizzato da un QA analyst o da un tester.
- Analisi automatica: uno strumento di testing controlla automaticamente il documento del programma e segnala eventuali errori.
Il Testing Statico è:
- Eseguito senza eseguire codice.
- Conveniente.
- Utile per garantire che il software soddisfi le specifiche di verifica.
- Un modo per determinare la causa principale dei bug.
Molti test statici vengono eseguiti sotto forma di revisioni documentali. In questo caso, un documento può essere una descrizione scritta di un prodotto (nota come documento di progettazione software) oppure il codice sorgente del programma. Ecco alcune tecniche di test statici che ogni QA analyst dovrebbe conoscere:
- Revisione informale: non ci sono linee guida rigide nella revisione informale. Il team esamina i documenti di test e commenta ciò che vede. Non viene prodotta documentazione.
- Walkthrough: l'autore del codice presenta il proprio documento e il team QA solleva domande e osservazioni. I walkthrough sono solitamente molto informali e sono un buon modo per discutere argomenti con persone esterne al settore software.
- Revisione tecnica: gli esperti tecnici si incontrano per verificare le specifiche tecniche del codice. Eseguire questa revisione nelle prime fasi di sviluppo garantisce che il prodotto finale soddisfi i requisiti necessari.
- Ispezioni: la più formale di tutte le revisioni. Un team di moderatori esperti analizza a fondo i documenti durante un meeting. Ogni bug rilevato viene formalmente documentato e registrato per la revisione. È previsto un follow-up per verificare che i bug documentati siano stati risolti.
Nella maggior parte dei casi, le revisioni statiche dei test sono utili perché l’intero team di QA analizzerà il prodotto e proporrà modifiche in base ai problemi riscontrati e alle problematiche previste. Oltre al vantaggio di coinvolgere una varietà di voci nella conversazione, questo ha il beneficio aggiuntivo di permettere a tutti i membri del team di aggiornarsi sullo stato di avanzamento e sul design del progetto.
Usa i test statici se il tuo team:
- Si trova nelle prime fasi del processo di sviluppo.
- Cerca un modo economico per individuare bug.
- Ha un software che non è ancora pronto per essere eseguito.
- Vuole individuare errori nelle prime fasi dello sviluppo.
Test Dinamico
A differenza del testing statico, il testing dinamico è un tipo di test del software che richiede l’esecuzione del codice. Naturalmente, ciò implica che lo sviluppo sia già a uno stadio più avanzato nel ciclo di produzione. Il vantaggio di testare codice eseguibile è che gli analisti QA possono osservare come il software si comporta durante il funzionamento in una situazione reale. È un ottimo modo per verificare il comportamento funzionale del software e altri aspetti come l’utilizzo della CPU. Il testing dinamico controlla che il risultato atteso corrisponda a quello reale. Il principale obiettivo del testing dinamico è verificare che il prodotto soddisfi le esigenze progettuali e funzionali definite prima dell’inizio del progetto.
In genere, quando il sistema software viene testato dinamicamente ci sono quattro passaggi che gli analisti QA dovrebbero conoscere:
- Test di Unità: Quando si eseguono i test di unità, il software viene suddiviso nei componenti più piccoli possibili e testato individualmente. Testando in questo modo, gli analisti QA hanno la certezza che ogni singola parte del software funzioni come previsto. Inoltre, se viene riscontrato un bug, sarà più facile risolverlo in questa fase dello sviluppo, dove il codice problematico può essere isolato rapidamente. Di solito, quando il team QA inizia i test dinamici (anche se a volte questa fase viene gestita dal team di sviluppo) si parte dai test di unità.
- Test di Integrazione: Dopo che il software è stato scomposto e testato per unità, viene riassemblato in gruppi e testato nuovamente. Se i test di unità servivano a garantire il corretto funzionamento di ogni parte singola, i test di integrazione assicurano che queste parti funzionino insieme come dovrebbero. Pensalo come il montaggio di un’auto: in ogni fase, le parti (il motore, i pedali, il volante) vengono testate individualmente. Poi l’auto viene assemblata e testata nel suo insieme, per verificare che l’acceleratore comunichi correttamente con il motore (e che anche i freni lo facciano!). Vuoi assicurarti un’integrazione senza soluzione di continuità tra i moduli? I nostri strumenti di test software consigliati possono aiutarti a raggiungere questo obiettivo.
- Test di Sistema: Il test di sistema è il terzo livello del testing del software. In questa fase viene testato un software completo e perfettamente integrato. Lo scopo del test di sistema è garantire che il software soddisfi i requisiti, cioè, che faccia ciò per cui è stato progettato.
- Test di Accettazione: L’ultima fase del testing dinamico. Il test di accettazione consiste ancora una volta nel verificare rispetto ai requisiti stabiliti, per assicurarsi che il software sia raffinato a uno standard accettabile. Serve a garantire che nessun errore sia sfuggito alle fasi precedenti di test. In sostanza, è un controllo di sicurezza aggiuntivo.
Fasi del Testing Dinamico
- Test di Unità
- Test di Integrazione
- Test di Sistema
- Test di Accettazione
Consiglio rapido: Testing di Verifica vs Testing di Validazione
Il testing di verifica condivide tutte le caratteristiche chiave del testing statico. Lo scopo di un test di verifica è verificare tutti i documenti e il codice, ed è ottenuto tramite gli stessi metodi utilizzati nel testing statico.
Allo stesso modo, il testing di validazione condivide tutte le caratteristiche fondamentali del testing dinamico. Un test di validazione si concentra sulla conferma della qualità del software, esattamente come fanno i test di sistema e di accettazione.
Ora che abbiamo trattato alcuni concetti chiave riguardanti il testing del software, esploriamo i 9 tipi di test che ogni analista QA dovrebbe conoscere.
9 Tipi di Testing del Software che Ogni Analista QA Dovrebbe Conoscere:
- Black Box
- White Box
- Grey Box
- Automatizzato
- Unità
- Regression
- Esplorativo
- Test Funzionale
- Test di Usabilità
1. Test di Black Box
Il test di black box è una strategia di test del software in cui il design del sistema software testato è sconosciuto al tester.
Ricordi quella scena alla fine di Pulp Fiction, in cui Samuel Jackson apre la valigetta e il suo volto si illumina? Come spettatori, sappiamo cosa significa e rappresenta la valigetta nel contesto del film, ma non scopriremo mai cosa c'è dentro. Un tester black box è come lo spettatore: sa cosa dovrebbe fare un oggetto (sia esso una valigetta o un software di sistema), ma non di cosa è fatto.

Un tester incaricato del test black box di un software di monitoraggio del tempo aprirà il programma senza conoscere il design interno del software e proverà le varie funzionalità e i menu per assicurarsi che funzionino come previsto. Il motivo del test black box è che, senza avere una conoscenza approfondita della progettazione del software, il tester si avvicinerà al prodotto con aspettative simili a quelle dell'utente finale.
Alcuni vantaggi dei test black box sono:
- I tester non devono avere molta conoscenza dei linguaggi di programmazione perché utilizzano il software dal punto di vista di un utente.
- Offre una revisione imparziale del software poiché il test viene eseguito dal team QA invece che dagli sviluppatori del software.
- I tester non devono essere aggiornati sullo sviluppo dei sistemi software, il che significa che c'è pochissimo tempo di preparazione prima di iniziare i test.
Lettura correlata: I 10 migliori strumenti per il test black box
2. Test di White Box
Nel test di white box il membro del QA comprenderà appieno la struttura interna e il design del software sottoposto a verifica. Affronterà il test come un ispettore, assicurandosi che ogni parte del programma funzioni correttamente. Il test di white box viene talvolta chiamato "test clear box" perché il tester osserva le interazioni tra le unità mentre verifica il software. Diversamente dal test black box, il tester white box non è altrettanto interessato all’esperienza dell’utente finale.
Alcuni vantaggi del test white box sono:
- I test possono essere eseguiti nelle fasi iniziali dello sviluppo. L'interfaccia grafica (GUI) non deve essere necessariamente completamente funzionante.
- I test sono più accurati e deliberati rispetto a quelli black box.
Nell'esempio di Pulp Fiction, il tester white box è il personaggio di Tim Roth, che guarda direttamente cosa c’è nella valigetta.

3. Test di Grey Box
Nei test di grey box il tester possiede alcune conoscenze sulla struttura interna e sul design del software (white box), ma effettua comunque la verifica dal punto di vista di un utente finale (black box). Così è nato il test di grey box. Nei test di grey box, il design del test viene sviluppato osservando la struttura interna del software, ma l’esecuzione vera e propria viene svolta tramite l’interfaccia utente.
Ancora una volta, se fosse la famosa scena di Pulp Fiction, il tester grey box non sarebbe né lo spettatore né Tim Roth. Questa volta il tester è proprio Quentin Tarantino.
4. Test Automatizzati
I test automatizzati utilizzano software per svolgere compiti senza istruzioni manuali da parte di un tester.
Nei test manuali, il tester scrive il codice che desidera eseguire oppure pianifica il percorso del software da verificare. I test automatizzati svolgono queste attività al posto del tester. Ecco un elenco rapido di software e strumenti QA automatizzati che un analista QA dovrebbe conoscere:
Per una panoramica più approfondita degli strumenti di test automatizzati, consulta l'elenco dei migliori strumenti di test automatizzati che dovresti utilizzare.
5. Test di Unit
Gli strumenti per il test di unità assicurano che ogni singola parte del software funzioni correttamente. È estremamente importante che i test di unit siano svolti correttamente, altrimenti il team di sviluppo potrebbe subire grandi ritardi quando si renderà conto, in seguito, che una parte fondamentale del software non funziona.
6. Test di Regressione
Gli strumenti per il test di regressione eseguono vecchi test su nuove build per assicurarsi che il software continui a funzionare come previsto. Eseguire test di regressione protegge gli sviluppatori da effetti latenti assicurando che una modifica al software nel punto A non abbia accidentalmente rotto qualcosa molto lontano, al punto D.
Per un analista QA, fare due passi avanti e uno indietro non dovrebbe essere visto come un aspetto negativo. Fare ogni tanto un passo indietro ti permette di assicurarti di non doverne fare cinquanta indietro in futuro.
7. Test Esplorativo
Il test esplorativo è il metodo di test per chi non ama pianificare. Nella maggior parte degli altri casi, il caso di test sarà accuratamente pianificato prima dell'esecuzione. Non qui. Quando un tester esegue un test esplorativo, sta esplorando il software senza un piano prestabilito, utilizzando strumenti specializzati per il test esplorativo.
Il vantaggio del test esplorativo è che permette al tester di adattarsi alle proprie scoperte in tempo reale, senza la necessità di scrivere un altro caso di test. Il test esplorativo consente anche collaborazione, ipotesi e lavoro di gruppo direttamente "al volo".
Con la crescente diffusione della teoria agile dello sviluppo, anche i test esplorativi sono diventati più rilevanti. Lasciando che i tester QA usino il proprio intuito, si trovano molti bug interessanti che una normale esecuzione di test potrebbe non rilevare.
Attenzione: il test esplorativo può richiedere molta creatività.

8. Test Funzionale
Il test funzionale viene eseguito per assicurarsi che il software di sistema sia conforme ai requisiti del progetto definiti prima dell'inizio dello sviluppo.
Il tester verifica che i suoi input producano l'output atteso. Viene eseguito durante una delle ultime fasi di test, sia durante il test di sistema sia durante il test di accettazione, ed è esclusivamente una forma di black box testing, perché non ci si preoccupa di come funziona il software, basta che funzioni.
9. Test di Usabilità
I tester di usabilità assicurano che le scelte di design siano funzionali ma intuitive.
Se prevedi che molti utenti del tuo software vorranno fare il backup dei propri documenti ogni mezz’ora, è meglio avere la funzione di backup in un punto facilmente accessibile invece che nascosta dietro quattro sotto-menu.
In molte occasioni, è stato sviluppato un software che funziona perfettamente e soddisfa un bisogno importante del mercato, ma è completamente impossibile da navigare dal punto di vista dell'utente. Questo può essere spiegato da una mancanza di test di usabilità durante la fase di test del software.
Alla fine della giornata, non importa quanto sia tecnicamente valido un software: sarà difficile trovare utenti se non è piacevole da usare.
Vuoi Saperne di Più?
Il settore del software testing è sempre in evoluzione e gli analisti QA devono rimanere aggiornati sulle tendenze attuali. Esistono risorse infinite sul software testing, inclusi podcast, libri e molto altro.
Iscriviti alla newsletter di The CTO Club per aggiornamenti sui prodotti, recensioni di strumenti e altre raccolte di risorse.
