$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Arquitectura del sistema y resumen del prototipo:
Esta investigación presenta un sistema prototipo mejorado y adaptable, PreventivtativeTestPro, que ejemplifica un enfoque proactivo de ingeniería de calidad utilizando datos de observabilidad y grandes modelos de lenguaje (LLMs) para mejorar aún más la resolución de problemas de apoyo. El sistema busca abordar los problemas modernos de entrega de software automatizando la detección de anomalías, el análisis de causas raíz y la ejecución y desarrollo inteligente de casos de prueba para cobertura no abordada utilizando monitorización sintética, datos de observabilidad e integración GenAI. La arquitectura es modular y consta de tres componentes principales: Collector y Analizador de Datos de Observabilidad, Capa de Inteligencia Impulsada por GenAI y Motor de Orquestación y Ejecución de Pruebas, tal como se especifica en detalle en la Figura 1.

Figura 1: La entrada-salida del sistema propuesto. Se proporcionan datos de observabilidad, junto con la salida del observador, el repositorio de pruebas y las reglas de mapeo, como entrada junto con los bancos de pruebas BHRAMARI, que construyen bancos de pruebas impulsados por IA para mejorar la robustez de los casos de prueba. El sistema propuesto genera instrumentación de anomalías, recomendaciones generadas por IA, ejecución de casos de prueba pertinentes, documentación e informes, así como la identificación y creación de casos de prueba ausentes. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
La Figura 2 muestra la arquitectura del enfoque sugerido. La figura ilustra la entrada, procesamiento y salida del sistema. También ofrece una descripción completa del sistema, que luego se traduce en una explicación para mejorar la comprensión de las características subyacentes.

Figura 2: Arquitectura del sistema propuesto con colector y analizador de datos de observabilidad, capa de inteligencia impulsada por GenAI y motor de orquestación y ejecución de pruebas. Esta figura ilustra la arquitectura interna del sistema PreventivtativeTestPro, segmentada en tres capas: la Capa Collector de Observabilidad agrega datos de múltiples fuentes, incluyendo eventos del navegador, registros, archivos HAR, registros de backend, métricas y trazas. La Capa de Inteligencia de IA Generativa utiliza estos datos para realizar análisis de causa raíz, priorizar anomalías y crear de forma autónoma casos de prueba (UI, API, manual) y documentación mediante el uso de LLMs. El módulo BHARAMARI también establece nuevos bancos de pruebas. El motor de Orquestación y Ejecución de Pruebas mapea las discrepancias a los casos de prueba, ejecuta pruebas de forma simultánea, evalúa resultados e informa a los equipos de ingeniería, sistemas de tickets y paneles para la supervisión y monitorización de resolución en tiempo real. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
El módulo Observability Data Collector and Analyzer funciona como un sistema sensorial de la plataforma, recopilando continuamente datos de la aplicación bajo evaluación a gran escala, con múltiples aspectos. En el caso de la monitorización frontal, se despliegan agentes sintéticos de monitorización para monitorizar eventos en el lado del navegador, como estructuras del Modelo de Objetos de Documento (DOM), acciones del usuario, como clics, flotadores y entradas, y archivos HAR que capturan información de solicitud y respuesta de red y API. PreventivaTestPro también está integrada con OBSERVER para aumentar la capacidad de los navegadores. La monitorización de backend se dirige al análisis de logs, en el que se solicita y procesa información de observabilidad del lado del servidor, que incluye registros de aplicación, mensajes de errores, informativos y de depuración, registros de rastreo de pila y excepciones, métricas de rendimiento como los tiempos de respuesta y rastreo utilizando tecnologías como OpenTelemetry o New Relic. El sistema funcionará con agentes sintéticos que simulan el tráfico y la interacción de los usuarios, y los colectores de registros condensan los datos entrantes en tiempo real. Los datos recopilados se normalizan entonces a formatos estructurados y se entregan a otras unidades de procesamiento para su análisis posterior.
La esencia de PreventivtativeTestPro es una Capa de Inteligencia Impulsada por GenAI que utiliza Grandes Modelos de Lenguaje (LLMs) como GPT para leer y analizar datos de observabilidad, contextualizar y generar respuestas. El módulo realiza el análisis de causa raíz: el proceso de interpretar registros y trazas de causa raíz para explicar fallos técnicos en términos que puedan entenderse, como una NullPointerException en una línea de código concreta y la causa asumida del problema, como una variable no inicializada. En la generación de casos de prueba, el sistema utiliza autopruebas que se generan convirtiendo patrones de excepción o una secuencia de eventos en scripts de prueba ejecutables, por ejemplo, pruebas de Selenium o API, pero también produce procedimientos de prueba legibles por humanos que el personal de Aseguramiento de Calidad puede ejecutar. Las pruebas de API han evolucionado mediante la transformación de HAR y los registros de trazado en una secuencia de solicitudes API con las aserciones esperadas, y todos los casos de prueba generados se mejoran aún más con bancos de pruebas efectivos al integrarse con BHRAMARI. Se sugieren mejoras adicionales, mejoras en la cobertura de pruebas y oportunidades de integración CI/CD en el sistema de recomendación, dependiendo del comportamiento analizado del sistema. El Motor de IA utiliza datos estructurados de observabilidad mediante ingeniería de prompts y enriquecimiento de contexto para presentar el contexto de los registros con plantillas de prompts que pasan consultas estructuradas al LLM, y finalmente genera resultados en forma funcional, como fragmentos de código, especificaciones de casos de prueba y documentación en lenguaje natural.
El módulo de Orquestación y Ejecución de Pruebas gestiona la prioridad de pruebas, la programación y la ejecución, permitiendo la validación automatizada basada en detalles de cobertura de cambios de código, etiquetas y mapeo de anomalías. El mapeo y selección de la prueba implica asociar anomalías en mapas o patrones de instrumentación con casos de prueba conocidos utilizando un Motor de Reglas de Mapeo, y luego ejecutar los casos de prueba conforme al mapeo establecido. Las características de la ejecución concurrente de pruebas permiten ejecutar numerosos tipos de pruebas simultáneamente, como pruebas funcionales, de rendimiento o de seguridad en diferentes entornos y coordinar el uso de Selenium, JMeter y ZAP como instrumentos en las canalizaciones de automatización. La implementación del bucle de retroalimentación asegura que los resultados de las ejecuciones se registren y, en caso de fallo de prueba, los cambios se comunican a los sistemas de soporte, incluyendo Jira y Azure DevOps, para rastrearlos y resolverlos.
Hipótesis:
H1 (Eficiencia Operativa): Se plantea que la fusión de datos de observabilidad e inteligencia impulsada por IA mejorará las métricas operativas, especialmente al disminuir el tiempo medio de resolución (H1a), tiempo medio de análisis (H1b), tiempo medio de detección de problemas de producción (H1c) y tiempo medio para desplegar correcciones en producción (H1d). Estos cambios deberían facilitar el cumplimiento de los requisitos del Acuerdo de Nivel de Servicio (SLA) (H1e) al acelerar la detección, el análisis y el despliegue, manteniendo al mínimo el tiempo de inactividad del sistema.
H2 (Efectividad de las pruebas): También se cree que la efectividad de las pruebas por software mejorará con una mayor cobertura de pruebas (H2a), la ejecución de casos de prueba en paralelo (H2b) y la priorización inteligente de pruebas (H2c). También se espera que las recomendaciones generadas por IA (H2d) ayuden tanto en las pruebas como en los flujos de trabajo operativos. Esto ayudará a detectar errores más rápido, acelerar los bucles de retroalimentación y apoyar prácticas de aseguramiento de la calidad que sean preventivas y duraderas.
Alcance y público:
Este prototipo muestra el diseño general del sistema, la idea principal y cómo configurar y ejecutar el marco PreventivatTestPro paso a paso. También detalla cómo configurar los bancos de pruebas/entradas de muestra adecuados y da consejos para solucionar problemas. El contenido está dirigido a ingenieros de calidad de software que ya conocen lo básico de Java y quieren aprender a utilizar pruebas preventivas para hacer el software más fiable y eficiente.
Configuración del entorno:
El Archivo Suplementario 1 contiene una descripción paso a paso y un programa necesario para comunicarse con PreventivatTestPro. Esto incluye instrucciones para instalar el entorno necesario, cómo iniciar y detener los servicios de la herramienta, y una explicación clara del uso fundamental de la herramienta. Para obtener una documentación más detallada, junto con instrucciones sobre cómo usar herramientas avanzadas, instrucciones de configuración y otros detalles organizativos, consulte las fuentes oficiales de GitHub dedicadas al proyecto: la página Wiki específica en la ubicación del https://github.com/sohambpatel/PreventativeTests/wiki y el README principal en https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Ejemplos de entradas:
Los archivos de entrada de ejemplo se pueden encontrar en el repositorio de GitHub: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. El framework puede ejecutar los casos de prueba preestablecidos y conjuntos de datos de estos archivos de inmediato. Se utilizan como entradas de referencia para comprobar la configuración del entorno y obtener los mismos resultados que se describen en este protocolo.
Resultados de ejemplo:
El repositorio de GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) contiene muestras concretas de los datos de salida del marco de pruebas preventivas en formato bruto. A través de estos archivos, los usuarios pueden ver directamente el diseño y los detalles de los informes y métricas generados, demostrando los resultados que la herramienta ha logrado durante su funcionamiento. Esta guía es relevante para conocer la cadena de datos y confirmar el comportamiento anticipado del marco en la recreación del proceso experimental.
Prototipo de ejecución:
Esta sección ofrece una guía detallada y paso a paso sobre cómo utilizar el framework PreventivtativeTestPro. Para ayudar a los usuarios a reproducir el flujo de trabajo, cada etapa se describe en orden. Esta sección presenta los pasos de ejecución en un formato estructurado para facilitar la reproducción de resultados, señalar puntos de control importantes y asegurar que el marco PreventivatTestPro pueda usarse de forma consistente en diferentes entornos experimentales u operativos.
En este paso, la interfaz gráfica de PreventivatativeTestPro puede utilizarse para elegir el mejor flujo de trabajo de pruebas preventivas. La Figura 3 muestra cinco opciones, cada una de las cuales representa un paso diferente en el proceso de pruebas: ejecutar pruebas en paralelo, crear el conjunto de pruebas a partir del seguimiento de la salida priorizando casos existentes, crear casos manuales, crear casos automatizados y encontrar la causa raíz. Cuando el usuario toma una decisión, comienza el flujo de trabajo designado. Después de eso, se pueden añadir modos adicionales (como la generación de casos de prueba impulsada por IA o el análisis de causa raíz) en etapas posteriores. Esta interfaz bien organizada ofrece una forma de realizar estudios de pruebas preventivas que pueden repetirse y descomponerse en partes más pequeñas.

