Artículo
· 2 jun, 2025 Lectura de 5 min

Validación estructural adaptativa de esquemas JSON expuestos desde InterSystems IRIS: un enfoque hacia pruebas más resilientesContestant

Objetivo

Explorar un enfoque de validación estructural adaptativa para mantener estables las pruebas automatizadas frente a cambios en la estructura del JSON generado a partir de datos expuestos desde una base de datos InterSystems IRIS.

Se busca minimizar falsos positivos ante cambios no críticos, siempre que la respuesta siga siendo coherente con la estructura real de la base. En estos casos, la ejecución continúa y se deja registro del evento en un archivo estructurado, que permite trazabilidad y análisis evolutivo.

Además de validar la idea central, este proyecto abre camino a posibles extensiones técnicas, como la validación dinámica contra el esquema real de la base, el seguimiento histórico de cambios estructurales, y el uso de técnicas de machine learning para distinguir entre ajustes legítimos y errores funcionales, comprendiendo no solo el cambio, sino también su intención.

Desafíos actuales

Diseñar una Arquitectura de Automatización de Pruebas sólida es fundamental para garantizar la calidad en entornos donde las APIs son el nexo entre sistemas.

Un desafío que enfrentan los equipos de testing es la fragilidad de las pruebas automatizadas ante cambios menores en la estructura del JSON que devuelven los endpoints.

Estos cambios, aunque no afecten el comportamiento funcional de la API, pueden romper los tests al no coincidir con las estructuras esperadas, lo que genera:

  • Tiempo y esfuerzo en mantenimiento.
  • Interrupciones de pipelines CI/CD.
  • Dificultad para identificar defectos reales.
  • Desconfianza en la suite de regresión.

La fragilidad estructural no es un detalle técnico: es un obstáculo estratégico, el avance es hacia resiliencia estructural, con pruebas que evolucionen con el sistema, no que se quiebren con él.

Enfoque propuesto

Frente a estos desafíos, se propone una estrategia de validación estructural adaptativa, que incorpora una capa intermedia entre la respuesta de la API y la lógica del test, capaz de detectar diferencias estructurales y responder de manera flexible según el tipo de cambio.

Cuando se detecta una discrepancia entre el esquema recibido y el esperado, el sistema debería poder:

  1. Identificar la diferencia estructural (claves nuevas o faltantes).
  2. Validar si el cambio es coherente con la evolución del modelo de datos, utilizando una fuente confiable como la base de datos real.
  3. Clasificar según reglas predefinidas
    • Si es aceptable, continuar la ejecución y registrar un warning.
    • Si es crítico, detener la prueba.
  4. Dejar registro del evento en un archivo .ndjson, lo que habilita posibles evoluciones:
    • Dashboards de trazabilidad.
    • Entrenamiento de modelos para anticipar cambios.
    • Pull requests automáticos para adaptar tests validados.

MVP

Se desarrolló un MVP funcional que implementa este enfoque y permite validar la adaptación estructural ante cambios en la respuesta JSON generada desde InterSystems IRIS.

Componentes principales

  • Base de datos: InterSystems IRIS Community Edition ejecutada en contenedor Docker.
  • Exposición de datos: Clase ObjectScript que expone información como JSON.
  • Cliente de validacion: Python 3.10 con el módulo irisnative.
  • Pruebas: Pytest
  • Lógica de validación:
    • Modo estricto: falla ante cualquier discrepancia.
    • Modo adaptativo: acepta campos adicionales no esperados y emite un warning si no faltan campos críticos.
  • Trazabilidad: eventos estructurales detectados se almacenan en formato .ndjson.
  • IDE: Visual Studio Code (Ubuntu)
  • Repositorio: https://github.com/danielaeche/resilient-api-test.git

Limitación del MVP

La validación estructural no se hace contra el esquema activo de la base en tiempo real, sino contra una clase intermediaria. Esto significa que si la base cambia, se debe actualizar manualmente la clase.

Escalar esta solución requiere usar la Python DB API de InterSystems para consultar directamente la estructura actual de la base de datos, permitiendo una validación verdaderamente dinámica y autónoma, sin necesidad de actualizar manualmente la clase que expone los datos.

Ejecución de prueba

  1. Estructura esperada: Se entrega este JSON desde IRIS:
[
  { "id": 1, "name": "Virginia", "age": 38 },
  { "id": 2, "name": "Daniela", "age": 17 }
]
  • Test estricto (test_api_strict.py) : ✅ Resultado: la prueba pasa.
  1. Cambio estructural simulado : Se agrega un campo nuevo (coverage):
[
  { "id": 1, "name": "Virginia", "age": 38, "coverage": "premium" },
  { "id": 2, "name": "Daniela", "age": 17, "coverage": "basic" }
]
  • Test estricto: 🛑 Resultado: la prueba falla por estructura inesperada.
  • Test adaptativo (test_api_adaptive.py) : ⚠️ Resultado: la prueba pasa con warning[WARNING] Nuevos campos detectados: {'coverage'}

Conclusión

Este artículo propone un enfoque frente a un problema: cómo evitar que pequeños cambios estructurales rompan pruebas que no deberían fallar.

El MVP demuestra que es posible incorporar tolerancia estructural sin perder capacidad de detección. La solución es escalable y propone una evolución hacia modelos donde la calidad de la prueba no dependa exclusivamente del script, sino que sea respaldada por una capa de validación contextual que no solo detecta un cambio, sino que evalúa su impacto antes de decidir.

También plantea una dirección de valor: mecanismos resilientes que puedan integrarse de forma nativa en herramientas como las que InterSystems desarrolla, como parte de una estrategia de calidad continua para entornos donde el cambio es constante.

El futuro de la automatización no está en tener más scripts que se ejecuten una y otra vez, sino en construir pruebas capaces de entender por qué fallan los sistemas, incluso cuando parecen funcionar.

Automatizar con resiliencia es evitar que el esfuerzo se consuma en lo repetible, y entregarle a quienes diseñan la calidad el espacio para identificar riesgos emergentes, desafiar lo previsto y diseñar validaciones con sentido estratégico.

Comentarios (0)1
Inicie sesión o regístrese para continuar