Testing Funzionale del Software

Per testing strutturale o “White Box Testing” si intendono quei casi in cui occorre verificare la struttura interna del programma e quindi cercare di scovare gli errori logici del programmatore. Nel “Black Box Testing” o testing funzionale andremo a verificare il software dal punto di vista dell’utilizzatore.
Le principali tecniche funzionali sono: partition testing, domain testing, error based testing e state testing. I partition testing si basano sul partizionare l’input del sistema in sottoinsiemi disgiunti ed ad ognuno di essi far corrispondere un diverso comportamento del programma. La tecnica può essere resa più efficiente se si aggiungono test case appositi per casi speciali, in questo modo si ha il domain testing.
L’error based testing serve per evidenziare specifici errori o classi di errori. Lo strumento di cui ci si serve per questo test è la mutazione che è un insieme di trasformazioni elementari che consentono di creare una specifica del programma mutata che contiene errori di un certo tipo. Il procedimento è quello di cambiare il nome di una variabile, il segno di un operatore o altro, sia a livello di codice che di progettazione, per vedere gli effetti nelle varianti mutate del programma.
Il domain testing si applica al test di unità o componenti attraverso la suddivisione in domini degli input, si cerca quindi di scoprire gli errori di classificazione selezionando i point test sopra o vicino i bordi del dominio. Il domain testing sfrutta il fatto che gli errori, soprattutto di tipo matematico, di solito, si addensano verso i confini del dominio.
Il partition testing è l’approccio più caratteristico del testing funzionale, l’idea è quella di suddividere in sottodomini gli argomenti della routine da testare. Si individuano tutte le combinazioni di ogni sottodominio di un dominio che formano una partizione. Fare i test su ogni sottodominio è impensabile dato il gran numero di questi, quindi si ricorre a tecniche di ricerca euristica facendo in modo che i diversi valori assunti dai parametri non interagiscano tra loro, in modo da non dover fare dei test incrociati. Facendo dei test su una funzione, ad esempio, possiamo prendere in considerazione sia gli input come gli argomenti oppure anche i valori di ritorno o output, cercando ove possibile di fare il test su ogni valore, ad esempio positivo, zero o minore di zero.
Questi metodi che ho solo riassunto servono per cercare di limitare gli errori di un programma, ma purtroppo ci sarà sempre qualcosa che produrrà un evento di malfunzionamento, l’importante è scovarne il più possibile.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Programmazione. Contrassegna il permalink.