Le differenze principali tra Testing, Debugging e Defensive Programming

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.

Le differenze principali tra Testing, Debugging e Defensive Programming

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.

  1. Il Testing è un modo per validare la correttezza del programma attraverso la scrittura di test case appositi ad opera dei tester software.
  2. Il Debugging è il processo di trovare e rimuovere errori dal software (in genere effettuato dallo sviluppatore stesso).
  3. Il Defensive programming consiste, infine, nell’inserire dentro il programma controlli per rivelare errori e rende molto più facile il debugging del software.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *