Collaudo del software

il 12 ottobre 2018

Il testing o collaudo è il procedimento che verifica la correttezza, la completezza e l’affidabilità di un software.

Assicurare la qualità del prodotto tramite la ricerca e correzione dei difetti è quindi l’obiettivo fondamentale di questa procedura. Solo tramite il testing possiamo avere la certezza che il software corrisponda esattamente ai requisiti definiti in fase di analisi delle specifiche tecniche.

 

Il processo di collaudo del software: le fasi

A prescindere dalla metodologia utilizzata, Agile, Scrum o RUP, possiamo definire un processo fondamentale suddiviso in step.

  1. Elaborazione di strategia e piano di test: oltre alla definizione di tutte le caratteristiche e le funzionalità da testare, è necessario individuare un approccio, determinare gli ambienti e pianificare il flusso. Il piano test comprende le attività per i progetti di sviluppo e manutenzione che definiscono l’approccio e gli obiettivi del test. La pianificazione è influenzata da molteplici fattori: dalla disponibilità di risorse, dalla politica di test e dalla sua strategia, dai cicli di vita e dai metodi di sviluppo, dai vincoli e dalla criticità del contesto.
  2. Design del test: in questa fase si realizza la suite di test, ossia l’insieme di casi d’uso necessari per la validazione. Durante il test design, vengono elaborate condizioni o variabili sotto le quali un tester determina se una applicazione o sistema software risponde correttamente o meno.
  3. Esecuzione del test: Durante l’esecuzione del test, le suite di test vengono elaborate in base alla programmazione del test.
  4. Conclusione del test: Nella conclusione dei test vengono raccolti i dati relativi alle attività di test, testware e qualsiasi altra informazione pertinente.

 

Tipologie di test:

  • Functional Testing: prevede dei test che valutano le funzioni che il sistema deve eseguire. Le funzioni sono le azioni che dovrebbe fare il sistema.
  • Non-functional Testing: Valuta le caratteristiche di software e di sistemi come l’usabilità, l’efficienza o la sicurezza.

Per alcune parti dei software viene lo Unit Testing. L’Unit testing è effettuato quando bisogna collaudare separatamente le singole componenti di un sistema software. Le componenti collaudabili di un sistema software prendono il nome di "moduli" o "unità", per cui si parla di "collaudo di modulo". In questo caso vengono scritti dei piccoli programmi che hanno il compito di verificare i risultati prodotti dal software posto sotto test. Il vantaggio di scrivere test automatici è la ripetibilità “senza costo” del test che può essere eseguito innumerevoli volte.

Data l’impossibilità di testare tutte le combinazioni di input e i possibili ambienti software e hardware in cui l’applicazione può trovarsi ad operare, la probabilità di malfunzionamenti non può essere ridotta a zero, ma deve essere ridotta al minimo, in modo da risultare accettabile per l’utente. In questo contesto pare evidente che in un’applicazione “life-critical”, ad esempio in ambito ospedaliero o militare, dove un malfunzionamento può mettere a rischio la vita umana, la qualità richiesta sarà molto più elevata di quella attesa per software di ufficio o un videogioco.

 

Come diventare tester?

Per diventare tester riconosciuti, sono nati a livello mondiale percorsi di certificazione delle conoscenze. L’International Software Testing Qualifications Board (ISTQB) è l’ente più importante a livello mondiale che si occupa di queste certificazioni. In particolare, il board italiano “ITA-STQB” (Italian Software Testing Qualifications Board) è attivo dal 2007 con l’obiettivo di effettuare in Italia e nel cantone svizzero di lingua italiana la certificazione delle competenze in ambito System and Software Engineering, in conformità con le procedure definite dagli schemi di riferimento a livello mondiale. Le certificazioni disponibili sono tre: la certificazione in Requirements Engineering, quella in Software Testing e quella in Mobile App Testing.

Il software testing sta assumendo sempre di più il ruolo centrale nell’ambito dell’ingegneria del software. È quindi sempre più importante riuscire a qualificare professionisti nell’ambito del testing.