Figura 3: Interfaz de usuario 1 del sistema. Esta figura muestra la interfaz de usuario de PreventivatativeTestPro, que permite elegir entre cinco formas diferentes de realizar pruebas preventivas: 1. Prueba preventiva, ejecución paralela: inicio de pruebas, 2. Prueba preventiva, finalización del conjunto de pruebas basada en la monitorización de aplicaciones sintéticas, 3. Prueba preventiva, generación de casos de prueba manuales usando GenAI, 4. Prueba preventiva, generación de casos de prueba automatizados usando GenAI, 5. Prueba preventiva, Análisis de causa raíz usando GenAI. Solo se puede elegir una opción a la vez. El diseño modular facilita la realización de pruebas preventivas y añade la creación y diagnóstico de pruebas impulsadas por IA. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
La Figura 4 muestra la interfaz de Ejecución Paralela del framework. En este paso, el usuario introduce la URL de la aplicación que quiere probar y la ruta absoluta hacia el archivo de propiedades que contiene la configuración de configuración. Una vez configuradas las entradas, el usuario puede comenzar a ejecutar pruebas al mismo tiempo haciendo clic en el botón Iniciar Pruebas, que también monitoriza el sitio web bajo prueba y genera los registros de seguridad, rendimiento, consola y JavaScript. Se puede detener la ejecución en curso haciendo clic en el botón Detener las pruebas. El botón Obtener Recomendación permite obtener información impulsada por IA a partir de los registros registrados. Este diseño asegura que múltiples categorías de prueba (funcional, de rendimiento y de seguridad) se ejecuten simultáneamente, lo que facilita la detección de problemas más rápidamente.

Figura 4: Interfaz de usuario 2 del sistema. Esta figura muestra el modo de ejecución paralela del framework PreventivtativeTestPro. El usuario especifica la URL de la aplicación de destino y la ruta hacia un archivo de propiedades que contiene detalles de configuración. Las opciones incluyen Start Testing (para ejecutar pruebas funcionales, de seguridad y de rendimiento en paralelo y registrar los logs), Stop Testing (para detener la ejecución) y Get Recommendation (para obtener información impulsada por IA a partir de logs y métricas). Por favor, haz clic aquí para ver una versión ampliada de esta figura.
La Figura 5 muestra la interfaz de Finalización de Pruebas basada en Monitorización del framework PreventivTestPro. En este paso, el usuario establece la ruta para el archivo de salida de monitorización, la consulta de ruta JSON para obtener nodos de error o excepciones, y la ruta del repositorio de pruebas para guardar los casos creados. Una vez configuradas las entradas, el usuario puede primero obtener los nombres de la clase y el método que las acompañan y luego ordenar los casos de prueba de la tirada de prueba según la clase y el método encontrados. Este paso de priorización muestra cómo utilizar los datos de monitorización para clasificar eficazmente los casos de prueba.

