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?).
↑Miller, Edward; and Howden, William E.; Software Testing and Validation Techniques, Long Beach, CA: IEEE Computer Society Press, 1978 (first edition), pp. 16-19
↑Weyuker, Elaine J.; "The Oracle Assumption of Program Testing", inProceedings of the 13th International Conference on System Sciences (ICSS), Honolulu, HI, January 1980, pp. 44-49
12Jalote, Pankaj;An Integrated Approach to Software Engineering, Springer/Birkhäuser, 2005, ISBN 0-387-20881-X
↑Meyer, Bertrand; et al.; "Programs that Test Themselves", IEEE Computer, 42:9 (September 2009), pp. 46-55
↑Dennis K. Peters e David L. Parnas, Generating a Test Oracle from Program Documentation (PDF), in Proceedings of the 1994 International Symposium on Software Testing and Analysis, ISSTA, ACM Press, pp.58-65.
Robert V. Binder, (1999). "Chapter 18 - Oracles" in Testing Object-Oriented Systems: Models, Patterns, and Tools, Addison-Wesley Professional, 7 November 1999, ISBN 978-0-201-80938-1
Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica