Come fare testing nello sviluppo software

Come fare testing nello sviluppo software

Un passaggio imprescindibile per garantire che il software risponda alle specifiche richieste è condurre correttamente la fase di testing. 

Fare testing è una delle fasi più delicate nella gestione di una commessa, perché le strategie messe in atto a questo punto del development variano molto in tempi e modi, cosa resa ancor più complessa dal continuo sviluppo delle tecnologie che utilizziamo.

Ogni software house lo sa: una scorretta o inadeguata procedura di testing porta inevitabilmente a un cliente insoddisfatto, ma anche a costi elevati per correggere gli errori.

Tipi di testing 

Esistono diversi tipi di test nel ciclo di sviluppo del software, ognuno con un obiettivo specifico. I più basilari sono i testi unitari, che verificano il corretto funzionamento delle singole unità di codice, ad esempio delle funzioni o dei metodi. 

Generalmente i test unitari sono automatizzati e rappresentano il primo livello di difesa contro i bug. 

Oppure, è possibile condurre dei test di integrazione, che verificano le diverse componenti del sistema e il loro funzionamento complessivo. 

Altra possibilità sono i test sulla singola funzione del software, oppure i test di regresso, utili per quando si modifica il codice e si teme il possibile insorgere di nuovi bug.

Infine, abbiamo gli importantissimi test di carico e stress, che valutano le prestazioni del software sotto carico elevato, simulando condizioni di utilizzo estreme per garantire la stabilità del sistema.

L’automazione: una possibilità concreta nel testing per lo sviluppo software

A questo punto è opportuno introdurre un altro argomento: l’automazione del testing del software.

Perché continuare a svolgere complessi passaggi manuali, passibili di errore e costosi in termini di tempo, quando esistono dei validi strumenti di automazione?

Ormai l’affidabilità di questi strumenti è certa, e i risultati che ottengono sono affidabili. 

Altro grande vantaggio dei testi automatizzati è la possibilità di coprire più scenari e variabili rispetto ai test manuali, con anche un feedback più rapido sul risultato.

Strumenti di automazione dei test

Passiamo a qualche istruzione operativa. Il mercato offre vari strumenti, ma i principali sono:

1. Selenium

Selenium è uno degli strumenti più utilizzati per l’automazione dei test di interfaccia utente (UI) per applicazioni web, e crea dei test complessi che simulano le interazioni degli utenti, come il click, l’inserimento di testo e la navigazione tra le pagine.  

È open source e supporta diversi linguaggi di programmazione come Java, C#, Python e Ruby, il che lo rende altamente versatile. 

Grazie alla sua capacità di integrarsi con altre soluzioni, come Jenkins per l’integrazione continua, Selenium è ottimo in termini di flessibilità e potenza.

2. Jenkins

Jenkins non è uno strumento di test vero e proprio, ma più una piattaforma di integrazione continua (CI). 

Jenkins consente di eseguire automaticamente i test ogni volta che il codice viene aggiornato, integrandosi con strumenti come Selenium, JUnit e altri. 

Questo flusso di lavoro automatizzato garantisce che il codice venga costantemente monitorato e testato.

3. TestNG

TestNG è un framework per test basato su Java che supporta cui test unitari, test funzionali e test di integrazione. 

È stato progettato per coprire un’area più ampia rispetto a JUnit, e offre funzionalità come test paralleli, gestione avanzata delle dipendenze tra test e possibilità di generare report dettagliati. 

L’integrazione con strumenti come Selenium lo rende molto popolare per i progetti Java.

Come condurre un test manuale del software (e quando serve)

 

I test manuali, pur essendo più dispendiosi in termini di tempo rispetto ai test automatizzati, sono fondamentali per garantire che un’applicazione funzioni correttamente. 

Alcuni bug infatti potrebbero sfuggire ai test automatizzati e soprattutto i testi automatizzati non sono così intuitivi quanto a user experience (UX)

In più, il testing nello sviluppo software beneficia sempre di una maggiore flessibilità, per testare delle situazioni e aree non previste in fase di pianificazione, e i test manuali in questo rispondono molto bene.

Inoltre, nei primi stadi di sviluppo, quando l’automazione non è ancora implementabile o il software è in rapido cambiamento, i test manuali permettono di mantenere comunque un livello di controllo sulla qualità.

 

Esempio di strategia per il software testing manuale: una checklist

1. Definizione degli obiettivi di test

Prima di iniziare i test, è essenziale avere una chiara comprensione degli obiettivi. Questo aiuta a garantire che i test si concentrino sulle aree critiche del software. 

In questa fase bisogna determinare quali parti dell’applicazione devono essere testate manualmente, come funzionalità nuove o modificate, aree ad alto rischio, o componenti critici per il business.

Poi, è il momento di definire degli obiettivi legati alla facilità d’uso, alla navigazione e all’intuitività dell’interfaccia.

2. Pianificazione del test

Una pianificazione accurata è fondamentale per garantire che tutti gli aspetti del software siano coperti e che i test vengano eseguiti in modo sistematico.

Delinea la strategia di test! 

Dovrai elencare le funzionalità da testare, i tipi di test da eseguire (come test funzionali, test di regressione, test di usabilità), e l’ordine in cui verranno eseguiti.

Poi, sviluppa casi di test dettagliati per ogni funzionalità o modulo. Ogni caso di test dovrebbe includere i seguenti elementi:

  • Titolo del caso di test: Un nome chiaro e descrittivo.
  • Pre-condizioni: Tutti i requisiti che devono essere soddisfatti prima di eseguire il test.
  • Passi del test: Una sequenza dettagliata di azioni che l’utente deve eseguire.
  • Risultato atteso: La condizione che deve essere verificata se il software funziona correttamente.

Ultimo consiglio: assegna i test a specifici membri del team, tenendo conto delle loro competenze e delle esigenze del progetto.

3. Esecuzione dei test

Questa fase consiste nell’esecuzione pratica dei test, seguendo i casi di test preparati.

La best practice è sempre eseguire i casi di test uno alla volta, seguendo rigorosamente i passi descritti, annotando tutto. 

Oltre ai casi di test predefiniti, è utile eseguire test esplorativi, dove il tester interagisce con il software in modo non strutturato. 

Crea delle procedure per riprodurre i risultati che hai visto nei test, con passaggi scritti e/o screenshot o video, se serve. 

4. Segnalazione e gestione dei bug

Una volta individuati i bug, è essenziale gestirli in modo efficiente.

Puoi usare uno strumento di tracciamento dei bug (come Jira, Trello, o Clickup). 

Ogni segnalazione dovrebbe includere:

  • Descrizione dettagliata: Un resoconto chiaro e conciso del problema.
  • Passi per la riproduzione: Una lista di azioni che portano al bug, per permettere agli sviluppatori di riprodurre e risolvere il problema.
  • Gravità e priorità: Classifica il bug in base alla sua gravità (quanto impatta il sistema) e alla priorità (quanto è urgente risolverlo).

Dopo che un bug è stato risolto dagli sviluppatori, esegui nuovamente i test per verificare che la correzione funzioni correttamente e che non abbia introdotto nuovi problemi.

5. Report finale e documentazione

Alla fine della fase di test, conviene creare un report che riassuma i risultati, incluse le funzionalità testate, i bug trovati e risolti, e l’esito finale di ogni caso di test.

Distribuisci il report ai membri del team e agli stakeholder per mantenere tutti informati sullo stato del progetto e per pianificare eventuali fasi successive.

 

È tutto chiaro?

Se vuoi approfondire il dietro le quinte dello sviluppo software, forse potrebbe interessarti leggere:

 

E se vuoi lavorare con noi a progetti freschi e innovativi… Contattaci!