Perché controllare
Generare una soluzione e dimostrarla sono due lavori diversi.
Il generatore cerca colonne che soddisfino un obiettivo. Il verificatore prende il risultato finito e ripete i controlli senza fidarsi del percorso usato per ottenerlo. Questa separazione aiuta a scoprire errori nel codice, nei dati importati e persino nelle definizioni.
Se lo stesso errore vive sia nel generatore sia nel controllo, i due programmi possono essere perfettamente d’accordo e perfettamente sbagliati. Per questo, quando la proprietà è importante, conviene usare logica indipendente e casi di prova di cui conosciamo già la risposta.
Ogni dichiarazione misurabile dovrebbe avere un controllo ripetibile che restituisca lo stesso esito sugli stessi dati.
Controlli a strati
Prima gli errori economici. Poi quelli interessanti.
Sintassi
Ogni riga contiene numeri leggibili, separatori validi e la quantità prevista di simboli.
Struttura
I simboli appartengono alla base, non si ripetono nella colonna e le colonne duplicate vengono segnalate.
Proprietà
Si enumerano gli obiettivi e si dimostra quanti sono coperti, mostrando anche esempi dei buchi rimasti.
Controllare prima la copertura di un file con righe malformate è come misurare l’aerodinamica di una bicicletta senza ruota. Interessante, forse; prioritario, decisamente no.