¡Somos nominados al premio Embedded Award 2026 Tools y nos encantaría recibir su apoyo! Vota por C/C++test CT >>
White Paper
Antes de comenzar, vea una vista previa a continuación.
A medida que la industria automotriz continúa adoptando una Metodología de desarrollo ágilComienzan a descubrir otros procesos que pueden acelerarse, como la entrega mediante DevOps, en particular las pruebas continuas. DevOps busca automatizar todos los pasos necesarios para entregar el código de la aplicación al usuario final.
DevOps Funciona como una cinta transportadora que mueve el código de la aplicación a través de las distintas fases. Las iniciativas actuales de DevOps y de "todo continuo" requieren la capacidad de evaluar los riesgos asociados a una versión candidata de forma instantánea y continua.
Las pruebas continuas ofrecen una forma automatizada y discreta de obtener retroalimentación inmediata sobre los riesgos empresariales asociados a una versión candidata de software. Guían a los equipos de desarrollo para cumplir con las expectativas empresariales y ayudan a los gerentes a tomar decisiones informadas sobre las compensaciones necesarias para optimizar el valor empresarial de una versión candidata. Gran parte de esto se realiza mediante la integración continua (CI).
En este documento técnico, profundizaremos en los siguientes temas: Mejores prácticas para DevOps en software automotriz:
Es importante comprender completamente las fases de DevOps y cuándo empezar a usar las herramientas adecuadas para obtener los mejores resultados. También existen diversas herramientas o soluciones de canalización de CI/CD de eficacia comprobada en el mercado que respaldan la implementación de DevOps. Algunas herramientas utilizadas en la industria automotriz incluyen Parasoft, Jenkins, GitHub, GitLab, Azure DevOps, Bitbucket, Bamboo, Docker (contenedores) y más.
Uno de los componentes fundamentales de DevOps es la integración continua. La CI consiste en la fusión de características, correcciones o pequeños cambios de código, respaldada por procesos que incluyen el control de versiones y la automatización de la compilación de software. El objetivo de la CI es establecer una forma consistente y automatizada de compilar, empaquetar y probar aplicaciones en lo que se denomina un "pipeline" de software.
En la mayoría de los casos, las pruebas son el obstáculo para que la integración continua sea fluida y eficiente. Las pruebas manuales son impensables, por lo que la solución es automatizarlas o no realizarlas. Pruebas automatizadas Incluye más que solo pruebas unitarias; también incluye buenas prácticas como el análisis estático y las pruebas de regresión. Las pruebas automatizadas generan retroalimentación inmediata que se utiliza para ajustar y replanificar la siguiente iteración o sprint.
La automatización de pruebas en DevOps implica automatizar los métodos de prueba. Es importante familiarizarse con cada fase de esta metodología y saber dónde activar los métodos de verificación y validación de pruebas.
Es posible que también hayas escuchado el término DevSecOps, que es la práctica de Integración de la seguridad en el flujo de trabajo de DevOpsSe requiere un cambio de mentalidad en los equipos para integrar herramientas y prácticas de seguridad en esta metodología. La seguridad se ha vuelto importante para muchos fabricantes de automóviles debido a los requisitos regulatorios de WP.29 R155 y la necesidad de incorporar procesos de estándares como ISO 21434,.
Una ventaja importante del flujo de trabajo de la canalización de CI/CD es el ciclo de retroalimentación que proporciona para que la parte "continua" funcione correctamente. Cualquier interrupción en el ciclo causa ineficiencias que provocan retrasos en el desarrollo y la implementación.
Las herramientas de automatización de pruebas proporcionan una forma de evitar los siguientes obstáculos en las pruebas unitarias:
Al hacer que las pruebas sean más eficientes dentro del flujo de trabajo de CI/CD, es posible mejorar la cobertura de las pruebas con cada ciclo y no impedir el progreso del proyecto con pruebas continuas.
Herramientas de análisis estático son esenciales durante la fase de codificación tanto desde el punto de vista de la calidad y la seguridad como en términos de cumplimiento del estándar de codificación. Para el software automotriz que debe cumplir con MISRA C o C++, por ejemplo, se necesitan informes limpios en la codificación y el registro para garantizar el cumplimiento continuo.
La etapa de compilación activa el análisis estático de toda la aplicación y las pruebas de regresión. En esta etapa, las herramientas de análisis estático se ejecutan en todo el proyecto, ofreciendo mayor precisión y detectando errores que podrían pasarse por alto a nivel de unidad. También es en esta etapa que se inician las pruebas de regresión. Los resultados de estas pruebas impulsan la siguiente fase: las pruebas.
En esta etapa, comienzan las pruebas de las nuevas funciones añadidas y la gestión de las pruebas de regresión fallidas. Los resultados de la regresión y las nuevas pruebas impulsan el siguiente ciclo de planificación.
La integración continua es solo una parte de un proceso de desarrollo continuo que necesita pruebas y entrega para aprovechar los beneficios del enfoque.
Prueba continua Proporciona una forma automatizada y discreta de obtener retroalimentación inmediata sobre un candidato a lanzamiento de software. Las pruebas continuas no son simplemente más automatización de pruebas. El objetivo es integrar la calidad y la seguridad del producto como parte de un proceso continuo de integración, lanzamiento y entrega.
A nivel de desarrollo, el software automotriz no difiere mucho del desarrollo de aplicaciones típico. Requiere IDE, compiladores, análisis estático y dinámico, y herramientas de compilación. Sin embargo, las herramientas suelen estar orientadas a arquitecturas diferentes a las que funcionan, por ejemplo, el entorno host frente al entorno de destino. Las versiones de las herramientas son importantes para garantizar un entorno de desarrollo homogéneo para todo el equipo.
Automatización de pruebas para software automotriz Es más desafiante debido a la complejidad de iniciar y observar pruebas en objetivos integrados, además del acceso limitado al hardware de destino que tienen los equipos de software. La automatización de pruebas de software es esencial para que las pruebas automotrices sean viables de forma continua desde el sistema de desarrollo anfitrión hasta el sistema de destino.
Las pruebas de software automotriz requieren mucho tiempo. Automatizar el conjunto de pruebas de regresión proporciona un ahorro significativo de tiempo y costos. Además, la recopilación de los resultados de las pruebas y los datos de cobertura de código del sistema de destino son esenciales para la validación y el cumplimiento de las normas.
La trazabilidad entre los casos de prueba, los resultados de las pruebas, el código fuente y los requisitos debe registrarse y mantenerse, lo que significa que la recopilación de datos es fundamental en la ejecución de las pruebas.
Una solución como Parasoft C / C ++test viene con un arnés de prueba optimizado para tomar 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 gran ventaja de la solución de pruebas Parasoft C/C++ es la integración con IDEs y depuradores integrados, lo que facilita y automatiza la ejecución de casos de prueba. Los entornos IDE compatibles incluyen:
La solución Parasoft permite la creación de líneas base para pruebas de regresión como un conjunto organizado de pruebas y verifica automáticamente todos los resultados. Estas pruebas se ejecutan automáticamente de forma periódica para verificar si las modificaciones del código alteran o interrumpen la funcionalidad capturada en las pruebas de regresión. Si se introduce algún cambio, estos casos de prueba no alertarán al equipo sobre el problema. Durante las pruebas posteriores, C++test informará sobre las tareas si detecta cambios en el comportamiento capturado en la prueba inicial.
La paridad de capacidades de ejecución de objetivos remotos con las pruebas basadas en host significa que los equipos de software automotriz pueden obtener los mismos beneficios de la automatización que cualquier otro tipo de desarrollo de aplicaciones.
Los equipos de desarrollo saben que los flujos de trabajo de CI/CD funcionan igual, independientemente de si están en contenedores o no. El valor que los contenedores aportan a los equipos de DevOps reside en que facilitan la implementación y la aplicación de parches a las aplicaciones. Las organizaciones pueden adaptar los contenedores a sus necesidades para acelerar el desarrollo, las pruebas y la producción en casos de uso ágiles y DevOps.
Cuando se trata de administrar entornos de desarrollo complejos, especialmente en el espacio crítico para la seguridad, los equipos generalmente enfrentan los siguientes desafíos:
Todos estos problemas son fáciles de resolver con contenedores. Cada contenedor contiene las versiones estandarizadas de la cadena de herramientas de desarrollo, incluyendo herramientas de análisis estático, compilador, IDE y herramientas de compilación. Estos contenedores se actualizan de forma centralizada y se implementan según sea necesario cuando un desarrollador trabaja en el código del proyecto.
La consistencia del entorno de desarrollo elimina cualquier error que pueda surgir si los desarrolladores tienen versiones ligeramente diferentes de las herramientas en sus escritorios. Es una buena manera de garantizar que todos usen la versión correcta de cada herramienta, lo cual podría ser importante posteriormente para el cumplimiento normativo. Los contenedores también proporcionan una forma centralizada de actualizar las herramientas y garantizan que estas actualizaciones se propaguen inmediatamente por toda la organización.
DevOps en software automotriz exige una visión instantánea y continua de los riesgos y la calidad de cada versión candidata, lo cual se obtiene mediante pruebas continuas mediante retroalimentación automatizada en tiempo real. Si bien la transición del desarrollo tradicional en cascada a Agile y CI/CD puede ser un desafío para sistemas embebidos y críticos para la seguridad, es posible con la preparación adecuada y las mejores prácticas, incluyendo la automatización de pruebas para facilitar la integración continua, la eliminación de cuellos de botella de V&V mediante pruebas tanto en sistemas host como de destino, el uso de contenedores para garantizar entornos de desarrollo consistentes y seguros, la ampliación de la cobertura de pruebas mediante la generación automatizada de pruebas y la ejecución inteligente, y el aprovechamiento de informes centralizados para la toma de decisiones basadas en datos. En conjunto, estas técnicas modernas reducen significativamente las ineficiencias de las pruebas automotrices manuales y hacen que los enfoques automatizados actuales sean mucho más efectivos.
¿Listo para sumergirte más profundamente?