Logotipo de Parasoft Buscar

¡Descubre GoogleTest, con certificación TÜV y la tecnología Agentic AI para pruebas de C/C++!
Obtenga los detalles »

Fondo geométrico con toques de azul y verde.
Imagen de portada del documento técnico "Cómo empezar a modernizar los sistemas heredados del gobierno"

White Paper

Cómo comenzar a modernizar los sistemas heredados del gobierno

¿Quieres una visión general antes de empezar? Comienza a continuación.

Vista general

Los sistemas heredados presentan importantes desafíos para las agencias gubernamentales. Sin equipos de desarrollo activos ni memoria institucional, estos sistemas se vuelven difíciles de mantener y actualizar, especialmente al abordar fallas de seguridad críticas.

Los equipos e información proporcionados por el gobierno suelen llegar en mal estado, lo que obliga a los contratistas a incluir riesgos en sus ofertas y aumenta los costos. La documentación, cuando existe, generalmente está desactualizada y no se ajusta a las configuraciones actuales del sistema. Esto genera importantes dificultades cuando se requiere modernización.

El reconocimiento de aplicaciones exige que desarrolladores senior, cuyo trabajo es costoso, descompongan bases de código, analicen artefactos de control de versiones y revisen registros del sistema. Sin pruebas de regresión adecuadas, cualquier cambio corre el riesgo de dañar funcionalidades críticas.

Establecer el control del proceso

Los equipos de gestión gubernamental deben establecer y controlar estrictamente tres elementos fundamentales del control de procesos:

  • Control de código fuente de la aplicación
  • Control del proceso de compilación de la aplicación
  • Control del proceso de pruebas empresariales

Estos controles, combinados con los elementos procesables de las secciones siguientes, conforman el GFE/GFI completo que el gobierno archiva entre los períodos de mantenimiento del contratista.

Para tener éxito, primero hay que comprender el sistema heredado y luego controlarlo.

Comprensión de los sistemas y aplicaciones heredados

Imagen de dos militares caminando por la sala de control informático.

Para comprender las aplicaciones heredadas es necesario conocer tres aspectos clave:

  • De qué se componen: del código subyacente y las configuraciones.
  • Cómo están construidos.
  • Cómo operan desde perspectivas funcionales y no funcionales.

Una vez que los equipos comprenden estos detalles, pueden controlar y archivar la información. Cuando nuevos contratistas intervienen para desarrollar las aplicaciones, pueden reconstruir rápidamente la aplicación junto con su ecosistema operativo.

Soluciones modernas de automatización de pruebas basadas en IA ayudar a implementar la modernización de sistemas heredados como una iniciativa manejable y rentable para las agencias gubernamentales.

Seguridad, protección y calidad del código fuente: análisis estático

Los análisis estáticos proporcionan una visión profunda del código desde las perspectivas estructural, de mantenibilidad, de seguridad y de protección. El análisis de seguridad identifica posibles vulnerabilidades en tiempo de ejecución mediante el análisis semántico de la aplicación integrada, buscando problemas de lectura/escritura de búferes, infracciones de memoria, infracciones de bases de datos y más; todo lo cual podría manifestarse como fallos catastróficos en producción.

Aplicar múltiples herramientas de análisis estático hacer cumplir los estándares de la industria, incluidos MisraOWASP, CWE y otros. Cada proveedor tiene sus propias fortalezas, por lo que usar varias herramientas proporciona una cobertura integral. Incorpore el análisis estático en procesos de CI/CD DevSecOps totalmente automatizados, recopilando informes continuos de cumplimiento y tendencias.

Imagen de un centro de control militar

A partir del código fuente, cree un conjunto de pruebas de regresión sencillas que abarquen todo el código de la aplicación. La generación de pruebas con IA crea rápidamente casos de prueba exhaustivos, aislando la funcionalidad de bajo nivel del código y preparando el terreno para la monitorización de los cambios. Esto se logra analizando las firmas de las funciones y creando automáticamente casos de prueba con condiciones extremas.

El conjunto de pruebas arrojará resultados mixtos: algunas fallarán, otras se comportarán de forma inesperada y otras pasarán. El equipo de pruebas verifica los resultados esperados y convierte las pruebas correctas en pruebas de regresión validadas.

