Testing software: Valutare esito e efficacia dei casi di test automaticamente

Testing software: Valutare esito e efficacia dei casi di test automaticamente

Testing Manuale vs Testing Automatico

Il principale obiettivo di qualsiasi progetto di successo è quello di ridurre i costi e i tempi necessari per completare quanto richiesto, mantenendo alta la qualità del prodotto che si sta realizzando.
Il Testing copre un dominio enorme ma può essere suddiviso in due aree principali:

  1. Testing manuale (Manual Testing)
  2. Testing automatico (Automated Testing)

Entrambi offrono vantaggi e svantaggi, ma vale la pena conoscere la differenza che sussiste tra queste due aree e capire quando usare l’uno o l’altro per ottenere i risultati migliori. Il tipo di testing da eseguire dipende da vari fattori, tra i quali i requisiti di progetto, budget, scadenze, competenze.

  1. Nel testing manuale i casi di test sono eseguiti manualmente senza l’ausilio di strumenti o script. Si tratta di un testing molto flessibile con costi a breve termine contenuti. Il problema è che non sempre è possibile svolgere tutti i compiti manualmente. Può essere ripetitivo e noioso in alcuni casi. Come risultato, molti tester hanno difficoltà a rimanere impegnati in questo processo e gli errori possono verificarsi con più probabilità.
  2. Nel testing automatico si ricorre all’uso di tool, script e software. I casi di test vengono eseguiti in maniera rapida ed efficace. E’ possibile il riuso di test già esistenti, il che è un vantaggio quando bisogna fare test di regressione in quanto sono necessarie modifiche frequenti nel codice e le operazioni di regressione devono essere eseguite in modo tempestivo.

L’automazione offre la possibilità di svolgere efficacemente la fase di verifica e validazione del software, permettendo di eseguire i test in maniera più rapida e in modo facilmente ripetibile.

Testing software: Valutare esito e efficacia dei casi di test automaticamente

Valutazione dell’esito e dell’efficacia dei casi di test

Per poter valutare automaticamente l’esito di un caso di test, esso dovrebbe esser stato oggettivamente definito e dovrebbe esser disponibile un metodo per la sua valutazione (esempio gli assert nel caso di un test con JUnit). In alcuni casi, l’esito di un test non ha bisogno di esser definito, oppure può esser definito automaticamente ricorrendo al Crash Testing (che consiste nel testare un software andando alla ricerca di eccezioni o errori a run-time che ne interrompano l’esecuzione) o al Regression Testing (che viene effettuato in seguito ad un intervento di manutenzione per verificare se la modifica effettuata su modulo software ha impattato il resto del sistema).

Per valutare invece l’efficacia dei casi di test generati si ricorre all’ Analisi Mutazionale. Difetti artificiali (mutanti) vengono iniettati nel software e i casi di test, della test suite da valutare, vengono eseguiti sulla versione modificata del programma. Un mutante non rilevato mostra una debolezza all’interno della test suite e indica, nella maggior parte dei casi, che un nuovo caso di test dovrebbe esser aggiunto o che un caso di test esistente necessita di miglioramenti. Migliorare i casi di test dopo l’analisi mutazionale significa che il tester deve riprogettarli, prendendo come riscontro ciò che ha ottenuto in seguito all’analisi mutazionale. Questo processo però richiede una profonda comprensione del codice sorgente ed è un compito non banale.
In conclusione, una test suite che riesca a rivelare il maggior numero possibile di mutanti è da considerarsi più promettente nella rivelazione di potenziali difetti nell’applicazione.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *