Acelere su tarea de cobertura de código con un asesor de cobertura

Foto de cabeza de Ricardo Camacho, Director de Cumplimiento de Seguridad y Seguridad

Por Ricardo Camacho

3 de diciembre de 2020

4  min leer

Al construir sistemas críticos, la cobertura del código estructural se convierte en una necesidad. Esta publicación destaca cómo Parasoft C/C++test puede ayudar a los equipos de pruebas con funciones de productividad automatizadas como el asesor de cobertura.

Las pruebas de software son una parte integral del desarrollo de software. Todas las industrias que desarrollan y ejecutan código pueden beneficiarse del uso de herramientas de prueba de cobertura de código estructural. Estas herramientas son especialmente útiles en industrias para el desarrollo integrado de aplicaciones críticas para la seguridad donde los sistemas de software no pueden fallar, o se perderán vidas. Asesor de cobertura de Parasoft C/C++test ayuda a los usuarios a crear ese escurridizo caso de prueba que es difícil y requiere mucho tiempo para formar.

La cobertura del código es una necesidad importante

La obtención de métricas de cobertura de código del 100 % en sistemas integrados críticos para la seguridad sirve para múltiples propósitos. El propósito principal es cumplir con los requisitos de verificación y validación (V&V) definidos en los estándares de proceso como DO-178C, IEC 62304, Y otros.

Las Ventajas

El valor que proporciona la cobertura del código es una actividad adicional de V&V que elimina los defectos del código. Se asegura de que cada línea de código se haya ejecutado y, por lo tanto, se haya examinado mediante pruebas. Esto le brinda una red de seguridad adicional sobre la calidad y confiabilidad del código.

Además, si ejecuta todos sus casos de prueba y solo obtiene el 60%, resulta obvio que no ha creado suficientes casos de prueba. Como resultado, los defectos ocultos pueden acechar en estas áreas vírgenes.

Otra preocupación es el "código muerto". Eso significa código que nunca se ejecutaría porque no existe un camino hacia él. Esto puede suceder cuando se implementa una función / capacidad, pero en algún momento, se elimina el requisito de la función. Si no elimina completamente el código, puede resultar en un código inactivo. Encontrar código muerto dentro de funciones u operaciones también puede resaltar la lógica de código incorrecto que debe abordar. En esta situación, el código muerto indica que no existe una ruta lógica accesible.

Cómo satisfacer el requisito de cobertura de su código

Puede lograr la cobertura del código a través de varios métodos de prueba o una combinación de:

  • Unidad
  • moderna
  • Prueba del sistema

He participado en los siguientes dos enfoques, que Parasoft admite fácilmente:

  • Una combinación de prueba de sistema y unidad. Primero, instrumente el código y ejecute todos los casos de prueba del sistema, lo que produce una gran cantidad de métricas de cobertura. Por último, aplique pruebas unitarias para obtener cobertura del código descubierto restante.
  • Utilización de pruebas unitarias para lograr una cobertura de código estructural del 100%. Este enfoque es sencillo. El usuario crea casos de prueba a nivel de unidad para garantizar la cobertura de cada función / operación.

Métricas de cobertura de código

Hay varias métricas de cobertura a considerar. Saber qué tipo específico aplicar depende del nivel de integridad del software (SIL) como se define en IEC 61508. Otro ejemplo es Design Assurance Level (DAL) para DO-178B / C. Para los sistemas embebidos, las métricas de control a las que se hace referencia son declaraciones, rama, cobertura de decisión de condición modificada (MC / DC) y para los requisitos más estrictos, existe un código de Objeto / Ensamblaje. Parasoft admite la recopilación de todas estas métricas de cobertura, incluidos los términos que utilizan otras industrias, como bloqueo, llamada, función, ruta, decisión y más.

Panel que muestra las métricas y tendencias de cobertura de código
Figura 1: Métricas y tendencias

Automatizar el proceso

La prueba de Parasoft C / C ++ ha tenido un gran impacto en la productividad al automatizar el proceso de obtención de cobertura de código. El primero es la generación automática de casos de prueba. Con un clic y una selección de menú, la solución de prueba analiza el código y genera automáticamente casos de prueba de unidades inteligentes. A continuación, se pueden ejecutar estos casos de prueba unitaria. Dependiendo del tamaño y la complejidad del código, los equipos pueden lograr instantáneamente hasta un 90%.

El valor de usar una solución de prueba unificada de C/C++

Para el código complejo, siempre existen esas elusivas declaraciones de código de las que es extremadamente difícil obtener cobertura. Es probable que haya varios valores de entrada con varias permutaciones y posibles rutas que hacen que descifrarlo sea complicado y que lleve mucho tiempo. Pero solo una combinación puede brindarle la cobertura que necesita. Parasoft C / C ++ test 2020.2 ha mejorado su asesor de cobertura, lo que facilita la obtención de cobertura de aquellas líneas de código de difícil acceso.

Cómo obtener cobertura en Coverage Advisor

Dentro de su editor, haga clic con el botón derecho en la línea de código para la que desea cobertura y seleccione Parasoft -> Mostrar en Coverage Advisor.

Menú que muestra Parasoft y luego Mostrar en Coverage Advisor
Figura 2: Mostrar en el menú del asesor de cobertura

La Figura 3 a continuación muestra un informe de análisis que proporciona al usuario una solución. los Condiciones previas campo expreso:

  • El rango y los valores de entrada para mainSensorSignal y coSensorSignal
  • Los resultados esperados de las llamadas externas

Al crear el caso de prueba de la unidad con estos valores de parámetros establecidos y stubs para llamadas externas, el usuario obtendrá la cobertura de la línea seleccionada, más las líneas adicionales expresadas en el Cobertura esperada campo.

Captura de pantalla de la pestaña Coverage Advisor que muestra dependencias, condiciones previas, cobertura esperada
Figura 3: Prueba de Parasoft C / C ++ 2020.2 Comentarios del análisis de cobertura de la línea del asesor de cobertura

Resumen

Es necesario realizar la cobertura del código estructural al construir sistemas de software integrados para la seguridad y la protección crítica. Junto con la cobertura de las pruebas de requisitos, garantiza que:

  • Ha creado suficientes casos de prueba para probar su software.
  • No hay ningún código muerto.
  • Cada línea se inspecciona para verificar las necesidades de cumplimiento y certificación.

Parasoft C/C++test es una solución de prueba unificada que proporciona a los equipos capacidades de métodos de prueba y funciones de productividad automatizadas como el asesor de cobertura. Con esta función, los desarrolladores pueden alcanzar sus objetivos de cobertura de código rápidamente. En consecuencia, los directores y gerentes de software pueden lograr objetivos comerciales de tiempo de comercialización, reducción de costos de mano de obra, garantías de auditoría y facilidad en la certificación de productos.

Vea cómo combinar técnicas de pruebas automatizadas como análisis estático, pruebas unitarias y más para maximizar el ROI de las pruebas.

Obtenga el documento técnico: El valor de usar una herramienta de prueba unificada de C / C ++

Foto de cabeza de Ricardo Camacho, Director de Cumplimiento de Seguridad y Seguridad

Por Ricardo Camacho

Gerente sénior de marketing técnico de productos para las soluciones de pruebas integradas de Parasoft. Tiene experiencia en SDLC y automatización de pruebas de aplicaciones integradas en tiempo real, críticas para la seguridad y el cumplimiento del software con los estándares de la industria.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.