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

24 Marzo 2025
Cos'è una VPN e perchè potrebbe servirti (aggiornato al 2025)

Devi connetterti al tuo server aziendale? Aggirare un blocco dell’IP (ovviamente, per fini etici)? Oppure anche solo assicurarti che la connessione su cui stai navigando mantenga i tuoi dati al sicuro? Per ognuno di questi casi, e per molti altri, la VPN è la tecnologia di cui hai bisogno. Se ne hai sentito parlare e […]

22 Marzo 2025
Vibe Coding: da Copilot a Cursor, l'ascesa degli IDE assisiti dall'AI

Negli ultimi mesi, il modo in cui sviluppatori e programmatori si approcciano alla scrittura del codice è profondamente cambiato, introducendo il concetto di "Vibe Coding" grazie a strumenti di Intelligenza Artificiale che automatizzano e semplificano la scrittura e revisione del codice. Tra i principali IDE con l'assistenza dell'AI troviamo Visual Studio Code (VSCode) con Copilot […]

18 Marzo 2025
La guida definitiva all'hosting: dove ospitare app e siti web

Dove ospitare la tua applicazione web o mobile: guida definitiva a hosting condivisi, VPS, VDS, server dedicati e piattaforme Cloud pubbliche (AWS, Azure, Google Cloud) Quando si decide di sviluppare una nuova applicazione web o mobile, la scelta della giusta soluzione di hosting rappresenta una fase fondamentale per garantire buone prestazioni, sicurezza adeguata e facilità […]

15 Marzo 2025
La direttiva NIS2 e le responsabilità del management: quali rischi per CEO, CIO e CISO?

La nuova direttiva europea sulla sicurezza informatica, nota come NIS2, introduce significativi cambiamenti rispetto alla precedente direttiva NIS, ampliando la platea delle organizzazioni coinvolte e assegnando responsabilità precise ai vertici aziendali. CEO, CIO e CISO sono chiamati direttamente in causa, con implicazioni rilevanti sia dal punto di vista legale che organizzativo. Le principali novità della […]

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