¡Descubre GoogleTest, con certificación TÜV y la tecnología Agentic AI para pruebas de C/C++!
Obtenga los detalles »
Saltar a la sección
Blog de Parasoft
La cobertura de código muestra qué código se ejecutó, pero no demuestra qué requisitos se verificaron realmente. Sigue leyendo para descubrir cómo ampliar GoogleTest con la trazabilidad de requisitos mediante Parasoft C/C++test CT, y así cerrar la brecha entre las pruebas superadas y la evidencia de cumplimiento.
Saltar a la sección
En una publicación anterior, hablamos sobre cómo los equipos pueden alcanzar sus objetivos de cobertura de código con GoogleTest (certificado por TÜV) y C/C++test CT, una herramienta de prueba de software para C/C++ con soporte certificado para GoogleTest. Con GoogleTest, puedes recopilar la cobertura estructural del código, analizar las brechas de cobertura y generar la evidencia necesaria para demostrar la exhaustividad de las pruebas.
Pero la cobertura de código representa solo una dimensión de la exhaustividad de las pruebas unitarias.
En proyectos donde el cumplimiento de las normas de seguridad funcional es obligatorio, los equipos también deben demostrar una verificación adecuada de los requisitos de software mediante casos de prueba. Por lo general, esto se logra a través de informes de trazabilidad de requisitos, que establecen relaciones documentadas entre los requisitos, las pruebas y los resultados de las pruebas.
La trazabilidad de los requisitos permite a los equipos responder a varias preguntas fundamentales.
Sin esta información, una ejecución exitosa de GoogleTest o un alto porcentaje de cobertura de código no demuestran, por sí solos, que el comportamiento previsto del software se haya verificado por completo.
En este blog, explicamos cómo Parasoft C/C++test CT amplía el marco de trabajo GoogleTest con informes de trazabilidad de requisitos y permite correlacionar los resultados de las pruebas con los requisitos gestionados en un sistema externo de gestión de requisitos.
La cobertura del código estructural y la cobertura de requisitos proporcionan perspectivas complementarias sobre la exhaustividad de las pruebas unitarias.
Los informes de cobertura de código demuestran qué partes de la implementación se probaron durante las pruebas. Según el proceso de desarrollo aplicable y el nivel de integridad de seguridad, los equipos pueden necesitar recopilar métricas como la cobertura de sentencias, bifurcaciones, decisiones, condiciones o MC/DC.
Los informes de trazabilidad de requisitos abordan una cuestión diferente. En lugar de mostrar qué estructuras de código se ejecutaron, muestran si se ha verificado el comportamiento del software especificado.
Por este motivo, los proyectos orientados al cumplimiento normativo suelen utilizar ambos tipos de evidencia:
En conjunto, estos informes ofrecen una visión más completa del estado de verificación. Los equipos pueden identificar deficiencias en los requisitos, las pruebas y la implementación.
GoogleTest se utiliza ampliamente para realizar pruebas unitarias de software en C y C++. Proporciona un marco de trabajo familiar para definir casos de prueba, organizar conjuntos de pruebas, ejecutar pruebas y generar resultados de ejecución de pruebas en formato XML.
Sin embargo, el informe de ejecución de GoogleTest describe principalmente la estructura de las pruebas y el estado de ejecución. Identifica qué pruebas se ejecutaron y si se aprobaron, fallaron o se omitieron, pero no proporciona un flujo de trabajo completo orientado al cumplimiento para correlacionar esos resultados con los requisitos almacenados en un sistema de gestión de requisitos empresariales.
Los equipos suelen intentar solucionar este problema con hojas de cálculo, convenciones de nomenclatura, scripts personalizados o matrices de trazabilidad mantenidas manualmente. Si bien estos métodos pueden funcionar para proyectos pequeños, su mantenimiento se complica a medida que aumenta el número de requisitos, casos de prueba, variantes de producto y configuraciones de prueba.
Parasoft C/C++test CT amplía el flujo de trabajo de GoogleTest con soporte para la generación de informes de trazabilidad de requisitos. Puede anotar los casos de prueba indicando su relación con los requisitos.
Un único caso de prueba puede estar asociado a uno o más requisitos. Del mismo modo, varios casos de prueba pueden verificar un mismo requisito cuando es necesario evaluar diferentes entradas, modos de operación, condiciones límite o escenarios de fallo.
Estas anotaciones crean el vínculo inicial entre la implementación de la prueba unitaria y los requisitos del proyecto. El flujo de trabajo de trazabilidad de requisitos consta de tres etapas principales.
Los desarrolladores comienzan asociando los casos de prueba de GoogleTest con los identificadores de requisitos correspondientes.
Los identificadores deben corresponder a los requisitos mantenidos en el sistema de gestión de requisitos del proyecto.
Mantener las referencias a los requisitos cerca de la implementación de la prueba hace visible la relación durante el desarrollo y permite gestionarla mediante los mismos procesos de revisión y control de versiones que el código de prueba.
Utilice GoogleTest para ejecutar las pruebas anotadas y generar un informe de ejecución XML que contenga los resultados de las pruebas.
C/C++test CT lee el informe XML, que contiene tanto los resultados de la ejecución de las pruebas como las anotaciones de los requisitos, y envía esta información a Parasoft DTP, una plataforma de informes.
DTP se conecta a su RMS, importa los datos de requisitos pertinentes y genera el informe de trazabilidad.
Puedes integrar este flujo de trabajo en tu proceso de desarrollo local o, mejor aún, en una canalización de integración continua.
DTP se conecta al sistema de gestión de requisitos de la organización, como Jama, Polarion, Codebeamer o DOORS Next, y recupera información sobre los requisitos a los que se hace referencia.
A continuación, DTP correlaciona los registros de requisitos con los resultados de las pruebas unitarias recibidos de C/C++test CT.
Esta correlación combina información de dos fuentes:
Como resultado, puede analizar el estado de verificación sin duplicar la definición completa de los requisitos dentro del código fuente de la prueba ni transferir manualmente los resultados de la prueba al sistema de gestión de requisitos.
El sistema de gestión de requisitos sigue siendo la fuente autorizada de información sobre requisitos, mientras que DTP proporciona una visión consolidada de las relaciones entre los requisitos y las evidencias de las pruebas.
Una vez que se ha correlacionado la información, los informes de trazabilidad pueden poner de manifiesto deficiencias difíciles de detectar en un informe estándar de GoogleTest.
Por ejemplo, el informe puede revelar los siguientes tipos de requisitos:
Estos hallazgos respaldan tanto el desarrollo cotidiano como las actividades formales de cumplimiento normativo.
Los informes de trazabilidad no sustituyen el criterio de los ingenieros. En cambio, proporcionan datos objetivos que orientan a los revisores hacia relaciones que requieren un análisis más profundo.
Los requisitos y los conjuntos de pruebas rara vez permanecen estáticos.
Los requisitos pueden añadirse, modificarse, descomponerse, sustituirse o eliminarse. Los casos de prueba pueden renombrarse, refactorizarse, parametrizarse o dividirse en pruebas más pequeñas. Las variantes del producto también pueden requerir diferentes subconjuntos de requisitos y pruebas.
Dado que C/C++test CT procesa la información de trazabilidad como parte del flujo de trabajo habitual de ejecución de GoogleTest, los informes se actualizan cada vez que se ejecuta el conjunto de pruebas. Esto reduce la dependencia de las matrices de trazabilidad, que se mantienen por separado del código fuente y pueden quedar obsoletas rápidamente.
La trazabilidad continua también proporciona retroalimentación temprana. No espere a una auditoría formal o a un hito de lanzamiento para descubrir relaciones faltantes. Revise la cobertura de requisitos durante todo el desarrollo.
Esto resulta especialmente valioso en entornos de desarrollo dinámicos, donde la implementación, el refinamiento de los requisitos y el desarrollo de pruebas suelen llevarse a cabo en paralelo.
Los informes de trazabilidad de requisitos adquieren aún más valor cuando se analizan junto con las capacidades de cobertura de código que se trataron en la primera parte de esta serie.
Consideremos un requisito vinculado a una prueba superada. Desde la perspectiva de los requisitos, este parece haber sido verificado. Sin embargo, un análisis de cobertura estructural podría revelar que la prueba asociada no abarca todas las ramas o condiciones relevantes en la implementación.
Por el contrario, una función puede lograr una cobertura estructural completa, mientras que el análisis de trazabilidad muestra que no se ha asociado explícitamente ninguna prueba con el requisito que define el comportamiento esperado de la función.
Estas dos formas de evidencia ayudan a los equipos a investigar la exhaustividad de la verificación desde ambas perspectivas.
Este análisis combinado respalda un proceso de verificación más sistemático y proporciona pruebas más sólidas para revisiones, evaluaciones y auditorías.
Una ventaja importante de este enfoque es que los equipos pueden conservar GoogleTest como su marco de pruebas unitarias.
Los desarrolladores no necesitan abandonar los conjuntos de pruebas ya establecidos ni adoptar un formato de definición de pruebas propietario independiente solo para generar informes de trazabilidad. En cambio, C/C++test CT añade las capacidades de generación de informes e integración necesarias para un desarrollo orientado al cumplimiento normativo.
GoogleTest sigue siendo el marco de trabajo utilizado para definir y ejecutar pruebas unitarias. C/C++test CT procesa los datos de ejecución y las anotaciones de requisitos. Parasoft DTP integra esos resultados con la información del sistema de gestión de requisitos original y proporciona una vista consolidada de la trazabilidad.
Para el software crítico para la seguridad, la ejecución exitosa de las pruebas y la cobertura estructural del código son formas necesarias, pero no suficientes, de evidencia de verificación. Los equipos también deben demostrar que los requisitos del software están vinculados a los casos de prueba adecuados y respaldados por los resultados de la ejecución actual.
C/C++test CT amplía el marco de trabajo GoogleTest con informes de trazabilidad de requisitos.
Al integrar la trazabilidad en el flujo de trabajo existente de GoogleTest y CI, los equipos:
En combinación con los informes de cobertura de código estructurado, este enfoque proporciona una base más completa y escalable para demostrar la exhaustividad de las pruebas unitarias en proyectos de C y C++ críticos para la seguridad.
Descubre cómo tu equipo puede demostrar la cobertura de verificación utilizando C/C++test CT integrado con GoogleTest, el único sistema certificado por TÜV.
Blog
4 minutos de lectura
Webinar
White Paper