Glossario · Fondamenti del testing
Verifica e validazione
In inglese: Verification and validation
Detto anche: V&V, verifica vs validazione, differenza tra verifica e validazione
Definizione
La verifica chiede "stiamo costruendo il prodotto nel modo giusto?" rispetto alla specifica; la validazione "stiamo costruendo il prodotto giusto?"
Verifica e validazione sono due controlli complementari, di solito descritti con la formulazione di Barry Boehm. La verifica controlla che un prodotto di lavoro sia conforme alla sua specifica: stiamo costruendo il prodotto nel modo giusto? La validazione controlla che il prodotto soddisfi le reali esigenze dei suoi utenti nell’ambiente in cui verrà usato: stiamo costruendo il prodotto giusto? Un sistema può superare completamente la verifica e fallire comunque la validazione, se la specifica era sbagliata.
Esempio
Un requisito dice: “Il pulsante di esportazione genera un file CSV con tutti gli ordini.”
- Verifica: il team revisiona il design, ispeziona il codice e verifica che cliccando su Esporta si ottenga un CSV formattato correttamente con tutti gli ordini. Funziona, quindi la verifica è superata.
- Validazione: il team finance prova a usarlo e scopre che in realtà gli servono gli ordini filtrati per mese, con le tasse in una colonna separata, e che il suo modello di foglio di calcolo si aspetta il punto e virgola come separatore. La funzionalità rispetta la specifica ma non l’esigenza. La validazione fallisce.
La differenza in sintesi
| Verifica | Validazione | |
|---|---|---|
| Domanda | Stiamo costruendo il prodotto nel modo giusto? | Stiamo costruendo il prodotto giusto? |
| Confrontata con | Requisiti, design, standard | Esigenze degli utenti e uso previsto |
| Attività tipiche | Review, walkthrough, ispezioni, analisi statica, test unit, di integrazione e di sistema | User acceptance testing, beta test, studi di usabilità, demo, feedback dalla produzione |
| Serve software funzionante? | Non sempre: anche le review sono verifica | In genere sì, oppure un prototipo realistico |
| Svolta principalmente da | Sviluppatori e QA | Utenti, clienti, product owner |
Le tecniche statiche, come le review dei requisiti e del codice, sono sempre verifica. Anche la maggior parte dei test dinamici svolti dal QA rispetto alla specifica è verifica. La validazione coinvolge le persone a cui il prodotto è destinato.
Perché è importante
I team che si concentrano solo sulla verifica possono rilasciare software che corrisponde esattamente a un requisito sbagliato. Le pratiche shift-left aiutano su entrambi i fronti: rivedere presto i criteri di accettazione con gli utenti è una validazione economica, e i test automatici a ogni commit sono una verifica continua. Nei settori regolamentati, come i dispositivi medici, V&V sono attività separate e documentate, e gli auditor si aspettano evidenze di ciascuna.