Testing software: Cos’è, a cosa serve e le tecniche del controllo dinamico

Testing software: Cos’è, a cosa serve e le tecniche del controllo dinamico

Controllo dinamico

Nel testing software, il controllo dinamico, o test, richiede l’esecuzione di un programma in un ambiente e con dati di ingresso controllati, la registrazione di tutti i dati riguardanti l’esecuzione e interessanti ai fini dei fattori di qualità che si vogliono valutare e, infine, l’analisi dei dati e il loro confronto con i requisiti. Tecnicamente, il test consiste nell’esercitare un programma al fine di scoprire malfunzionamenti che denuncino l’esistenza di difetti.

Testing software: Cos'è, a cosa serve e le tecniche del controllo dinamico

Il termine test, assai usato anche in italiano, indica comunemente sia il controllo dinamico in generale, inteso come attività del processo di sviluppo e disciplina dell’ingegneria del software, che una singola sessione di prova di un programma identificata dall’insieme di condizioni, dati di ingresso e contesto di esecuzione, in cui essa si svolge.
Il test come tecnica di controllo ha come principale obiettivo la verifica della correttezza funzionale di un programma o di un sistema, ma sempre più spesso viene usato come tecnica di base per la realizzazione di controlli mirati alla valutazione di altri fattori di qualità come ad esempio affidabilità, usabilità ed efficienza.
Il test è il controllo di qualità del software di gran lunga più praticato, anche se spesso, proprio per la sua concettuale semplicità, funziona? Mah, proviamolo, risulta un’attività naïf, condotta senza la necessaria pianificazione e, di conseguenza, con scarsi risultati sul piano del raggiungimento di una migliore qualità del prodotto.

In questo articolo parliamo degli aspetti principali di questa tecnica di controllo:

  • Progettazione dei test. Un test non si improvvisa, va studiato e preparato. Obiettivo del test è esercitare un programma per provocare malfunzionamenti: per essere efficace un test deve essere realizzato in base alle caratteristiche del programma da esaminare. La progettazione è perciò mirata a definire il contesto di esecuzione, in particolar modo selezionando l’insieme dei dati di ingresso da fornire al programma durante il test.
  • Ambiente di test. Il test deve avvenire in un ambiente che permetta l’esecuzione controllata dei programmi in esame. Sono necessari strumenti per fornire nella giusta sequenza i dati di ingresso selezionati per il test e per registrare tutti i dati del comportamento del programma utili per la successiva analisi; l’ambiente di esecuzione deve essere configurabile e controllabile in tutti i suoi aspetti (memoria disponibile, potenza di calcolo, esecuzione concorrente di altri programmi, etc.). Se il software sottoposto a test non è un sistema compiuto, ma un suo componente o una sua parte (una scelta molto frequente) il test comporta anche la realizzazione di tutti i programmi di contorno necessari a simulare il comportamento delle parti mancanti del sistema).
  • Analisi dei risultati. I dati ottenuti dall’esecuzione di un test devono essere analizzati alla ricerca di eventuali malfunzionamenti. Sono perciò necessari dei dati di riscontro, che identificano il risultato atteso, con cui confrontare i risultati di test.
  • Debugging. A differenza delle tecniche di controllo statico, che per definizione mirano direttamente ai difetti e che spesso nel trovarli danno anche buone indicazioni sugli errori che li hanno generati, il test ha come obiettivo la scoperta di malfunzionamenti. A un test positivo deve quindi seguire la necessaria attività per l’eliminazione dei difetti, detta debugging dall’inglese bug, termine gergale per indicare il difetto, vero fine di ogni controllo volto al miglioramento della qualità.

Il controllo dinamico si mostra quindi come un’attività particolarmente onerosa all’interno del processo di sviluppo, ma necessaria. I controlli statici, infatti, hanno grande importanza nel rivelare alcune categorie di difetti e sono un utile complemento al test nella ricerca dei difetti a fronte del manifestarsi di un funzionamento, ma non possono applicarsi in modo risolutivo a tutti i casi che si presentano nel corso della realizzazione di un prodotto software.

In particolare i controlli statici, per le limitata capacità delle persone e degli strumenti, si possono applicare solo a porzioni di codice di dimensione ridotta (tipicamente i moduli), lasciando così scoperta la prova di un sistema nel suo insieme, per la quale il test rimane la forma di controllo più indicata. Ci sono inoltre requisiti, come l’efficienza, che possono essere controllati solo a fronte della messa in esecuzione del software.

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 *