Nuestro equipo está dispuesto a probar en unidades un nuevo código escrito en un proyecto en ejecución que amplía un enorme sistema Oracle existente.Cómo (unidad) prueba la aplicación de PL/SQL con uso intensivo de datos
El sistema está escrito únicamente en PL/SQL, consta de miles de tablas, cientos de paquetes de procedimientos almacenados, la mayoría de las cuales obtienen datos de tablas y/o insertan/actualizan otros datos.
Nuestra extensión no es una excepción. La mayoría de las funciones devuelven datos de una bastante compleja SELECCIÓN de estado sobre muchas tablas mutuamente vinculadas (con un poco de lógica añadida antes de devolverlas) o hacen la transformación de una estructura de datos complicada a otra (complicada de otra manera).
¿Cuál es el mejor enfoque para probar la unidad de tal código?
No hay pruebas de unidad para la base de códigos existente. Para empeorar las cosas, solo los paquetes, desencadenadores y vistas son controlados por el origen, las estructuras de tabla (incluida la información de "modificar tabla" y las transformaciones de datos necesarias se implementan a través de un canal que no sea el control de versión). No hay forma de cambiar esto dentro del alcance de nuestro proyecto.
Mantener el conjunto de datos de prueba parece imposible ya que cada semana se implementan nuevos códigos en el entorno de producción, generalmente sin aviso previo, a menudo cambiando la estructura de datos (agregue una columna aquí, elimine una).
Estaría encantado de cualquier sugerencia o referencia para ayudarnos. Algunos miembros del equipo tienden a estar cansados al descubrir cómo comenzar nuestra experiencia con pruebas unitarias. No cubre los sistemas heredados con uso intensivo de datos PL/SQL (solo aquellos proyectos greenfield "desde el libro").
Gracias por su respuesta. Soy consciente de utPLSQL, de hecho planeamos usarlo, pero mi pregunta no era mucho sobre herramientas en lugar de sobre el enfoque. Es bastante sencillo probar una función que devuelve valor en función de sus argumentos. Pero, ¿qué ocurre con un valor de retorno de función calculado a partir de una gran cantidad de datos (por ejemplo, el número de incumplimientos más largos que N en los últimos M meses en los que la cantidad vencida fue mayor que O). Preparar datos en forma de accesorios no es tan fácil, ya que cada función implica uniones de media docena de tablas y dado que "todo se relaciona con todo" en el sistema. –