Seminario web destacado: MISRA C++ 2023: todo lo que necesita saber | Vea ahora

Cobertura del código: evalúe y garantice la confianza en sus pruebas

La solución de Parasoft para la cobertura de código expone el código en su aplicación que ha sido probado y no ha sido probado. Los usuarios pueden realizar la cobertura del código en varios niveles, función o unidad, todo el archivo o toda la aplicación en el hardware de destino o en los entornos de host. Y puede agregar la cobertura de los diversos métodos de prueba, como la prueba unitaria y la prueba del sistema.

¿Qué es la cobertura del código?

La cobertura de código estructural es la identificación del código que se ha ejecutado y registrado con el fin de determinar si el sistema se ha probado adecuadamente.

La cobertura de código expresa el grado en que el código fuente de la aplicación es ejercido por todas las prácticas de prueba, incluidas las pruebas unitarias, las pruebas manuales, las pruebas funcionales automatizadas y similares. También:

  • Permite métricas de calidad y cobertura más precisas.
  • Expone código inactivo y partes de la aplicación no probadas o poco probadas.

Como resultado, la cobertura de la aplicación brinda una visión extremadamente poderosa del riesgo. En la mayoría de las organizaciones, las pruebas unitarias son el vehículo principal para impulsar la cobertura. Y si bien las pruebas unitarias son una práctica de prueba valiosa que también permite varios beneficios orientados al proceso, también son costosas en términos de experiencia y tiempo para crear, administrar y mantener las pruebas.

La cobertura del código se puede aprovechar como parte del proceso de integración continua (CI), así como como parte del flujo de trabajo del escritorio del desarrollador. También puede realizar análisis avanzados en el código fuente e identificar qué pruebas unitarias deben volver a ejecutarse en función de los cambios de código que ha realizado el desarrollador.

Vehículo eléctrico enchufable con brillo y desenfoque de movimiento y senderos de luz roja renderizado 3d

Estas herramientas de cobertura de código son especialmente útiles en industrias para el desarrollo integrado de aplicaciones críticas de seguridad y protección donde los sistemas de software no pueden fallar o se perderán vidas.

La exhaustividad de la cobertura en los sistemas críticos para la seguridad depende de la métrica del nivel de integridad de seguridad de la aplicación (SIL o ASIL) que se usa en varias industrias y del nivel de garantía de desarrollo (DAL) que se usa comúnmente en aviónica. La minuciosidad se refiere a los elementos estructurales del código. Por lo general, se desglosan en la declaración de código, la rama, las decisiones de condición modificada y con Parasoft, también puede profundizar hasta un nivel mucho más fino de granularidad de cobertura, como el código objeto o el lenguaje ensamblador.

¿Cómo se mide la cobertura del código?

La cobertura del código a menudo se identifica o mide a través de la instrumentación del código. Esto se hace adornando el código fuente con un código de seguimiento adicional para determinar, mientras se ejecuta, si se ha ejecutado cada declaración, rama y/o ruta de decisión de condición modificada (MC/CD).

Lo que debe saber sobre el código hinchado

Es importante saber que la instrumentación del código hace que el código se hinche. El aumento en el tamaño del código no suele ser una preocupación. Para objetivos integrados con limitaciones de memoria, el aumento puede afectar la capacidad de cargar el código en el hardware de destino para realizar pruebas.

Pasos para evitar la sobrecarga de código para objetivos integrados

  1. Instrumento parte del código.
  2. Realice la prueba.
  3. Recopile las métricas de cobertura de código.
  4. Repita instrumentando la otra parte del código y desinstrumentando lo que acaba de probar.
  5. Después de probar todas las partes del código, fusione los resultados de la cobertura de la prueba para obtener una vista completa y medida de la cobertura del código para toda la aplicación.

¿Qué porcentaje de cobertura de código es ideal?

Los objetivos de porcentaje de cobertura de código pueden ser subjetivos en algunos casos. En otros casos, son obligatorios. Cuando se construyen aplicaciones que son críticas para la seguridad donde la falla puede causar la muerte, los estándares regulatorios y de la industria requieren una cobertura de código estructural del 100 %.

Para las aplicaciones que no son críticas para la seguridad, la cobertura del código tiende a dejarse a la decisión de la organización de desarrollo. El nivel de comodidad común para este tipo de circunstancias es lograr una meta de cobertura de código del 80 %.

Los 6 principales beneficios de la cobertura del código

Respuestas "¿Terminé la prueba?"

La cobertura del código puede ayudar a medir la integridad de la prueba y garantiza que haya inspeccionado cada línea de código en su aplicación durante la ejecución. Aprovechar una combinación de métodos de prueba como análisis estático, pruebas unitarias, pruebas del sistema, pruebas de rendimiento y similares, es la mejor manera de garantizar la calidad del código.

Satisfacer las necesidades de cumplimiento de la cobertura del código

Cumplir con los requisitos de cobertura de código para estándares de seguridad funcional como DO-178B/C, ISO 26262, ISO 21434, IEC 62304, IEC 61508 y EN 50128. Los requisitos de cobertura de código ayudan a garantizar la seguridad y confiabilidad del código al exponer el código no probado y eliminarlo. defectos

Reducir los Defectos de Costo

Los defectos de código que se encuentran en la producción son los más costosos. Evite que se escapen a través de las grietas resaltando el código que no ha sido probado antes de lanzar su aplicación. Esto puede realizarse en la estación de trabajo del desarrollador o automatizarse como parte del proceso de integración continua (CI).

Realice la verificación del código de ensamblaje / objeto

Para los requisitos de cobertura de códigos críticos de seguridad más estrictos, como DO-178C Nivel A, Parasoft ofrece cobertura de códigos a nivel de ensamblaje. Ahorre días, incluso semanas, de esfuerzo manual laborioso y propenso a errores con nuestra solución automatizada.

Cumplir con la cobertura del código en el hardware de destino y host

La prueba exhaustiva de las aplicaciones integradas de seguridad y críticas para la seguridad requiere probar el hardware en el destino y en el entorno del host. Parasoft proporciona instrumentación de código para capturar y reportar la cobertura del código estructural para la cobertura de la decisión, rama, condición modificada (MC / DC) y más.

Obtenga una cobertura de código del 100%

Aunque generalmente puede alcanzar los objetivos de cobertura de código estructural del 100% a través de pruebas unitarias, ahorre tiempo y esfuerzo agregando los resultados de cobertura de código obtenidos automáticamente de las pruebas del sistema. Y luego complete el código descubierto restante mediante pruebas unitarias.

Herramientas de cobertura de código estructural

Implemente el conjunto de productos de Parasoft para realizar una cobertura de código estructural de aplicaciones escritas en C, C ++, Java, C # y VB.NET.

Icono de prueba de Parasoft C/C++

Parasoft C / C ++test

Recopile la cobertura de las pruebas unitarias, las pruebas del sistema, las pruebas manuales y todos los demás métodos de ejecución de pruebas utilizados. La prueba de Parasoft C / C ++ admite una variedad de métricas de cobertura (Branch, Statement, MC / DC, etc.), que los equipos pueden usar en el desarrollo de aplicaciones nativas y cruzadas.

Icono de prueba de Parasoft

Prueba J de Parasoft

Recopile y supervise la cobertura del código durante las pruebas funcionales manuales o automatizadas realizadas en su aplicación Java. Los usuarios pueden enviar datos de cobertura y resultados de pruebas para fusionarlos y correlacionarlos para el análisis, lo que proporciona información sobre qué tan bien se prueba la aplicación y la calidad de la prueba.

Icono de prueba de punto de Parasoft

Parasoft dotTEST

Recopile información de cobertura de código para aplicaciones web e independientes escritas en C # y VB.NET. Instale la aplicación monitoreada en la misma máquina donde está instalado dotTEST o en otra máquina.

