miércoles, 10 de enero de 2007

Oráculos

Para tener una prueba bien diseñada es necesario conocer de antemano el resultado de su ejecución. Un oráculo es un elemento o artefacto que nos permite conocer el resultado esperado de la ejecución de una prueba. Por ejemplo:

- Otra aplicación o sistema.
- Un resultado calculado por un método manual
- Datos históricos cuya validez ya ha sido comprobada en la realidad

La utilización o no de determinados oráculos en nuestras pruebas es una decisión que debe plantearse, y resolverse en la medida de lo posible, en la fase de Estrategia, ya que pueden conllevar actividades de preparación que es necesario acometer antes del diseño y/o la ejecución de las pruebas.

En este sentido es necesario evaluar siempre el coste/beneficio de su utilización, la fiabilidad del oráculo y sus necesidades de mantenimiento.

Por ejemplo, es muy común que a la hora de verificar un sistema en el que está implicado un cálculo complejo, el equipo de pruebas se prepare como oráculo una hoja de cálculo (excel o similaar) que lo refleja. Esto conlleva, entre otros, los siguientes inconvenientes:

  • Quien prepara la hoja debe llegar a conocer con detalle toda la complejidad del cálculo. Si la información que llega a quien lo implementa en el sistema y a quien implementa el oráculo no es exactamente la misma y no se interpreta de la misma forma, los resultados de ambos pueden no ser coincidentes.
  • Pueden producirse errores al preparar la hoja de cálculo
  • Un error en las especificaciones del cálculo, producirá el mismo error en el oráculo, por lo que pasará inadvertido
  • El oráculo deberá tener al menos el mismo mantenimiento que el sistema.

Asi vemos que esta elección nos lleva a crear y mantener un oráculo de coste considerable en relación a la implementación en el sistema y cuya fiabilidad no es mucho mayor.

En estos casos, siempre que sea posible, es más aconsejable utilizar como oráculo elementos reales que se hayan procesado en el pasado utilizando ese mismo cálculo. Ya que generalmente un sistema se construirá para sustituir a un proceso manual o a otro sistema obsoleto, el propio cliente será capaz de proporcionar datos (entradas, salidas) validados en la realidad.

1 comentario:

Anónimo dijo...

Muy interesante. Y lo mejor el consejo del final. Normalmente en los artículos falta este último consejo.

Gracias.