Este conjunto de herramientas realiza un seguimiento de los nuevos resultados comparándolos con los resultados anteriores a medida que el código evoluciona, respondiendo a preguntas cruciales:

  • ¿Mi cambio provocó que la prueba fallara?
  • ¿Es necesario actualizar mi prueba en función de cómo quiero que evolucionen las funciones?

Técnicas como análisis de impacto de prueba TIA se puede aplicar durante el desarrollo activo para garantizar que el código modificado no afecte la funcionalidad existente antes de su incorporación al control de versiones. Los equipos pueden aprovechar TIA en sus pipelines de CI/CD para enfocar los esfuerzos de pruebas de regresión, asignando automáticamente los cambios de código a los casos de prueba afectados. Esto reduce la cantidad de casos de prueba de regresión que se ejecutan en cada compilación y permite ciclos de retroalimentación rápidos.

Experiencia de usuario: Pruebas de interfaz de usuario web

No todos los sistemas tienen interfaces de usuario (UI), pero muchos sí. Selenium es una herramienta fundamental para automatizar las pruebas funcionales de usuario en aplicaciones web, lo que la hace valiosa para crear conjuntos de pruebas de regresión de flujos de trabajo de usuario.

Muchas organizaciones ya tienen implementadas suites de pruebas Selenium. Para aquellas centradas en las pruebas manuales, aprovechando la generación automatizada de pruebas con Selenium—utilizando las mismas técnicas de registro de tráfico descritas anteriormente— se logra una aceleración significativa de la productividad.

Las pruebas de Selenium son conocidas por su fragilidad y dificultad de mantenimiento. Aprovechar la IA/ML para reparar automáticamente las pruebas de Selenium que fallan durante la ejecución reduce drásticamente los tiempos y el esfuerzo de mantenimiento de las pruebas que requieren una comprensión integral del sistema.

Información adicional

Mejora las pruebas con IA y aprendizaje automático.

La IA y el aprendizaje automático aceleran la generación, ejecución, mantenimiento y análisis de pruebas en todas las capas de prueba. A nivel de unidad, la IA genera automáticamente los casos de prueba faltantes. En la capa de API, la IA rastrea patrones y relaciones para ayudar a los desarrolladores a crear escenarios avanzados y modelos de parámetros del sistema, mientras que la IA automatizada permite la creación de pruebas mediante instrucciones en lenguaje natural.

En las pruebas de Selenium, la IA aprende patrones y hace que las pruebas se reparen automáticamente a medida que cambia el código. La IA también crea indicadores para los cambios de rendimiento asociados con las actualizaciones de la aplicación.

Migrar a CI/CD

La infraestructura de pruebas moderna debe integrarse con los procesos de CI/CD que controlan y gestionan el ensamblaje, las pruebas y el lanzamiento de las aplicaciones. Toda la infraestructura de CI/CD, junto con el código subyacente y los conjuntos de pruebas automatizadas, define el sistema heredado para el futuro. Este conjunto se archiva para su uso futuro y se reactiva para su evolución.

Estas prácticas de prueba modernas permiten comprender los aspectos que, en última instancia, se traducen en la evolución y modernización de las aplicaciones. La trazabilidad de todas las prácticas de prueba directamente al código fuente subyacente acelera los esfuerzos de modernización.

Optimice las pruebas con el análisis de impacto de las pruebas.

La modernización es evolución: se añadirá o actualizará código. Al trabajar con aplicaciones y sistemas complejos, la cantidad total de pruebas puede resultar abrumadora. TIA determina el conjunto mínimo de pruebas necesario para probar únicamente el código actualizado.

TIA ahorra tiempo y costes operativos significativos en los flujos de trabajo de DevOps. Su comprensión detallada de la aplicación proporciona mayor conocimiento y control de su evolución continua. Para los equipos nuevos que adoptan sistemas ya conocidos, la modernización resulta más sencilla, rápida y rentable gracias a las mismas soluciones desarrolladas para su comprensión.

Equipo de desarrolladores

¿Listo para sumergirte más profundamente?

Obtenga el documento técnico completo