White box testing: definizione, caratteristiche e potenzialità

white-box-tes

Il test a scatola bianca od aperta (in inglese W.B.T. -White Box Testing-) è una metodologia di test che ha come presupposto il fatto di avere a disposizione oltre che le specifiche di test anche il dettaglio dei metodi con cui la funzione è stata implementata.
Per concretizzare il concetto pensiamo ad una scatola trasparente… possiamo non solo vederne il contenuto e verificare se esso sia quello desiderato, ma percependo ne anche gli ingombri possiamo intuire i mezzi con cui il contenuto vi sia stato posizionato.

Nella ingegneria del software questi mezzi possono essere di tre tipi differenti
– tipologia di base dati utilizzata
– utilizzo di librerie dinamiche
– utilizzo di tecniche di incapsulamento

Al fine di verificare le funzionalità con un approccio white è determinante conoscere i tre mezzi sopra indicati, anche se non necessariamente dal punto di vista della compilazione del codice. Cerchiamo di spiegare brevemente cosa intendiamo.

Le basi dati comunemente utilizzate sono per la stragrande maggioranza due: SQL ed Oracle. Entrambe rientrano nella categoria dei database relazionali,in cui le informazioni sono organizzate in insiemi di elementi chiamati “tabelle”; ogni tabella ha con le altre dei
collegamenti ( c.d. relazioni) e possiede una chiave ossia un numero di campi di riferimento attraverso cui le informazioni sono organizzate. I dati sono memorizzati attraverso la chiave che garantisce l’assenza di duplicazioni.
Uno degli aspetti importanti che il tester verifica è proprio l’ assenza di situazioni che possano innescare chiavi duplicate: ciò può essere realizzato mediante utilizzo di tool automatici (che forzano volutamente il dato e consentono di controllare la reazione del programma) oppure mediante operatività manuali ( si pensi ad esempio ad una griglia che visualizza valori e permette di inserire e cancellare righe..una non corretta gestione degli eventi potrebbe generare la possibilità di avere righe uguali che all’atto del salvataggio restituiscono un run time errore di chiave doppia).

In un’ottica white box altro elemento utile per poter verificare al meglio l’applicazione è la conoscenza del linguaggio T-SQL e l’uso del profiling SQL. Dedicheremo a questi strumenti un articolo specifico: ora precisiamo brevemente che attraverso il loro utilizzo è possibile in modo rapido e mirato ottenere informazioni preziose per ponderare se i dati sono stati organizzati in modo coerente rispetto alle specifiche definite.

Una seconda famiglia di strumenti usati per garantire il funzionamento di un’applicazione è rappresentata dalle librerie dinamiche ( in gergo tecnico DLL dinamic link library). Esse, soprattutto in applicazioni moderne disponibili in cloud oppure in un contesto mobile,
consentono un doppio vantaggio.

– Accentrare il codice di programmazione in un unico punto permettendo di evitare ridondanze

– Permettere il semplice ‘richiamo’ della libreria da parte dell’eseguibile che lancia
fisicamente la funzione oggetto di test.

In tal modo non solo si ottengono funzionalità veloci ed efficienti ( si pensi ad eventuali calcoli su grosse moli di dati oppure a caricamenti in memoria di una struttura dati da usare per popolare una griglia a video) ,ma anche e soprattutto efficientamenti a livello di organizzazione delle informazioni che possono essere adattate in modo molto rapido,rispetto alle tradizionali forme di stesura del codice, ad eventuali cambiamenti dovuti all’evoluzione delle specifiche o a nuove richieste dell’ utilizzatore finale. Le DLL infine possono essere usate sia per gestire aspetti legati alla presentazione dei dati ( CD librerie di presentazione) sia per aspetti di calcolo o caricamento ( CD librerie logiche).

Un ultima tematica che andiamo a precisare nel modello di test white box è rappresentata dalle tecniche di incapsulamento. Conoscere l’esistenza di queste tecniche consente al tester una valutazione esatta degli effetti che una correzione effettuata a livello di sviluppo possa avere sulla funzione oggetto di verifica oppure su altri moduli di contorno.

Per incapsulamento si intende un insieme di metodi di programmazione attraverso cui le logiche di funzionamento comuni al programma vengono rese trasversali rispetto alle singole interfacce usate per l’ operatività utente ossia inserite in uno strato costruttivo parallelo e indipendente a esse.
Ciò ha principalmente due vantaggi:

1) minimizzare gli effetti negativi in seguito a correzione di anomalie riscontrate ovvero garantire che se ce ne fossero siano limitate solo ad un particolare metodo o funzione e non all’intero programma.

2) rendere più snella e facilmente mantenibile la redazione e compilazione di codice di programmazione che implementa la funzionalità in fase di verifica.

Concludiamo l’articolo con alcune considerazioni sulla diffusione del white box e sulle sue potenzialità.
Un test a scatola bianca è particolarmente utile in caso di applicazioni create con programmazione ad oggetti o che vengono installate in ambiente cloud o per applicazione mobili. In tali contesti infatti la complessità di costruzione delle funzionalità presuppone dei controlli specifici che si possono riferire anche a singole sotto funzioni. Un esame specifico della funzionalità quindi non può trascendere dall’uso di query di indagine sui dati o di valutazione di non regressione: solo in tal modo infatti il tester può garantire e
certificare l’esito dei controlli effettuati.

Sicuramente il white box testing è un approccio moderno e strutturato che ha come prerequisito una ampia conoscenza di tecniche di indagine non convenzionali e che per alcuni versi spinge il tester ad acquisire competenze tecniche o per lo meno a ragionare con la mentalità di uno sviluppatore. Per i puristi del test ciò potrebbe sembrare un tradimento o un’ esagerazione perché stravolge il
concetto di validazione in senso stretto. In realtà però conoscere la metodologia white box e applicarla quotidianamente e’ un’evoluzione e non un passo indietro: consente di essere flessibili e aperti a nuovi approcci e soprattutto
permette una valutazione esatta dei limiti e delle anomalie di programma.

E la missione del tester non dimentichiamolo e’ proprio questa.. Andare a caccia di errori, stanarli con precisione e contribuire a rendere il programma stabile e robusto. Tutto questo con una sana e professionale testardaggine che a molti può sembrare
supponenza ma credetemi non lo è…