8 mejores prácticas para la cobertura del código

Obtener la cantidad de código que se ejerce durante las pruebas es una métrica poderosa para comprender el nivel de riesgo que queda en la aplicación. A continuación, se muestran algunas de las mejores prácticas a seguir.

Canalización de CI

La integración de pruebas y cobertura de código en su sistema de compilación aumentará la eficiencia, promoverá la colaboración y brindará una mayor visibilidad en todo su ciclo de vida de desarrollo de software.

Pruebas del sistema

Aproveche las pruebas de su sistema para obtener cobertura de código e identificar las pruebas faltantes que pueden exponer errores ocultos.

Asesor de cobertura

No pierda tiempo tratando de determinar todos los valores de entrada y las condiciones previas requeridas en un caso de prueba para obtener cobertura en una declaración, rama o línea de código MC / CD esquiva. Utilice un asesor de cobertura.

Cobertura agregada

Utilice los diversos métodos de prueba que debe realizar para acelerar sus requisitos de cobertura. La cobertura agregada se puede obtener a partir de pruebas del sistema, de integración, unitarias y manuales.

Generación automatizada de casos de prueba

Las soluciones de Parasoft pueden analizar y generar automáticamente casos de prueba unitarios para eliminar problemas de puntero nulo, condiciones de valor fuera de los límites, dividir por cero y muchos otros tipos de defectos. Además, estos casos de prueba se pueden habilitar para producir cobertura de código y, en algunos casos, obtener hasta un 90% de cobertura de código estructural.

Instrumentación parcial

La instrumentación del código hace que el código se hinche y el aumento en el tamaño del código puede afectar la capacidad de cargar el código en su hardware de destino con limitaciones de memoria para realizar pruebas. Instrumente porciones de su código a la vez, ejecute sus pruebas y agregue sus métricas de cobertura de cada ejecución.

Depurador para cobertura

Si tiene que satisfacer el 100% de cobertura del código estructural pero tiene un código defensivo que solo se ejecutará cuando el sistema entre en un estado de falla que podría demorar semanas, meses o incluso años (o quizás nunca), use su depurador para simular las condiciones necesarias y realizar una inspección visual de la ejecución / cobertura del código.

Código muerto

Si se encuentra un código porque no tiene un camino para su ejecución, por motivos de seguridad, asegúrese de que se elimine y nunca salga al campo.

Cómo comenzar con la cobertura del código

Captura de pantalla del panel de cobertura de código completo del Centro de informes de Parasoft.

Cobertura de código de Parasoft dentro de las soluciones de análisis e informes del panel de control IDE y DTP.

1. Familiarícese con sus necesidades de requisitos de cobertura

Para comenzar a recopilar cobertura de código, familiarícese con sus necesidades de requisitos de cobertura. Tal vez su industria y tipo de aplicación no requieran que se obtenga ninguna métrica de cobertura, pero desea garantizar o mejorar la calidad del código, por lo que el 75% podría ser su objetivo inicial.

Si su industria requiere el cumplimiento de un estándar funcional como DO-178C para aviónica o ISO 26262 e ISO 21434 para automoción o IEC 62304 para medicina, determine si necesita obtener una cobertura de código del 100 % o si se recomienda otro porcentaje de cobertura de código. Además, sepa qué tipo de cobertura de código estructural necesita satisfacer. Podría ser la función, línea, instrucción, bloque, llamada, ruta, decisión, condición simple, MC/DC, objeto/ensamblaje o una combinación de estos.

2. Obtención de Cobertura de Código

Una de las formas más fáciles de obtener cobertura de código es durante la implementación, cuando los ingenieros están creando casos de prueba de unidad para probar su código. Con soluciones como Parasoft C/C++test y Jtest,

  • Los usuarios obtienen una curva de aprendizaje muy corta, ya que se integra directamente en su IDE y proporciona esta funcionalidad.
  • Los equipos de control de calidad pueden reutilizar estos casos de prueba de unidad para pruebas de regresión y/o como parte del proceso de creación en un flujo de trabajo de canalización de CI automatizado.

