Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora
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.
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.
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.
Generación automatizada de casos de prueba
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.
Mejore sus pruebas de software con las soluciones de Parasoft.
Explora los capítulos
- Introducción "
- 1. Descripción general »
- 2. Análisis estático »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERTIFICACIÓN »
- 6. CWE »
- 7. Pruebas unitarias »
- 8. Pruebas de regresión »
- 9. Pruebas de integración de software »
- 10. Pruebas de sistemas de software »
- 11. Cobertura del código estructural »
- 12. Matriz de trazabilidad de requisitos »
- 13. Calificación de herramientas »
- 14. Informes y análisis »