La garanzia della qualità sta diventando sempre più popolare. Gli esperti stimano che i posti di lavoro nel settore dei test negli Stati Uniti aumenteranno del 25% nel prossimo decennio. Se questo argomento ti interessa, potresti chiederti da dove iniziare per imparare a conoscere i test del software.
In questo articolo risponderò ad alcune domande per aiutarti a iniziare con i test del software. Esaminerò cosa sono i test del software, i concetti di test più importanti e alcuni strumenti per i test del software da prendere in considerazione.
Spiegazione dei test del software
Il processo costituito da tutte le attività del ciclo di vita, sia statiche che dinamiche, relative alla pianificazione, alla preparazione e alla valutazione di un componente o di un sistema e dei relativi prodotti di lavoro, per determinare che soddisfino i requisiti specificati, dimostrare che siano idonei allo scopo e rilevare i difetti.
Glossario dell’ISTQB
I test del software svolgono un ruolo importante nel processo di sviluppo del software, poiché convalidano che l’applicazione software funzioni come previsto e soddisfi i requisiti e le aspettative degli utenti finali.
L’obiettivo è identificare difetti, errori e incoerenze nell’applicazione software prima che venga distribuita al pubblico. I test prevedono l’esecuzione del software in condizioni, configurazioni e scenari diversi, per garantire che funzioni correttamente ed efficientemente.
Se ti interessa sapere come iniziare una carriera nel settore dei test del software, ecco un elenco di domande comuni nei colloqui sulla garanzia della qualità (e relative risposte!).
Ciclo di vita dei test del software
Il ciclo di vita dei test del software (STLC) è il processo seguito dai collaudatori del software per garantire che l’applicazione sottoposta a test soddisfi gli standard e i requisiti di qualità specificati. L’STLC consiste generalmente in diverse fasi progettate per garantire che l’applicazione software venga sottoposta a test approfonditi e raggiunga il livello di qualità desiderato prima di essere distribuita agli utenti finali. Di seguito sono riportate le fasi del ciclo di vita dei test del software:

Analisi dei requisiti
In questa fase, i collaudatori del software analizzano i requisiti e le specifiche. Identificano i requisiti funzionali e non funzionali, comprendono lo scopo dell’applicazione software e il pubblico di riferimento, quindi sviluppano casi di test e scenari di conseguenza.
Pianificazione dei test
In questa fase, il team di collaudo identifica l’ambito dei test, l’approccio di collaudo e le risorse necessarie per i test. Il piano di test identifica inoltre i rischi e i vincoli associati al processo di collaudo e definisce le tempistiche dei test.
Progettazione dei test
In questa fase, il team di collaudo progetta i casi di test e gli scenari sulla base dei requisiti e delle specifiche. Identifica inoltre i dati di test necessari e sviluppa script di test che automatizzano il processo di collaudo.
Esecuzione dei test
I collaudatori eseguono i casi di test e gli scenari progettati nella fase precedente. I risultati dei test vengono documentati e vengono segnalati eventuali difetti o errori riscontrati nell’applicazione software.
Relazione sui test
In questa fase, il team di collaudo prepara una relazione con i risultati dei test e i difetti identificati durante il collaudo. La relazione può includere raccomandazioni per correggere i difetti e migliorare la qualità complessiva dell’applicazione software.
Chiusura dei test
È l’ultima fase, durante la quale il team di collaudo valuta il processo di collaudo e identifica le aree di miglioramento. Prepara inoltre una relazione di chiusura dei test che riassume il processo di collaudo e i risultati ottenuti.
Il ciclo di vita dei test del software è un processo continuo che richiede la collaborazione tra il team di collaudo e il team di sviluppo, per garantire che l’applicazione software raggiunga il livello desiderato di qualità e funzionalità.
Tipi di test del software
Esistono diversi tipi di test del software utilizzati dai team QA, a seconda del contesto e dei requisiti del progetto.
Possiamo distinguere tra test manuali e test automatizzati, a seconda di come vengono eseguiti i test. In base a ciò che viene testato, possiamo distinguere tra test funzionali e non funzionali. A seconda dei metodi utilizzati, abbiamo test statici e dinamici. In base all'approccio, possiamo individuare i test a scatola bianca e a scatola nera. Abbiamo inoltre test esplorativi, test di fumo e di integrità e test di regressione. Tutti questi tipi di test possono sovrapporsi tra loro, a seconda di come vengono utilizzati.
Test manuali
Nei test manuali, l'esecuzione dei test viene effettuata da una persona, senza utilizzare strumenti o script automatizzati. Può essere più soggetta a errori e richiede solitamente più tempo.
Test automatizzati
I test automatizzati vengono eseguiti da una macchina che esegue script scritti in anticipo. Richiedono una maggiore competenza tecnica, ad esempio la conoscenza di un linguaggio di programmazione e di strumenti di automazione come Selenium. Possono essere più costosi dei test manuali e alcuni aspetti del processo di testing non possono essere automatizzati.
Test funzionali
I test funzionali consistono nel verificare cosa fa l'applicazione. I test funzionali controllano le funzionalità e le capacità dell'applicazione software e garantiscono che soddisfino i requisiti e le specifiche.
Test non funzionali
A differenza dei test funzionali, i test non funzionali si concentrano su come si comporta l'applicazione. Esistono diversi sottotipi di test non funzionali, a seconda dell'obiettivo principale dei test. In questo articolo ne tratterò solo alcuni.
Test delle prestazioni: misura il tempo di risposta, la velocità di elaborazione e la scalabilità dell'applicazione software in diverse condizioni di carico. Verifica la capacità dell'applicazione software di gestire contemporaneamente più utenti e transazioni e garantisce che funzioni in modo efficiente in condizioni di carico massimo.
Test di carico: simula i carichi degli utenti nel mondo reale e viene eseguito per determinare il comportamento di un sistema in condizioni normali e di picco. Viene utilizzato per identificare se l'infrastruttura usata per ospitare l'applicazione è sufficiente e indica quanti utenti simultanei l'applicazione può gestire e quale sia la scala dell'applicazione necessaria in termini di hardware, capacità di rete, ecc., affinché più utenti possano accedere all'applicazione.
Test di stress: consiste nell'eseguire test oltre la capacità normale, spesso fino al punto di rottura, per osservare i risultati. L'obiettivo è garantire che il software non si arresti in modo anomalo in condizioni di risorse di calcolo insufficienti (come memoria, spazio su disco, richieste di rete, ecc.).
Test di sicurezza: garantisce che l'applicazione software sia sicura e protetta dagli accessi non autorizzati. I test di sicurezza verificano la presenza di vulnerabilità e punti deboli nei protocolli di sicurezza dell'applicazione software e identificano eventuali potenziali minacce alla sicurezza.
Test di usabilità: vengono utilizzati per valutare se l'applicazione è intuitiva. Verificano quanto sia facile per gli utenti navigare nell'applicazione software ed eseguire in modo efficiente le funzioni previste.
Test di accessibilità: considerati un sottoinsieme dei test di usabilità, i test di accessibilità vengono eseguiti per garantire che l'applicazione sottoposta a test sia utilizzabile da persone con disabilità.
Test di localizzazione: tipo di test del software in cui il comportamento del software viene testato per una regione, un'impostazione locale o una cultura specifica. Alcuni attributi da considerare durante i test di localizzazione sono: testo tradotto correttamente, valuta, unità di misura, caratteri speciali consentiti e formati dei numeri di telefono
Test di compatibilità: verificano se l'applicazione è sufficientemente adatta per funzionare su browser, database, hardware, sistemi operativi, dispositivi mobili e reti diversi
Test statici e test dinamici
I test statici si basano sull'esame manuale dei prodotti di lavoro (ovvero le revisioni) o sulla valutazione del codice guidata da strumenti (si pensi alle revisioni del codice) o di altri prodotti di lavoro (ovvero l'analisi statica). Possono essere eseguiti su, a titolo esemplificativo ma non esaustivo, specifiche, requisiti aziendali, criteri di accettazione, codice sorgente, piani di test, casi di test, script di test e guide per l'utente.
I test dinamici consistono nell'esecuzione effettiva del software sottoposto a test. Possono essere manuali o automatizzati, oppure
Test a scatola bianca e test a scatola nera
Il collaudo a scatola bianca è un tipo di collaudo in cui il collaudatore conosce la struttura interna del codice dell'applicazione, mentre il collaudo a scatola nera viene eseguito senza alcuna necessità di comprendere il codice sorgente. Ciascuno di questi tipi di collaudo applica tecniche di collaudo diverse, come il partizionamento per equivalenza, l'analisi dei valori limite e la tabella decisionale per il collaudo a scatola nera, nonché la copertura delle istruzioni e la copertura delle decisioni per il collaudo a scatola bianca.
Collaudo esplorativo
Il collaudo esplorativo è un tipo di collaudo basato sull'esperienza. Prevede una pianificazione minima e un'esecuzione massima dei collaudi.
Le attività di progettazione ed esecuzione dei collaudi vengono svolte in parallelo, generalmente senza documentare formalmente le condizioni di collaudo, i casi di collaudo o gli script di collaudo.
È un approccio utile quando non esistono specifiche o quando queste sono inadeguate e il tempo è fortemente limitato; inoltre, funziona molto bene come complemento al collaudo automatizzato.
Collaudo di fumo
Il collaudo di fumo, talvolta chiamato “Collaudo di verifica della build” o “Collaudo di affidabilità”, è un processo di collaudo del software in cui i collaudatori verificano se la versione distribuita è stabile. Il collaudo di fumo è una convalida del fatto che si possa procedere con ulteriori collaudi del software. Consiste in un numero minimo di prove eseguite a ogni versione per verificare le funzionalità software critiche.
Collaudo di integrità
Il collaudo di integrità è un tipo di collaudo del software eseguito dopo la consegna di una versione del software con modifiche minori al codice o alle funzionalità, per confermare che gli errori siano stati risolti e che non siano stati introdotti nuovi problemi a causa di tali modifiche. L'obiettivo è confermare che la funzionalità proposta funzioni approssimativamente come previsto.
Collaudo di regressione
Il collaudo di regressione è un tipo di collaudo del software in cui si ripetono i collaudi sulle funzionalità esistenti per verificare che continuino a funzionare correttamente dopo eventuali modifiche o aggiornamenti all'applicazione software. Il collaudo di regressione garantisce che le nuove modifiche o gli aggiornamenti non abbiano influito sulle funzionalità esistenti dell'applicazione software.
Collaudo di compatibilità
Il collaudo di compatibilità viene utilizzato per garantire che l'applicazione software funzioni correttamente su piattaforme, dispositivi e browser diversi. Verifica che l'applicazione software sia compatibile con varie configurazioni hardware e software

