Software testing: Caratteristiche e utilità dell’Oracolo del Test

Software testing: Caratteristiche e utilità dell’Oracolo del Test

In molti casi, in particolar modo quando i test sono progettati seguendo criteri strutturali, non si hanno indicazioni dirette circa i risultati che si devono attendere dall’esecuzione del test. Manca cioè un elemento di riscontro per valutare la correttezza del software sottoposto a test. Con il termine oracolo del testing software si identifica un metodo, spesso applicato da un agente automatico, per generare i risultati corretti da usare come pietra di paragone durante il test. In letteratura e nel linguaggio comune, con oracolo si intende anche l’insieme dei dati usati per il confronto. Non esiste una soluzione generale al problema di procurarsi un oracolo. Nel seguito presentiamo alcune delle soluzioni più comunemente adottate in pratica.

Software testing: Caratteristiche e utilità dell'Oracolo del Test

Analisi delle specifiche

Fissati i dati di test in ingresso al programma si possono desumere i risultati attesi attraverso l’analisi delle sue specifiche. In teoria queste contengono una descrizione completa e formale della semantica del programma, è quindi possibile applicarle ai dati in ingresso per ricavare il risultato che si attende dalla sua esecuzione. Questa soluzione trova una naturale applicazione nei casi in cui il linguaggio di specifica sia eseguibile.

Inversione della funzione

Quando la funzionalità espressa dal programma da controllare è invertibile si realizza un programma che calcola l’inversa. I dati che si ottengono applicando l’inversa ai risultati del test sono confrontati con rispettivi dati d’ingresso. Questa soluzione è applicabile raramente, in generale quando il software in esame è di tipo matematico: in molti di questi casi non solo le funzionalità sono invertibili, ma il programma che calcola l’inversa fa già parte del software in via di sviluppo, annullando il costo della realizzazione dell’oracolo. Una limitazione intrinseca di questo metodo è che, quando il confronto rileva un malfunzionamento, esso può essere tanto nel programma che calcola la funzionalità diretta che in quello che calcola l’inversa. Inoltre, l’approssimazione dei dati numerici nei calcoli può essere un ostacolo all’applicabilità del metodo. Il campo di applicazione di questo metodo può essere allargato evitando di calcolare la vera inversa, quando ciò risulta troppo costoso o impossibile, limitandosi a una pseudo-inversa i cui risultati sono confrontati con i dati d’ingresso del test mediante tecniche di plausibilità.

Plausibilità dei risultati

La plausibilità dei risultati E’ una tecnica di semplificazione sui dati d’uscita. A partire dalle specifiche si ricavano dei vincoli di plausibilità fra i dati d’ingresso e quelli di uscita. I risultati dei test sono quindi analizzati non a fronte del risultato corretto, ma in base a questi vincoli: più stretti sono e più bassa è la probabilità di non riconoscere un malfunzionamento accettando per buoni dei dati di uscita non corretti.

Versioni multiple indipendenti

Le versioni multiple indipendenti è una soluzione, nota anche con il termine inglese back-to-back, prevede lo sviluppo indipendente di due, o anche più, copie funzionalmente identiche del programma da usare vicendevolmente come oracolo. A meno di casi particolari, ragioni di costo sconsigliano l’applicazione diretta di questa soluzione, che soffre anche del limite di non fornire nessuna garanzia sull’oracolo: in caso di discordanza dei risultati sono necessari altri controlli, e un altro oracolo, per stabilire quale dei programmi usati per il test sia quello corretto.

Versioni precedenti

Questo è di fatto un sottocaso del back-to-back in cui il vincolo di indipendenza è rilasciato e si considera come oracolo una precedente versione dello stesso programma.

Programmi esistenti

Ancora una particolarizzazione del back-to-back in cui, invece di prevedere esplicitamente lo sviluppo di copie funzionalmente identiche, si cerca di recuperare software già realizzato e provato, ad esempio funzionante su macchine o sistemi operativi diversi. È un tipo di oracolo conveniente quando il software prodotto è
un porting o la reingegnerizzazione di un sistema già esistente.

Come avviene la scelta dell’oracolo di test?

La scelta dell’oracolo dipende in gran parte dal tipo di software oggetto del test e dalla situazione propria di un particolare processo di sviluppo. Nella pratica si assiste in generale all’uso di soluzioni basate sull’analisi delle specifiche, nella maggior parte dei casi senza il supporto dell’esecuzione automatica, vista l’ancor rara applicazione di linguaggi di specifica formali. Le soluzioni back-to-back sono usate quando, essendo possibile adottare come oracolo versioni precedenti o software presistente, la loro applicazione non grava sull’economia del progetto.
Per ridurre i costi dei controlli sono spesso applicate le tecniche di semplificazione dell’oracolo. La loro applicazione diminuisce però, talvolta anche in modo sensibile, l’efficacia dei test. La scelta dell’oracolo, e in particolare il ricorso a soluzioni semplificative, devono essere valutate coerentemente con i criteri adottati nella realizzazione dei test: è inutile applicare criteri sofisticati per poi ridurre l’efficacia dei test con la scelta di oracoli poco affidabili.

Precedente Il Test Automation: L'automazione dei test funzionali Successivo Project Management: I vincoli di progetto (tempo, costi e scopo)

Lascia un commento

*