Confronto tra tecniche di verifica e convalida
Numerosi studi hanno provato a confrontare l’efficacia di varie tecniche di testing, con particolare riferimento a testing strutturale, testing funzionale e software inspection. Un articolo del 2004 riporta in una tabella di confronto i risultati di alcuni di questi studi, considerando come metrica di valutazione delle tecniche di verifica e convalida la percentuale media di difetti individuati.
Come si può notare, a seconda dello studio appare più efficace l’una o l’altra tecnica; inoltre, la somma delle percentuali per ogni riga non è 100%, il che significa che alcuni difetti non possono essere rilevati da nessuna delle tre tecniche.
Nonostante ciò, si possono fare una serie di osservazioni: innanzitutto, l’efficacia di una o dell’altra tecnica dipende dalla tipologia del progetto su cui viene esercitata.
Inoltre, non è detto che tecniche diverse trovino gli stessi errori: l’ispezione potrebbe aver trovato una certa tipologia di errore mentre il testing funzionale un’altra; le diverse tecniche controllano infatti diversamente aspetti differenti del programma, osservandolo da diversi punti di vista.
Confrontare le varie tecniche non è dunque necessariamente una perdita di tempo, mentre lo è sicuramente confrontare solo i numeri, come la varietà di risultati diversi ottenuti dai parte di studi diversi. Tra l’altro, dal riassunto della tabella si perdono informazioni sulle modalità di rilevazione dei dati, attribuendole ad espressioni generiche (come comunemente, in media, progetti junior, …).
In conclusione, non c’è una risposta semplice al confronto e non esiste una tecnica sempre migliore rispetto alle altre.
Combinare le tecniche
Una domanda che sorge spontanea è chiedersi quindi cosa può succedere se si combinano insieme diverse tecniche di verifica e convalida.
Diversi studi mostrano che applicando tutte e quattro le tecniche qui descritte — anche se solo in modo superficiale — il risultato è sicuramente più performante delle tecniche applicate singolarmente.
Anche se una certa percentuale di errori può essere rilevata senza alcuna tecnica formale di verifica e convalida, semplicemente usando il software, si può infatti notare ciascuna tecnica presa singolarmente migliora tale percentuale e che la combinazione di tecniche diverse la incrementa ulteriormente. Questo perché tendenzialmente ogni tecnica controlla aspetti differenti e le rispettive aree di controllo si sovrappongono poco: è dunque conveniente applicare superficialmente ciascuna tecnica piuttosto che una sola tecnica in modo molto approfondito.
In conclusione, come afferma la Legge di Hetzel-Meyer (L20):
Una combinazione di diversi metodi di V/C supera qualsiasi metodo singolo.