Oráculo de prueba (resultado esperado): definición, ejemplo y equivalente en inglés
Un oráculo de prueba es lo que aporta el resultado esperado de una prueba: aquello con lo que se compara el resultado real. Para una regla booleana, el oráculo es la regla pretendida, y su tabla de verdad da el resultado esperado para cada entrada.
Toda prueba tiene dos mitades, una entrada y un resultado esperado, y el oráculo es la fuente de la segunda. Puede ser una especificación, una implementación de referencia, un juicio humano registrado una vez o una versión anterior del mismo programa. El problema del oráculo es que un oráculo puede ser erróneo, incompleto o caro; cuando el oráculo es una fórmula, como ocurre con las reglas booleanas, al menos es completo y barato, y compararlo con la implementación en todas las filas convierte la prueba en una comprobación de equivalencia.
El artefacto de esta página pone el oráculo intended = (member OR invited) AND NOT banned junto a la implementación implemented = member OR (invited AND NOT banned), un paréntesis mal colocado que supera las pruebas informales. Las dos columnas difieren en las filas 5 y 7, y la comprobación de equivalencia se viola con el contraejemplo member = TRUE, invited = FALSE, banned = TRUE: el oráculo dice FALSE, un socio vetado se rechaza, mientras que la implementación dice TRUE. La fila 7, donde el socio además está invitado, es el otro caso; en las seis filas restantes las dos coinciden.
Los oráculos son lo que da sentido a una prueba; una prueba sin oráculo es una prueba de humo que solo comprueba que nada se rompió. Al revisar reglas, escribir la regla pretendida aparte del código, en palabras llanas o como fórmula, es el paso que crea un oráculo. El término se confunde con la propia prueba, con el patrón de oro (un oráculo hecho de salidas registradas) y con el producto de bases de datos del mismo nombre.
Ejemplo
intended := (member OR invited) AND NOT banned · salidaimplemented := member OR (invited AND NOT banned) · salida
Comprobaciones exactas
Tabla de verdad (8 filas)
| # | member | invited | banned | intended | implemented |
|---|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | VERDADERO | FALSO | FALSO |
| 2 | FALSO | VERDADERO | FALSO | VERDADERO | VERDADERO |
| 3 | FALSO | VERDADERO | VERDADERO | FALSO | FALSO |
| 4 | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO |
| 5 | VERDADERO | FALSO | VERDADERO | FALSO | VERDADERO |
| 6 | VERDADERO | VERDADERO | FALSO | VERDADERO | VERDADERO |
| 7 | VERDADERO | VERDADERO | VERDADERO | FALSO | VERDADERO |
Lectura en lenguaje claro
Principianteintended es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos)
2. banned es falso
En todos los demás casos, intended es falso.
Sobre los operadores:
- AND (Y) solo es verdadero cuando todas sus partes son verdaderas.
- OR (O) es inclusivo: es verdadero en cuanto al menos una parte es verdadera, también cuando lo son varias.
- NOT (NO) invierte un valor: lo verdadero pasa a ser falso y lo falso, verdadero.
Intermediointended es verdadero exactamente cuando se cumplen las dos condiciones siguientes:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos)
2. banned es falso
En todos los demás casos, intended es falso.
Avanzadointended es verdadero exactamente cuando se cumplen las dos condiciones siguientes [conjunción ∧]:
1. al menos uno entre member e invited es verdadero (pueden serlo ambos) [disyunción inclusiva ∨]
2. banned es falso [negación ¬]
En todos los demás casos, intended es falso.
Notación formal: (member ∨ invited) ∧ ¬banned
El error habitual
Usar la implementación como su propio oráculo. Registrar las salidas de implemented y probar contra ellas pasaría en las filas 5 y 7 y consagraría el error. El oráculo debe venir de algún sitio distinto del código bajo prueba, como hace aquí intended.
Preguntas
¿Y si el oráculo está equivocado?
Entonces las pruebas imponen la regla equivocada, y por eso el oráculo debería revisarlo alguien que conozca el dominio y no el código. La lectura en lenguaje llano del motor ayuda: convierte la fórmula en una frase que quien no programa puede confirmar o rechazar.
Relacionado
Véase también
- Prueba de regresión: definición, ejemplo y equivalente en inglés
- Contraejemplo: definición, ejemplo y equivalente en inglés
- Derivar casos de prueba de una tabla de verdad sin probar todas las filas
- Comprobador de equivalencia lógica: dos expresiones, veredicto exacto, contraejemplo
- Lista de revisión de reglas de decisión (para analistas y revisores)
- Pruebas de mutación: definición, ejemplo y equivalente en inglés
Glosario
Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.