Livelli di collaudo
Il collaudo del software può essere classificato in diversi livelli in base all'ambito e agli obiettivi del collaudo. Di seguito sono riportati i livelli comuni del collaudo del software:
Collaudo unitario
Il collaudo unitario è il primo livello di collaudo e si concentra sulla verifica di singoli componenti o unità di codice in isolamento. Il collaudo unitario verifica che ogni unità di codice funzioni come previsto e soddisfi i requisiti specificati.
Collaudo di integrazione
Il collaudo di integrazione si concentra sulla verifica delle interazioni tra diversi moduli o componenti dell'applicazione software. Il collaudo di integrazione verifica che i moduli o i componenti funzionino insieme come previsto e soddisfino i requisiti specificati.
Collaudo di sistema
Il collaudo di sistema è il livello di collaudo in cui l'intera applicazione software viene verificata come sistema completo. Il collaudo di sistema verifica che l'applicazione software soddisfi i requisiti specificati e funzioni come previsto in vari scenari.
Collaudo di accettazione da parte dell'utente
Il collaudo di accettazione è il livello di collaudo in cui l'applicazione software viene verificata dal punto di vista dell'utente finale. Il collaudo di accettazione verifica che l'applicazione software soddisfi le esigenze e i requisiti dell'utente finale e funzioni come previsto nell'ambiente dell'utente. I tipi comuni di collaudo di accettazione da parte dell'utente sono il collaudo alfa e il collaudo beta.
Ogni livello di collaudo è importante e svolge uno scopo specifico nel processo di collaudo del software. Il collaudo dovrebbe essere eseguito a ogni livello per garantire che l'applicazione software raggiunga il livello desiderato di qualità e funzionalità e funzioni come previsto in vari scenari.
Principi del collaudo del software
Esistono sette principi fondamentali del collaudo, come definiti dall'ISTQB:
- I test mostrano la presenza di difetti, non la loro assenza: non è possibile garantire che l'applicazione sia priva di difetti solo perché è stata sottoposta a test. Tuttavia, dopo i test, la fiducia nel prodotto può aumentare.
- I test esaustivi sono impossibili: la maggior parte delle applicazioni è incredibilmente complessa, quindi testare ogni possibile combinazione e variazione è impossibile, soprattutto perché anche il tempo e le risorse disponibili per i test sono limitati.
- Test precoci: prima vengono individuati i bug e i difetti durante il ciclo di vita dello sviluppo del software, più è facile correggerli. È qui che Agile fa la cosa giusta, poiché le attività di test iniziano molto presto.
- I difetti si concentrano: ciò significa che le aree in cui sono stati trovati dei difetti molto probabilmente ne presenteranno ancora di più. Secondo il principio di Pareto, l'80% dei difetti può essere trovato nel 20% delle funzionalità.
- Il paradosso del pesticida: eseguire ripetutamente gli stessi test senza aggiornarli probabilmente non farà emergere nuovi problemi.
- I test dipendono dal contesto: le applicazioni vengono testate in modo diverso in base al loro contesto: per esempio, si testa un'API in modo diverso rispetto a un'interfaccia utente e si testano le applicazioni web in modo diverso rispetto alle applicazioni mobili o desktop.
- Fallacia dell'assenza di errori: in breve, il fatto che i difetti siano stati trovati e corretti non significa che il software sia utile ai suoi utenti.
Conclusione
Il testing del software è un ambito molto complesso e si possono eseguire molti tipi di test. È importante adattare la propria strategia di testing in base al contesto del prodotto software sottoposto a test. Esistono infinite risorse sul testing del software, tra cui podcast, libri e molto altro.
Se questo articolo ti è piaciuto, iscriviti alla newsletter del responsabile QA per essere tra i primi a conoscere i nuovi post dedicati al testing e alla qualità.
