Le tecniche di Black-Box e White-Box testing

Le tecniche di Black-Box e White-Box testing

In questo articolo approfondiamo le tecniche di Black-Box testing e White-Box testing utili per approcciarsi correttamente al collaudo del software in queste due modalità. Innanzitutto, esistono due tipologie di criteri di selezione dei test.

  1. Test funzionale o Black-Box Testing: basato sulle specifiche del programma e sulla conoscenza delle sole funzionalità e sulla ricerca dell’affidabilità e dell’efficienza;
  2. Test strutturale o White-Box Testing: Basato sul programma con la conoscenza del codice, indipendente dalle specifiche e con il solo obiettivo della ricerca dei difetti.

Questi due criteri sono complementari ed ognuno può rilevare malfunzionamenti non rivelabili con l’altro.

Le tecniche di Black-Box e White-Box testing
Le tecniche di Black-Box e White-Box testing

Black-Box Testing

Di seguito parliamo di due tecniche per la generazione dei dati per effettuare le verifiche funzionali.

Partition Testing

Il partition testing (letteralmente, “partizionamento di prove”) è l’approccio più caratteristico del testing funzionale, l’idea è quella di suddividere in sottoinsiemi di dati gli input da testare, da cui deriva il nome partizionamento.
Ogni partizione deve essere disgiunta dalle altre ed ogni valore deve avere una caratteristica in comune con gli altri valori della partizione. Tutti i valori devono essere nel dominio D dei dati di ingresso del programma. Tali valori potrebbe essere infiniti.
Nella procedura di testing si possono eseguire i seguenti passi:

  1. Definire le caratteristiche dei dati in base alle funzionalità da testare;
  2. Partizionare per caratteristiche;
  3. Combinare i valori per caratteristiche creando i dati di input da utilizzare nei test, per verificare il corretto funzionamento ad ogni partizione dei dati.

Una parte fondamentale di questa procedura è definire un modello della rappresentazione dei dati di input più comunemente chiamato “Input Domain Model”,(letteralmente “modello del dominio degli input”, abbreviato IDM). Identificando le funzioni controllabili ed i moduli dell’applicazione da testare, tutti i parametri dei metodi e i campi dei moduli da inserire, si possono ricavare i dati per eseguire i test. Applicando un criterio di test per la generazione dei valori, sarà necessario scegliere una combinazione di essi, in base alle funzionalità.

Per definire IDM, esistono due approcci:

  1. Basandosi sull’interfaccia che si sta testando: i valori vengono generati identificando la tipologia di ogni singolo dato. Per esempio generando un valore numerico, un testo se è una stringa oppure una data;
  2. Basandosi sulle funzionalità: avendo una visione completa del comportamento del programma si possono generare valori per specifiche funzionalità. Più difficile da progettare e sviluppare ma con migliori risultati rispetto all’approccio precedente.

Nella scelta dei valori di ingresso, verificando sempre la completezza nell’insieme delle casistiche e ricordandosi di mantenere la disgiunzione tra le singole partizioni, si può far riferimento a diverse strategie:

  1. Includere valori validi, non validi e speciali;
  2. Includere valori ai confini dei domini, valori al limite dell’intervallo dei valori possibili. Questa strategia definisce un nuovo criterio di selezione conosciuto come “Boundary value analysis” (letteralmente “analisi ai confini dei valori” );
  3. Includere valori che rappresentano un “uso normale” del sistema;
  4. Includere un numero considerevole di valori con le stesse caratteristiche per effettuare test di carico.

White-Box Testing

Questo criterio si basa sul principio di analizzare il codice sorgente e basarsi su di esso per creare criteri di selezione (C) per i test. Ad ogni programma si può associare un grafo di controllo. Ogni nodo del grafo è un “comando” che può essere collegato ad altri nodi attraverso archi. Ogni nodo può avere archi in ingresso e in uscita. Un comando può essere una semplice istruzione oppure una condizione. Un comando di tipo condizione può avere più archi in uscita, un comando di tipo istruzione no. Un cammino comprende un insieme di nodi attraversati da una singola esecuzione del programma.

Il White-Box Testing è basato sulla nozione di copertura, sull’esecuzione degli elementi del grafo del flusso di controllo di un programma.
La tecnica di copertura (esistono diversi tipi di copertura: istruzioni, decisioni e condizioni) permette di determinare le condizioni che devono essere verificate dai dati in ingresso affinché un particolare cammino venga eseguito e relaziona i valori prodotti dall’esecuzione del programma con i valori in ingresso del programma stesso. Si noti che il programma non è eseguito con i valori effettivi ma con valori simbolici derivati dai dati di input. Dai valori simbolici vengono elaborate formule risolte in base all’esecuzione del programma.

 

Pubblicato da Vito Lavecchia

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

Lascia un commento

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