Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora

Conformidad de software ISO 26262 en la industria automotriz

Cobertura del código estructural

Recopilación y análisis de la cobertura del código Las métricas son un aspecto importante del desarrollo de software automotriz crítico para la seguridad. Medidas de cobertura del código La finalización de los casos de prueba y las pruebas ejecutadas. Proporciona evidencia de que la validación está completa, al menos según lo especificado por las partes interesadas y los requisitos de cumplimiento.

También identifica código inactivo, es decir, código al que lógicamente nunca se puede acceder. Demuestra la existencia de un comportamiento no deseado. El código que no está cubierto por ninguna prueba es un riesgo porque se desconoce su comportamiento y funcionalidad.

La cantidad y el alcance de la cobertura del código dependen del nivel de integridad de seguridad y de los objetivos de porcentaje de cobertura. Para aplicaciones críticas para la seguridad, la norma es una cobertura del código del 100 %. Cuanto mayor sea el nivel de integridad, mayor será el rigor. Inevitablemente, la cantidad y la complejidad de los casos de prueba aumentarán.

La siguiente tabla muestra las recomendaciones para los tipos de cobertura de código en cada ASIL ISO 26262.

ISO 26262 Parte 6, 9.4.4:2018 - Cobertura estructural metrix
ISO 26262 Parte 6, 9.4.4:2018
Círculo azul con 1a escrito en el centro en texto blanco.

Cobertura de estados de cuenta

La cobertura de declaraciones requiere que cada declaración del programa se ejecute al menos una vez y se recomienda en los niveles ASIL más bajos. La cobertura de sucursales y MC/DC abarca la cobertura de declaraciones.

Círculo azul con 1b escrito en el centro en texto blanco.

Cobertura de sucursales

La cobertura de rama garantiza que se ejecute cada ruta de decisión de una rama (construcciones if-then-else).

Círculo azul con 1c escrito en el centro en texto blanco.

Cobertura por decisión o condición modificada (MC/DC)

La cobertura de decisión/condición modificada (MC/DC) requiere la cobertura de código más completa para garantizar que los casos de prueba ejecuten cada rama de decisión y todas las combinaciones posibles de entradas que afectan el resultado de la lógica de decisión. En el caso de la lógica compleja, la cantidad de casos de prueba puede explotar, por lo que las restricciones de condición modificada se utilizan para limitar los casos de prueba a aquellos que dan como resultado expresiones lógicas independientes que cambian. Vea este tutorial de la NASA.

Avanzada herramientas de automatización de pruebas unitarias Por ejemplo, Parasoft C/++test proporciona todas estas métricas de cobertura de código. Automatiza las pruebas C/C++ Esta recopilación de datos sobre pruebas de host y de destino acumula un historial de cobertura de pruebas a lo largo del tiempo. Este historial de cobertura de código puede abarcar pruebas unitarias, de integración y de sistema para garantizar que la cobertura sea completa y rastreable en todos los niveles de prueba.

Aumento de la cobertura del código con la creación automatizada de casos de prueba unitaria

La creación de pruebas unitarias productivas siempre ha sido un desafío. El cumplimiento de los estándares de seguridad funcional exige software de alta calidad, lo que genera la necesidad de suites de pruebas que afecten y produzcan estadísticas de alta cobertura de código. Los equipos requieren casos de pruebas unitarias que los ayuden a lograr una cobertura de código del 100 %.

Es más fácil decirlo que hacerlo. Analizar las ramas del código e intentar encontrar razones por las que no se cubren ciertas secciones del código sigue robando ciclos a los equipos de desarrollo.

Asesor de cobertura de Parasoft

Parasoft C/C++test resuelve las brechas de cobertura en los conjuntos de pruebas. Parasoft descubrió cómo utilizar el análisis de código estático avanzado (análisis de flujo de datos y control) para encontrar valores para los parámetros de entrada necesarios para ejecutar líneas específicas de código no cubierto.

En los códigos complejos, siempre hay esas declaraciones de código elusivas de las que es extremadamente difícil obtener cobertura. Es probable que haya múltiples valores de entrada con varias permutaciones y rutas posibles que hacen que descifrarlas sea una tarea enrevesada y que lleve mucho tiempo. Pero solo una combinación puede brindarle la cobertura que necesita. Parasoft facilita la obtención de cobertura de esas líneas de código difíciles de alcanzar.

Seleccione la línea de código que desea cubrir y el Asesor de Cobertura le dirá qué valores de entrada, variables globales y llamadas externas necesita para estimular el código y obtener cobertura.

Invocar el Asesor de cobertura haciendo clic derecho
Invocar el Asesor de Cobertura haciendo clic derecho en la línea de código.

Soluciones de cobertura de código proporcionadas por el asesor de cobertura
Dos soluciones de casos de prueba proporcionadas por Coverage Advisor.

La figura de la derecha muestra un informe de análisis que proporciona al usuario una solución. El campo Condiciones previas expresa:

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

Al crear el caso de prueba unitario 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 campo Cobertura esperada.

Pancarta azul oscuro con imagen de un hombre hablando con una mujer sosteniendo una tableta en la mano en una sala de servidores.
Imagen de un hombre y una mujer con una tableta en la mano conversando en una sala de servidores.

Mejore sus pruebas de software con las soluciones de Parasoft.