Metodologie e Tecniche di Software Testing: White Box, Black Box e Strategie di Validazione

Classificato in Informatica

Scritto il in italiano con una dimensione di 7,88 KB

Introduzione al Software Testing

Il Software Testing è il processo di esecuzione di un programma con lo specifico intento di trovare errori prima che raggiunga l'utente finale.

Obiettivi e Successo del Test

  • Ricerca di difetti nel software.
  • Un test ha successo se scopre un difetto.
  • Un test fallisce se i difetti non vengono scoperti.

Verifica e Validazione

  • Verifica (Verification Test): Vedere se il software soddisfa le specifiche di progettazione.
  • Validazione (Validation Test): Vedere se il software si qualifica rispetto ai requisiti di analisi.

Principi Fondamentali del Testing

  • Osservabilità: I risultati di ogni test devono essere osservabili.
  • Controllabilità: Misura in cui i test possono essere automatizzati e ottimizzati.
  • Decomposizione: Le prove devono poter essere condotte in segmenti gestibili.
  • Semplicità: Ridurre la complessità dell'architettura e della logica per semplificare il testing.
  • Stabilità: I cambiamenti necessari durante il test devono essere minimi.
  • Comprensibilità: Derivata dalla progettazione.

Focus del Testing

Il testing si concentra su: errori di condizionalità, requisiti di prestazione e indicazione di qualità.

Ruoli nel Testing

  • Developer (Sviluppatore): Capisce il sistema, ma è condiscendente ed è guidato dal “deliverable” (risultato finale).
  • Independent Tester (Tester Indipendente): Deve capire il sistema, ma cercherà di provocare il fallimento ed è guidato dalla qualità.

Tecniche di Testing: White Box (Scatola Bianca)

Concetto e Terminologia White Box

Il test del codice è conosciuto come test white-box (scatola chiara, scatola trasparente o scatola di vetro). Si cerca di esercitare ogni elemento del codice.

Obiettivo del White Box Testing

Garantire che tutte le dichiarazioni e le condizioni vengano eseguite almeno una volta.

Perché si usa il White Box Testing?

Spesso si pensa che un percorso di base abbia poche possibilità di errori. Gli errori tipografici sono casuali. La logica e i presupposti errati sono inversamente proporzionali alla probabilità che un percorso esegua il programma.

Strumenti di Analisi White Box

Notazione Grafico-Flusso

Rappresenta il flusso di controllo logico con una notazione illustrata e strutturata. Ogni istruzione ha un simbolo corrispondente sul grafico di flusso.

Complessità Ciclomatica

Una metrica software che fornisce una misura quantitativa della complessità logica di un programma. Nel contesto del passaggio di base, la complessità ciclomatica definisce il numero di percorsi indipendenti del set di base di un programma e fornisce il limite del test necessario da eseguire.

Percorso Autonomo

Un percorso autonomo è qualsiasi percorso del programma che presenta, almeno, un nuovo set di istruzioni o una nuova condizione. Il processo nodi predicato si verifica quando due o più bordi emergono da un nodo.

Grafici Matrix

Utilizzati per ottenere il grafico di flusso e determinare una serie di strade di base. Si tratta di una matrice quadrata la cui dimensione (riga e colonna) è uguale al numero di nodi del grafico di flusso e agli spigoli tra le voci dei nodi.

Tipi di Copertura White Box

Test di Copertura (Statement Coverage)

Eseguire almeno una volta ogni frase. Richiede diversi casi di test e può essere impossibile coprire il 100%.

Trace Copertura

Poiché in alcuni programmi il numero di possibili tracce di esecuzione è molto limitato, è utile utilizzare l'indice (numero di tracce osservate / numero di possibili tracce) per ottenere la copertura. Osservando sempre più tracce, il processo si avvicina al 100% di copertura.

Copertura di Loop (Loop Coverage)

I loop (cicli) non sono altro che segmenti controllati da decisioni. Un ciclo viene eseguito un certo numero di volte, ma il numero di volte deve essere molto preciso. È naturale che l'esecuzione (o la mancata esecuzione) di un ciclo possa avere conseguenze indesiderabili.

Limitazioni del White Box Testing

Il test white box ci convince che un programma fa quello che deve fare, ma non garantisce che faccia quello di cui abbiamo bisogno (mancanza di requisiti).

Tecniche di Testing: Black Box (Scatola Nera)

Concetto e Terminologia Black Box

La prova in cui è nota solo l'interfaccia è chiamata test black box (scatola opaca). Si cerca di esercitare ogni elemento dell'interfaccia, concentrandosi sui requisiti funzionali del software. Permette di avere un insieme di condizioni di ingresso per esercitare pienamente i requisiti funzionali del programma. È un'alternativa al white box.

Metodi di Test Black Box

Tipi di Test Black Box

  • Copertura: richiamare tutte le funzioni (100%).
  • Classi di equivalenza dei dati.
  • Prova dei limiti (Boundary Testing).

Le Prove delle Classi di Equivalenza

Dividono il dominio di input in una serie di classi di dati da cui derivare i casi di test.

Esempio di Classe di Equivalenza

Se l'input è un codice composto da due parti: la prima è un prefisso opzionale di 3 cifre che inizia con 9, e la password è una stringa di massimo 6 caratteri che comincia necessariamente con una lettera e può contenere lettere, cifre e il simbolo $.

I Limiti di Test (Boundary Testing)

Gli errori si trovano spesso ai limiti. Se l'ingresso è nel range di A a B, allora si dovrebbero provare i valori: A-1, A, A+1, B-1, B, B+1.

Strategie e Ambienti di Testing

Ambienti di Test e Applicazioni Specializzate

  • Testing di interfacce grafiche utente (GUI) su Windows.
  • Testing su menu e dati.
  • Testing sul mouse.
  • Testing della documentazione di entrata e di aiuto.

Strategie di Esecuzione del Software

Le strategie includono: Unit Test, Test di Integrazione, Test di Validazione e Test di Regressione.

Test senza Strategia (Anti-Pattern)

La motivazione è che le prove sono scomode o noiose. Eseguire Test tutti insieme alla fine (Big Bang) porta a fallimenti ovunque ed è molto difficile diagnosticare le cause dei problemi.

Unit Test (Test di Unità)

Testare il funzionamento di un singolo modulo di codice.

Test di Integrazione

Effettuato durante la costruzione del sistema, coinvolgendo un numero crescente di moduli e testando il sistema fino alla fine come un insieme. Può essere richiesto da un punto di vista strutturale o funzionale.

Integrazione Strutturale

I test di integrazione strutturale sono simili ai test white box, ma lavorano a un livello concettuale superiore. Invece di fare riferimento alle istruzioni del linguaggio, si fa riferimento alle chiamate tra moduli.

Test di Validazione

Verificare che i requisiti siano soddisfatti. Vengono utilizzate le stesse tecniche, ma con un obiettivo diverso. Non si testano solo i programmi, ma il codice finale dell'applicazione. Il test è completo con uno o più casi di test per ciascun requisito o caso d'uso. Vengono specificati anche prestazioni, capacità, ecc. (e non solo risultati corretti).

Tipi di Validazione
  • Prove Alfa: Eseguite dagli sviluppatori.
  • Prove Beta: Eseguite dagli utenti.

Test di Sistema

Test che viene fatto per verificare che il sistema completo non abbia difetti o errori. Può includere test di robustezza, prestazioni, affidabilità, sicurezza, usabilità e installazione.

Voci correlate: