Logotipo de Parasoft
Icono para mundo incrustado en blanco

¡Somos nominados al premio Embedded Award 2026 Tools y nos encantaría recibir su apoyo! Vota por C/C++test CT >>

Imagen de portada del informe técnico

White Paper

Mejores prácticas de DevOps para el desarrollo de software automotriz

Antes de comenzar, vea una vista previa a continuación.

Noticias

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:

  • Utilice la automatización de pruebas para permitir la integración continua.
  • Elimine los obstáculos de validación y verificación con pruebas continuas en los sistemas host y de destino.
  • Aproveche los contenedores para crear entornos de desarrollo consistentes, reproducibles y seguros.
  • Aumente la cobertura de pruebas con la generación automatizada de pruebas y la ejecución inteligente de pruebas.
  • Tome decisiones basadas en datos a partir de informes y análisis centralizados.

Utilice la automatización de pruebas para permitir la integración continua

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.

Integración continua

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.

Automatización de pruebas en el flujo de trabajo de CI/CD

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.

Cómo las herramientas de automatización de pruebas ayudan con las pruebas unitarias

Las herramientas de automatización de pruebas proporcionan una forma de evitar los siguientes obstáculos en las pruebas unitarias:

  • Prueba unitaria y los marcos de afirmación proporcionan formatos de ejecución estandarizados como CPPUnit.
  • La integración IDE entrega los resultados de las pruebas unitarias directamente al desarrollador.
  • La generación de pruebas unitarias guiadas reduce el esfuerzo de codificación.
  • La burla de funciones aísla el código de sus dependencias.
  • La cobertura del código muestra qué código se ejecutó.
  • Ejecución de pruebas basadas en host y destino.

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.

Código

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.

Build

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.

Prueba

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.

Elimine los obstáculos de validación y verificación con pruebas continuas en los sistemas host y de destino.

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.

Algunas actividades de prueba continua

  • Utilice el análisis estático desde el principio Para la detección de errores y vulnerabilidades de seguridad. La detección temprana, generalmente en el escritorio del desarrollador, evita que los errores desperdicien tiempo en las pruebas unitarias y se incorporen a la compilación del software.
  • Hacer cumplir un estándar de codificación para cumplir con los estándares corporativos y de la industria requeridos, como MISRA C/C++ o SEI CERT C. Adherirse a un estándar de codificación evita que clases enteras de defectos y malas prácticas de codificación ingresen a la compilación y se conviertan en problemas mayores más adelante.
  • Automatizar la ejecución de pruebas en sistemas host y de destino Tan pronto como se codifican las unidades y los subsistemas integrados están listos, las pruebas necesarias para verificar las unidades también incluyen pruebas no funcionales, de carga, de seguridad y de rendimiento. Estas pruebas se ejecutan directamente desde el sistema de orquestación de CI. Los resultados se extraen y recopilan en la misma compilación. La información de cobertura de código (declaración, rama y MC/DC) se cruza por unidad, archivo, prueba y número de compilación.
  • Mantener la trazabilidad de los requisitos Correlacionar el código, las pruebas y otros recursos con los requisitos de las partes interesadas. Esto proporciona una evaluación objetiva de los requisitos que funcionan según lo previsto, los que requieren validación y los que están en riesgo.
  • Utilice el análisis de impacto de las pruebas Para enfocarse en las áreas de pruebas. Desde una perspectiva de riesgo, los cambios en el código impactan más que el software en sí. Afecta las pruebas y los recursos relevantes. A medida que los equipos realizan cambios en el código, surgen preguntas: ¿Necesitamos nuevas pruebas o modificar las existentes? ¿Cuál es el impacto en las dependencias? La automatización ayuda a los equipos a enfocarse únicamente en las pruebas afectadas.
  • Mantener los datos de prueba automáticamente Para aumentar la eficacia de una estrategia de pruebas continuas. Unas buenas prácticas de gestión de datos de prueba aumentan la cobertura y generan resultados más precisos. Sin embargo, desarrollar o acceder a los datos de prueba puede suponer un reto considerable en términos de tiempo, esfuerzo y cumplimiento normativo.
  • Confíe en las pruebas y la generación de datos Para que las pruebas continuas funcionen. Puedes generar continuamente datos adecuados para el tipo de escenario que intentas ejecutar, en lugar de depender de fuentes de datos de producción y esperar que todos los datos correctos estén en el lugar correcto. Combinar la generación de datos con la simulación te permitirá inyectar los datos correctos en el lugar correcto, en el momento correcto.

Pruebas continuas en sistemas objetivo automotrices integrados y anfitriones

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.

Entornos IDE compatibles

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:

  • eclipsar
  • Código VS
  • MS Visual Studio
  • Colinas Verdes Multi
  • Banco de trabajo Wind River
  • EW IAR
  • BRAZO MDK
  • BRAZO DS-5
  • TI CCS y más

Prueba de regresión automatizada

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.

Aproveche los contenedores para crear entornos de desarrollo consistentes, reproducibles y seguros

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:

  • Sincronizar actualizaciones para todo el equipo a una nueva versión de una herramienta como un compilador, construir una cadena de herramientas, etc.
  • Reaccionar dinámicamente a un nuevo parche de seguridad para la biblioteca o el kit de desarrollo de software (SDK).
  • Garantizar la coherencia de la cadena de herramientas para todos los miembros del equipo y la infraestructura automatizada o CI/CD.
  • Capacidad de versionar el entorno de desarrollo y restaurarlo para dar servicio a la versión anterior del producto que fue certificada con una cadena de herramientas específica.
  • Incorporación y creación de nuevos desarrolladores.

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.

Resumen

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.

Equipo de desarrolladores

¿Listo para sumergirte más profundamente?

Obtenga el documento técnico completo