Figura 5: Interfaz de usuario 3 del sistema. Esta figura muestra cómo priorizar un conjunto de pruebas en el framework PreventivatativeTestPro utilizando salidas de monitorización sintéticas. El usuario escribe la ruta hacia el archivo de salida de monitorización, la ruta JSON para obtener excepciones/errores y la ruta hacia el repositorio de pruebas (offline). Las opciones Get Class/Method Name y Get Test Cases pueden usarse para convertir anomalías de mapeo en casos de prueba que se pueden ejecutar. Esto asegura que los problemas en tiempo de ejecución se incluyan en el proceso de prueba. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
La Figura 6 muestra la interfaz de Generación Manual de Casos de Prueba de PreventivtativeTestPro. En este paso, el usuario indica al programa dónde encontrar el archivo de traza de pila que muestra la anomalía proporcionando el camino absoluto hacia el archivo de traza de pila y el camino hacia el archivo de propiedades de configuración. Una vez establecidas las entradas, se puede ejecutar la opción Generar Casos de Prueba, que convertirá la anomalía en casos de prueba manuales estructurados. Esto asegura que los errores de ejecución que ya han ocurrido antes siempre estén incluidos en el proceso de prueba. El marco facilita la creación de casos de prueba automatizando el proceso. Esto reduce el trabajo manual, mejora la cobertura de las pruebas y hace que las pruebas sean más fiables, además de evitar que el mismo problema vuelva a ocurrir. Este paso es un vínculo muy importante entre encontrar problemas y asegurarse de que la calidad sea buena antes de que ocurra.

Figura 6: interfaz de usuario 3 del sistema. Esta figura muestra la interfaz de generación de casos de prueba de PreventivtativeTestPro. Convierte las trazas de pila de anomalías en casos de prueba manuales en el Desarrollo Impulsado por Comportamiento (BDD) que pueden utilizarse. El usuario proporciona las rutas hacia el archivo de trazado de la pila y el archivo de propiedades, y luego hace clic en "Generar casos de prueba" para crear automáticamente casos que coincidan con el fallo encontrado. Esto asegura que los problemas en tiempo de ejecución siempre se conviertan en pruebas de regresión que pueden repetirse. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
La Figura 7 muestra la interfaz automatizada de generación de casos de prueba de PreventivatTestPro. En este paso, el usuario da la ruta absoluta al archivo de salida JSON de observabilidad y la ruta al archivo de configuración de la propiedad. Cuando se pulsa el botón Generar Casos de Prueba Automatizados, el sistema procesa los datos de monitorización y crea casos de prueba que pueden ejecutarse para mostrar los mismos problemas que se han detectado.

Figura 7: Interfaz de usuario 4 del sistema. Esta figura muestra la interfaz automatizada de generación de casos de prueba de PreventivTestPro, que realiza pruebas que pueden ejecutarse usando datos de observabilidad. El usuario proporciona la ruta hacia el archivo de propiedades y el archivo de salida JSON de observabilidad. Luego, hacen clic en "Generar casos de prueba automatizados" para crear scripts que puedan ejecutarse (en formato Selenium y TestNG). Por favor, haz clic aquí para ver una versión ampliada de esta figura.

Figura 8: Interfaz de usuario 5 del sistema. Esta figura muestra la interfaz de instrumentación de anomalías de PreventivtativeTestPro para el Análisis de la Causa Raíz (RCA). El usuario da la ruta al archivo de propiedades y al archivo de traza de la pila, y luego elige RCA para iniciar el análisis impulsado por IA. Este paso convierte las anomalías detectadas en conocimientos diagnósticos estructurados, lo que garantiza que los fallos puedan corregirse de forma que pueda repetirse y sea específica para cada problema. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
Solución de problemas:
La Tabla 1 muestra los puntos de solución de problemas más importantes que se refieren únicamente al código de la aplicación. Estos puntos son una forma rápida de recordar cómo solucionar problemas a nivel de código que surgen al ejecutar el framework PreventivatTestPro. La documentación del proyecto ofrece más información e instrucciones paso a paso para los lectores que deseen más ayuda para resolver problemas que afectan a la funcionalidad general de la aplicación. El recurso completo puede obtenerse en el enlace: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Esta referencia adicional garantiza que los usuarios no solo solucionen problemas de codificación, sino que también aprendan a solucionar funciones, permitiéndoles usar el framework de forma más eficaz.
| Comportamiento de error | Causa raíz | ¿Cómo arreglarlo? |
| La solicitud no está empezando | La ruta de Java no está establecida | En la variable Entorno, establece la JAVA_HOME |
| El servidor falla al arrancar | Puerto 8080/9090 en uso (específicamente mientras se usa Docker) | Actualizar el mapeo de puertos de Docker |
| El contenido GenAI es nulo | El token puede haber caducado | Genera el token y actualiza el config.properties antes de proporcionarlo como entrada |
| La instancia del navegador generada por el framework no se conecta a la red | O bien el servidor ZAP no está funcionando o las credenciales de ZAP son incorrectas | Activa el ZAP antes de ejecutar la aplicación; en caso de que esté en ejecución y el problema persista, actualiza las credenciales ZAP en config.properties antes de proporcionarlas como entrada |
Tabla 1: Errores comunes de sistema propuestos y soluciones rápidas. Esta tabla muestra los errores específicos comunes de la aplicación, la resolución de problemas y las soluciones rápidas que se pueden aplicar para solucionar los problemas.