Le differenze principali tra Testing, Debugging e Defensive Programming
Il debugging è il processo di capire e correggere gli errori. Di fatto, quando facciamo il debugging cerchiamo di restringere l’ambito del problema cercando semplici casi di test che manifestano l’errore e a cercare valori intermedi che aiutino a localizzare nel codice la regione responsabile dell’errore. Come raccogliamo evidenza sull’errore formuliamo ipotesi che tentiamo di refutare eseguendo test ulteriori. In altre parole, quando pensiamo di capire le cause dell’errore studiamo la regione appropriata del codice per trovare e correggere l’errore.
L’attività di debugging può essere facilitata se pratichiamo una programmazione “defensive” ovvero il defensive programming che consiste nell’inserire controlli nel programma per rivelare errori che potrebbero capitare.
In particolare dovremmo controllare che sia soddisfatta la clausola REQUIRES. E’ anche opportuno controllare l’invariante di rappresentazione. Questi controlli dovrebbero essere mantenuti, se possibile, nel codice di produzione.
Testing, debugging e defensive programming
Concludendo possiamo dunque esplicitare le differenze tra il Testing, il Debugging e anche il defensive programming.
- Il Testing è un modo per validare la correttezza del programma attraverso la scrittura di test case appositi ad opera dei tester software.
- Il Debugging è il processo di trovare e rimuovere errori dal software (in genere effettuato dallo sviluppatore stesso).
- Il Defensive programming consiste, infine, nell’inserire dentro il programma controlli per rivelare errori e rende molto più facile il debugging del software.