Logotipo de Parasoft

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

Blog de Parasoft

Lograr los objetivos de cobertura de código con GoogleTest y C/C++test CT, certificados por TÜV.

Foto de rostro de Miroslaw Zielinski, Director de Gestión de Productos
By Miroslaw Zielinski 9 de Abril, 2026 4 minutos de lectura
9 de Abril, 2026 | 4 minutos de lectura
By Miroslaw Zielinski
Texto a la izquierda: Cómo lograr los objetivos de cobertura de código con GoogleTest y C/C++test, certificados por TUV. A la derecha, se muestra una pantalla de ordenador con bloques horizontales verdes y rojos que representan código C/C++. En primer plano, se ve un cubo de GoogleTest y el logotipo de TUV SUD.

Descubra cómo supervisar las métricas de cobertura de código e identificar y solucionar de forma eficiente las deficiencias de cobertura en software crítico para la seguridad utilizando C/C++test CT con GoogleTest, certificado por TÜV SÜD.

Puntos Clave

  • Las normas de seguridad como ISO 26262, DO-178C e IEC 61508 requieren evidencia objetiva de la exhaustividad de las pruebas mediante la trazabilidad de los requisitos y la cobertura del código estructural, lo que exige una integración perfecta entre los marcos de pruebas unitarias, el RMS y las herramientas de cobertura.
  • En proyectos reales con requisitos incompletos o en constante evolución, los equipos deben analizar de forma iterativa las deficiencias de cobertura, identificar los estímulos faltantes, desarrollar casos de prueba y utilizar esas pruebas para refinar los requisitos; un flujo de trabajo reactivo pero común que puede ser respaldado por herramientas bien integradas.
  • Nuestra solución incluye GoogleTest, certificado por TÜV SÜD, con documentación del proceso de seguridad funcional e informes de cobertura integrados. Admite la ejecución tanto local como en pipelines de CI y optimiza el análisis MC/DC al proporcionar vectores de prueba mínimos precalculados para las condiciones no cubiertas.
  • Un servidor MCP expone datos de cobertura estructurados a agentes de IA, lo que permite a los usuarios solicitar la generación automática de casos de prueba de GoogleTest que se dirijan a escenarios no cubiertos, los cuales los desarrolladores pueden revisar comparándolos con el comportamiento y los requisitos del sistema.
  • Al combinar el marco de trabajo GoogleTest, certificado por TÜV SÜD, con un análisis de cobertura avanzado y la generación de pruebas mediante IA, los equipos pueden identificar de manera eficiente las deficiencias, generar las pruebas que faltan y mantener un flujo de trabajo de verificación escalable y conforme a las normas para el C++ moderno.

Para los equipos que desarrollan sistemas críticos para la seguridad, cumplir con los requisitos de cobertura de código no se trata solo de ejecutar pruebas, sino que requiere un flujo de trabajo fundamentalmente integrado entre el marco de pruebas unitarias, la trazabilidad de los requisitos y las herramientas de cobertura.

Requisitos de cumplimiento para las pruebas unitarias en software crítico para la seguridad.

Las pruebas unitarias son un elemento fundamental de la proceso de verificación y validación (V&V) Para software integrado y crítico para la seguridad. Todas las principales normas de seguridad funcional requieren evidencia objetiva de la exhaustividad de las pruebas a nivel de unidad.

Esta exhaustividad se demuestra normalmente mediante la trazabilidad de los requisitos y los informes de cobertura de código estructural. En consecuencia, cualquier Marco de pruebas unitarias utilizado en un cumplimiento El contexto debe integrarse a la perfección con el sistema de gestión de requisitos (RMS) del proyecto y las herramientas de cobertura de código.

Un flujo de trabajo práctico para cerrar las brechas de cobertura

En un escenario de desarrollo ideal, los equipos comienzan con requisitos bien definidos e inequívocos, acompañados de una especificación de pruebas completa. La implementación se lleva a cabo en consonancia con estos requisitos, y los informes de cobertura de código solo proporcionan evidencia objetiva de la exhaustividad de la verificación a nivel del código fuente.

En la práctica, los equipos rara vez logran este ideal. A menudo, comienzan la implementación y el desarrollo de pruebas con requisitos incompletos o en constante evolución.

En algunos casos, los requisitos formales pueden estar completamente ausentes; por ejemplo, cuando los procesos de verificación y validación y de seguridad se aplican retrospectivamente a una base de código heredada que no se desarrolló originalmente bajo un marco de seguridad funcional.

En tales situaciones, el desarrollo, la definición de requisitos y la creación de pruebas se llevan a cabo en paralelo. Este flujo de trabajo obliga a los equipos a:

  • Analizar de forma iterativa las deficiencias identificadas en los informes de cobertura de código.
  • Determina qué estímulos de entrada o escenarios de ejecución faltan para probar el código no descubierto.
  • Refinar continuamente los requisitos en función del comportamiento observado del sistema.

Una brecha en la cobertura puede indicar código muerto, un caso de prueba faltante o un requisito incompleto o no definido.

En todos los casos, la tarea fundamental consiste en comprender por qué una determinada estructura de código permanece sin cubrir. Para métricas relativamente sencillas, como la cobertura de líneas, este análisis suele ser directo. Sin embargo, criterios más avanzados, como MC/DC (cobertura de condiciones/decisiones modificadas), pueden dificultar considerablemente el análisis de la causa raíz.