Tenga en cuenta que la instrumentación del código puede provocar un exceso de código y, si está probando en el hardware de destino, es posible que deba realizar una instrumentación parcial. El código instrumentado también puede alterar el rendimiento de la ejecución, por lo que es posible que desee familiarizarse con varias funciones de optimización disponibles.

3. Recopilación e informe de las métricas de cobertura de su código

Recopilar y reportar las métricas de cobertura de su código es crucial. Hay varios métodos que se basan en si su aplicación se ejecuta en un destino integrado o en un sistema o servidor con todos los recursos.

En última instancia, obtendrá o fusionará datos de cobertura para obtener sus métricas de cobertura de código completas. Los informes de cobertura se pueden generar desde su IDE y se pueden exportar al panel de análisis e informes de Parasoft DTP. En DTP, los usuarios pueden inspeccionar visualmente las áreas de alto riesgo, comprender qué debe abordarse a continuación y producir informes de cumplimiento y auditoría.

¿Por qué elegir las herramientas de cobertura de código de Parasoft?

La solución de Parasoft para la cobertura del código proporciona comentarios críticos sobre la integridad y minuciosidad del proceso de prueba, al correlacionar las pruebas y los resultados de la cobertura del código estructural. Puede utilizar estos resultados o métricas para evaluar la unidad, la integración y la integridad de las pruebas a nivel del sistema a través de nuestro soporte de todos los tipos importantes de cobertura de código (función, llamada, línea, declaración, bloque, ruta, decisión, condición simple y MC / DC), incluida la cobertura de objetos / ensamblajes.

Los resultados de cobertura están disponibles directamente en el IDE, con vistas convenientes y aspectos destacados en el editor de código fuente, así como en forma de informes estáticos en HTML o PDF e informes dinámicos a través del panel de informes centralizado de Parasoft.

Los usuarios pueden monitorear aplicaciones ejecutadas de forma nativa en el escritorio, multiplataforma usando simuladores o en hardware embebido real. El módulo de cobertura de prueba de C / C ++ está optimizado para minimizar el impacto en el rendimiento de ejecución y la huella binaria de prueba, lo que lo hace adecuado para su uso con aplicaciones de alta gama basadas en servidor, así como con sistemas muy limitados basados ​​en 16 bits. microcontroladores.

Cuando se conecta con Process Intelligence Engine de Parasoft, los usuarios se benefician del análisis de impacto de las pruebas. Para todas y cada una de las pruebas realizadas, incluidas las manuales, a nivel de sistema o basadas en la interfaz de usuario, las pruebas se registran no solo para pruebas / fallas y resultados, sino también para su impacto de cobertura en la base de código.

Cada prueba adicional se superpone a esta información existente, creando una imagen completa del éxito y la cobertura de la prueba. A medida que se cambia el código, el impacto es claramente visible en el registro subyacente, destacando las pruebas de cobertura que ahora fallan o el código que ahora no se ha probado. Elevar esta información en varios grados de detalle permite a los desarrolladores y evaluadores identificar rápidamente lo que necesita ser modificado / arreglado para la próxima ejecución de prueba.

Con Parasoft, los equipos pueden concentrarse en la cobertura de código para las áreas de desarrollo activo, en lugar de la base de código completa, lo que puede ser especialmente problemático cuando se trabaja con bases de código heredadas. En lugar de intentar únicamente lograr un número de cobertura para todo el código base, Parasoft lo ayuda a identificar las partes del código que están cambiando.

El panel de informes de Parasoft correlaciona los datos de la prueba C / C ++ con los cambios observados en la base de código para enfocar al equipo de desarrollo en lograr niveles más altos de cobertura de código para esas partes específicas y modificadas de la base de código. Con Parasoft, puede minimizar el impacto de los cambios administrando de manera eficiente el cambio en sí.

Preguntas Frecuentes