title: Oracolo (sviluppo software)
text: # Oracolo (sviluppo software)
  
  Un oracolo è un meccanismo usato nel collaudo del software e nell'ingegneria del software per determinare se un test ha avuto successo o è fallito. Viene utilizzato confrontando l'output di un sistema sotto analisi, dato in ingresso uno specifico caso di test, con il risultato che il prodotto dovrebbe fornire (determinato dall'oracolo). Il termine è stato coniato ed usato per la prima volta in Introduction to the Theory of Testing di Howden. Lavori addizionali su diversi tipi di oracoli sono stati studiati da Weyuker. Gli oracoli sono solitamente separati dai sistemi oggetto di collaudo. Le postcondizioni di un metodo vengono solitamente utilizzate come oracoli automatici nell'ambito dei test automatici di classi.
  
  Gli oracoli più comuni includono:
  
  * specifiche e documentazione,
  * altri prodotti (ad esempio, un oracolo per un programma software potrebbe essere un programma che usa un algoritmo differente per valutare la stessa espressione matematica oggetto di collaudo),
  * un oracolo euristico che fornisce risultati esatti o approssimati per un determinato insieme di dati di collaudo in ingresso,
  * un oracolo statistico che utilizza caratteristiche statistiche,
  * un oracolo consistente che confronta i risultati dell'esecuzione di un test con quelli di un altro simile,
  * un oracolo basato sui modelli che utilizza modelli simili per generare e verificare il comportamento di un sistema
  * o il giudizio di un essere umano (ad esempio, il programma sembra fornire il corretto risultato?).
  