Come fare testing nello sviluppo software

12 Settembre 2024
Maria Teresa Italiano

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!

Altri articoli dal nostro Tech Blog

30 Maggio 2025
Chatbot AI: cosa sono e perché potrebbero essere utili sul tuo sito web

Immaginiamo di atterrare su un e-commerce e di avere un prodotto molto specifico da cercare, oppure di avere bisogno di assistenza. Queste sono le prime due evenienze che statisticamente sovraccaricano di più le assistenze clienti dei negozi online, e quindi le maggiori fonti di lavoro per chi gestisce un e-commerce. E se tutto questo lavoro […]

7 Maggio 2025
Alternative a Stripe (con commissioni più basse!)

Inutile dire che se Stripe è diventato tra i metodi di pagamento web più usati, un motivo c’è. Stripe è infatti un gateway di pagamento affidabile, con API moderne e che offre una user experience ottimale, però le sue commissioni non sono le più basse sul mercato. Se stai cercando delle alternative a Stripe, altrettanto […]

14 Aprile 2025
Startup tecnologiche più interessanti nel 2025, parola di Pizero!

I fatti di cronaca sembrano dipingere in ogni settore un trionfo dei business in qualche modo legati all'Intelligenza Artificiale. Non lasciamoci trascinare da facili entusiasmi: conviene basarsi sui dati per delineare le startup tecnologiche più interessanti del 2025. L'innovazione tecnologica è ormai una caratteristica costante, a ritmi che 20 anni fa sarebbero stati impensabili, e […]

10 Aprile 2025
RAG: cos'è, come implementarla e perché rivoluzionerà i tuoi progetti di AI

Le RAG (Retrieval-Augmented Generation) sono una delle tecnologie più innovative nell'ambito dell'intelligenza artificiale, che combinano la potenza della ricerca documentale (retrieval) con le capacità generative dei modelli linguistici più avanzati, come GPT-4. Questa combinazione permette di creare risposte altamente accurate, contestualizzate e aggiornate, rendendo i sistemi basati su AI significativamente più affidabili. In questo approfondimento […]

Richiedi un incontro

Compila il form per ottenere una consulenza personalizzata per il tuo progetto.

Compila i campi per essere ricontattato

© Pizero Design srl, tutti i diritti riservati - P.I. 02313970465 - REA LU-215417
X
lockuserscartcalendar-fullsmartphonelaptopbriefcase