Di solito, quando scrivo software, uso test di unità per ciascuna funzione per verificare se funziona senza problemi. Tuttavia, recentemente mi sono ritrovato a scrivere alcuni software che non sono davvero suscettibili di test unitari. Ad esempio, scrivere il codice per un sistema operativo, in cui le librerie standard non sono disponibili. Un altro esempio è la scrittura dei vincoli di un problema di programmazione lineare intera, in cui nessuna soluzione può essere vista fino a quando non sono stati aggiunti tutti i vincoli. In questi casi, ho faticato a eseguire il debug del mio codice, poiché identificare quale parte del codice causa problemi è stata molto difficile. Qualche suggerimento su come trattare questi casi?
Aggiornamento: volevo scrivere la funzionalità di mappatura di pagina di un sistema operativo. Il sistema utilizzava il paging a 4 livelli. Il mio codice utilizzava una funzione per passare da un livello di tabella di pagine a quello successivo. Sebbene sapessi che l'algoritmo era corretto, il sistema non funzionava come previsto. Tuttavia, non sono stato in grado di scoprire quale funzione stava creando il problema, poiché era impossibile conoscere l'esatto output corretto di ciascuna funzione. Invece, ho dovuto fare una serie infinita di prove ed errori (qualcosa che mi ha richiesto più di una settimana) per scoprire il problema.
Grazie.