Si bien este flujo de trabajo dista mucho de ser el ideal, en la práctica el proceso suele comenzar con la identificación de una brecha en la cobertura, seguida del análisis de los estímulos faltantes necesarios para ejercitar el código no cubierto.

Basándose en este análisis, los desarrolladores crean un caso de prueba para cubrir el comportamiento que no se había probado previamente.

El caso de prueba resultante constituye la base para mejorar la comprensión del sistema y orientar los refinamientos posteriores y la definición de requisitos.

Las herramientas de prueba unitaria bien integradas pueden respaldar este proceso al proporcionar detalles sobre las deficiencias de cobertura y, en algunos casos, ayudar a generar los casos de prueba iniciales para impulsar el perfeccionamiento de los requisitos, como se describió anteriormente.

Cómo C/C++test CT simplifica el análisis de brechas de cobertura

Prueba CT de Parasoft C/C++ Ofrece una distribución de GoogleTest con certificación TÜV, junto con informes integrados de cobertura de código, lo que simplifica significativamente el análisis de brechas de cobertura. También incluye capacidades basadas en IA para la generación automatizada de casos de prueba.

Los equipos pueden ejecutar sus conjuntos de pruebas de GoogleTest y recopilar la cobertura de código tanto localmente como dentro de las canalizaciones de CI con C/C++test CT.

Muchos equipos valoran la posibilidad de ejecutar localmente un subconjunto específico de casos de prueba de GoogleTest antes de confirmar los cambios, seguido de la ejecución del conjunto completo de pruebas en el pipeline de CI. Los resultados de cobertura se pueden recuperar de los pipelines de CI y analizar directamente en el IDE, lo que permite un ciclo de retroalimentación eficiente. Para los equipos que utilizan Visual Studio Code, C/C++test CT ofrece soporte optimizado para este flujo de trabajo.

Gráfico que muestra el flujo de solicitudes de extracción para la ejecución de pruebas unitarias de GoogleTest y los resultados de cobertura de código para la generación de informes.

Una vez que se dispone de los informes de cobertura, el siguiente paso es el análisis de brechas. C/C++test CT simplifica este proceso, especialmente para criterios de cobertura más exigentes como MC/DC.

La siguiente captura de pantalla ilustra un ejemplo de los resultados de cobertura MC/DC para una decisión específica dentro de una función.

Captura de pantalla de Parasoft C/C++test CT que muestra un ejemplo de los resultados de cobertura MC/DC para una decisión específica dentro de una función.

Un ejemplo de resultados de cobertura MC/DC para una decisión específica dentro de una función en Parasoft C/C++test CT.

Como se muestra, los resultados ofrecen un desglose detallado de las condiciones cubiertas y no cubiertas dentro de la decisión, junto con una tabla del conjunto mínimo precalculado de vectores de prueba necesarios para lograr una cobertura del 100 %. Este conjunto mínimo es particularmente valioso porque orienta a los desarrolladores hacia las combinaciones de condiciones específicas que deben probarse para cumplir con los requisitos de MC/DC.

Creación y generación de casos de prueba faltantes en GoogleTest

Una vez identificadas las deficiencias en la cobertura, el siguiente paso suele ser desarrollar uno o más casos de prueba que ejerciten el código no cubierto, lo que permite a los equipos evaluar si es necesario actualizar o refinar los requisitos. Como ya se mencionó, si bien esto representa un flujo de trabajo reactivo, es una práctica común en muchos proyectos.

Estos casos de prueba se pueden crear manualmente, basándose en la información de cobertura proporcionada por C/C++test CT, o generarse automáticamente utilizando las herramientas disponibles.

C/C++test CT incluye un servidor MCP que expone datos de cobertura estructurados a agentes de IA. Para métricas avanzadas como MC/DC, estos datos incluyen información detallada sobre los vectores de prueba faltantes necesarios para evaluar completamente todas las condiciones dentro de una decisión dada.

Con el servidor MCP de C/C++test CT, los usuarios, entre muchas otras consultas, pueden pedirle al agente de IA: "Genera casos de prueba de GoogleTest para eliminar las brechas de cobertura en el archivo <>".

El gráfico que aparece a continuación muestra una vista simplificada del flujo de datos entre el motor de cobertura, el servidor MCP y el agente de IA.

Gráfico que muestra el flujo de datos entre un motor de cobertura, un servidor MCP y un agente de IA, con una captura de pantalla de C/C++test CT de fondo.

Flujo de datos simplificado entre el motor de cobertura, el servidor MCP y el agente de IA.

Mediante esta información estructurada, los agentes de IA pueden generar automáticamente casos de prueba de GoogleTest para escenarios no cubiertos, lo que ayuda a mejorar la cobertura y a reducir el esfuerzo de los desarrolladores. Posteriormente, los desarrolladores pueden revisar estas pruebas generadas y evaluar su relevancia con respecto al comportamiento del sistema y los requisitos existentes o aún por definir.

Conclusión

Al combinar el marco de trabajo GoogleTest, certificado por TÜV, con análisis de cobertura avanzado y generación de pruebas mediante IA, C/C++test CT simplifica el proceso para lograr una cobertura de código completa y el cumplimiento normativo. Permite a los equipos que desarrollan con C++ moderno identificar deficiencias en las pruebas, generar las pruebas faltantes y mantener un flujo de trabajo de verificación eficiente y escalable.

Descubre cómo tu equipo puede alcanzar sus objetivos de cobertura de código utilizando C/C++test CT integrado con GoogleTest, la única herramienta certificada por TÜV.

Solicitar una demo