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

Examen de la unidad

Verificación y validación de software Es una parte inherente del desarrollo de software automotriz y las pruebas son una forma clave de demostrar el comportamiento correcto del software. La prueba unitaria es la verificación del diseño de módulos. Garantiza que cada unidad de software haga lo que se le pide que haga.

Además, los requisitos de seguridad y protección pueden requerir que las unidades de software no se comporten de manera inesperada y no sean susceptibles a la manipulación con entradas de datos inesperadas.

El modelo V del desarrollo de software muestra la relación entre cada fase y la validación inferida en cada etapa de prueba. Se destacan las pruebas unitarias, ya que ese es el tema de esta página.
El modelo V de desarrollo de software que muestra la relación entre cada fase y la validación inferida en cada etapa de prueba.
En términos del modelo clásico de desarrollo V, la ejecución de pruebas unitarias es una práctica de validación para garantizar que el diseño del módulo sea correcto. La norma ISO 26262 tiene pautas específicas sobre lo que se debe probar en las pruebas unitarias.

La norma ISO 26262 tiene directrices específicas para realizar pruebas de acuerdo con los niveles de integridad de seguridad, donde las pruebas basadas en requisitos, las pruebas de interfaz y la evaluación del uso de recursos son muy recomendables para todos los niveles. La inyección de fallas se recomienda en los niveles ASIL (niveles de integridad de seguridad automotriz) A y B más bajos, y muy recomendada en los ASIL C y D. De manera similar, el método de conducción de casos de prueba también se especifica con prácticas recomendadas.

ISO 26262 Parte 6, 10.4.2:2018 - Métodos para la verificación de la integración del software
ISO 26262 Parte 6, 10.4.2:2018

ISO 26262 Parte 6, 10.4.3:2018 - Métodos para derivar casos de prueba
ISO 26262 Parte 6, 10.4.3:2018
Si los desglosamos de forma individual, considere cómo se puede satisfacer y acelerar cada requisito de prueba unitaria de la norma ISO 26262 con herramientas de automatización de pruebas como Parasoft C/C++test. Por cierto, si ya está utilizando un marco de pruebas unitarias como GoogleTest, Cppunit, Boost.Test o uno propio, considere la posibilidad de incorporarlo. Prueba C/C++ CT. Agrega cobertura de código, trazabilidad de requisitosy generación de informes a estos populares marcos de pruebas abiertas.

Métodos de prueba unitaria

Prueba basada en requisitos

Estas pruebas prueban directamente la funcionalidad según lo especificado en cada requisito. Herramientas de automatización de pruebas necesidad de respaldar la trazabilidad bidireccional de los requisitos hasta sus pruebas y los informes de cobertura de pruebas de requisitos para demostrar el cumplimiento.

Prueba de interfaz

Estas pruebas garantizan que las interfaces de programación se comporten y funcionen según lo especificado. Las herramientas de prueba deben crear fragmentos de funciones y fuentes de datos para emular el comportamiento de los componentes externos para la ejecución automática de pruebas unitarias.

Prueba de inyección de fallas

Estas pruebas utilizan entradas inesperadas e introducen fallas en la ejecución del código para examinar el manejo de fallas o la falta de este. Las herramientas de automatización de pruebas deben admitir la inyección de condiciones de falla mediante stubs de funciones y la generación automática de pruebas unitarias utilizando un conjunto diverso de condiciones previas, como valores mínimos, máximos y heurísticos.

Evaluación del uso de recursos

Estas pruebas evalúan la cantidad de memoria, espacio de archivo, ejecución de CPU u otros recursos de hardware de destino utilizados por la aplicación.

Controladores de casos de prueba

Análisis de Requerimientos

Cada requisito genera, como mínimo, un único caso de prueba unitaria. Aunque las herramientas de automatización de pruebas no generan pruebas directamente a partir de los requisitos, deben admitir la trazabilidad bidireccional desde los requisitos hasta el código y desde los requisitos hasta las pruebas, y mantener la información de cobertura de los requisitos, las pruebas y el código.

Generación y Análisis de Clases de Equivalencia

Los casos de prueba deben garantizar que las unidades se comporten de la misma manera para una variedad de entradas, no solo entradas seleccionadas para cada unidad. Las herramientas de automatización de pruebas deben admitir la generación de casos de prueba utilizando fuentes de datos para usar de manera eficiente una amplia gama de valores de entrada. Parasoft C/C++test utiliza funciones de fábrica para preparar conjuntos de valores de parámetros de entrada para la generación automatizada de pruebas unitarias.

Análisis de valores límite

Los casos de prueba generados automáticamente (como valores heurísticos y valores límite) emplean fuentes de datos para utilizar una amplia gama de valores de entrada en las pruebas.

Error al adivinar

Este método utiliza el mecanismo de códigos auxiliares para inyectar condiciones de falla en los resultados del análisis de flujo de código probado y se puede usar para escribir pruebas adicionales.

Ejecución de pruebas automatizada y generación de casos de prueba

La automatización de pruebas proporciona grandes beneficios a software automotriz integradoAlejarse de los conjuntos de pruebas que requieren mucha intervención manual significa que las pruebas se pueden realizar de forma más rápida, más sencilla y con mayor frecuencia.

Al delegar este esfuerzo de prueba manual, se libera tiempo para una mejor cobertura de pruebas y otros objetivos de seguridad y calidad. Un requisito importante para la ejecución automatizada de conjuntos de pruebas es poder ejecutar estas pruebas tanto en entornos host como de destino.

Pruebas basadas en objetivos para sistemas automotrices

La automatización de pruebas de software automotriz es más desafiante debido a la complejidad de iniciar y observar pruebas en objetivos integrados, sin mencionar el acceso limitado al hardware de destino que tienen los equipos de software.

La automatización de las pruebas de software es esencial para que las pruebas integradas sean viables de forma continua desde el sistema de desarrollo anfitrión hasta el sistema de destino. Probar el software integrado requiere mucho tiempo. La automatización del conjunto de pruebas de regresión proporciona un ahorro considerable de tiempo y costes. Además, los resultados de las pruebas y la recopilación de datos de cobertura del código del sistema de destino son esenciales para la validación y el cumplimiento de los estándares.

Es necesario registrar y mantener la trazabilidad entre los casos de prueba, los resultados de las pruebas, el código fuente y los requisitos, por lo que la recopilación de datos es fundamental en la ejecución de las pruebas.

Parasoft C/C++test se ofrece con su arnés de prueba optimizado para asumir una sobrecarga adicional mínima para la huella binaria y lo proporciona en forma de código fuente, donde se puede personalizar si se requieren modificaciones específicas de la plataforma.

Una vista de alto nivel de la implementación, ejecución y observación de pruebas desde el host hasta el destino en Parasoft C/C++test y C/C++test CT.
Una vista de alto nivel de la implementación, ejecución y observación de pruebas desde el host hasta el destino en Parasoft C/C++test y C/C++test CT.
Una de las grandes ventajas que ofrece la solución de pruebas Parasoft C/C++ es su integración dedicada con IDE y depuradores integrados que hacen que el proceso de ejecución de casos de prueba sea sencillo y automático. Los entornos IDE compatibles incluyen Eclipse, VS Code, Green Hills Multi, Wind River Workbench, IAR EW, ARM MDK, ARM DS-5, TI CCS, Visual Studio y muchos otros.

Generación automatizada de casos de prueba

Explorador de generación automatizada de casos de prueba de C/C++test
Explorador de generación automatizada de casos de prueba de C/C++test

Las herramientas de automatización de pruebas unitarias admiten universalmente algún tipo de marco de pruebas, que proporciona la infraestructura necesaria para ejecutar unidades de forma aislada y, al mismo tiempo, satisfacer las dependencias mediante stubs. Parasoft C/C++test no es una excepción. Parte de su capacidad de pruebas unitarias es la generación automatizada de arneses de prueba y los componentes ejecutables necesarios para las pruebas basadas en host y destino.

La generación y gestión de datos de prueba es, con diferencia, el mayor desafío de las pruebas unitarias. Los casos de prueba son especialmente importantes en el desarrollo de software crítico para la seguridad, ya que deben garantizar los requisitos funcionales y comprobar el comportamiento impredecible, la seguridad y los requisitos de protección. Todo ello sin dejar de satisfacer los criterios de cobertura de las pruebas.

Parasoft C/C++test genera automáticamente casos de prueba como el popular formato CppUnit. De forma predeterminada, C/C++test genera un conjunto de pruebas por archivo de origen/encabezado. También se puede configurar para generar un conjunto de pruebas por función o un conjunto de pruebas por archivo de origen.

Las definiciones de stubs seguras se generan automáticamente para reemplazar funciones “peligrosas”, que incluyen rutinas de E/S del sistema como rmdir(), remove(), rename(), etc. Además, se pueden generar stubs automáticamente para definiciones de funciones y variables faltantes. Se pueden agregar stubs definidos por el usuario según sea necesario.

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.