Únase a nosotros el 30 de abril: Presentación de la prueba CT de Parasoft C/C++ para pruebas continuas y excelencia en el cumplimiento | Regístrese ahora

Automoción CI/CD DevOps y automatización de pruebas

Foto de cabeza de Ricardo Camacho, Director de Cumplimiento de Seguridad y Seguridad
Sábado, Abril 7, 2022
7 min leer

CI/CD son términos gemelos que han generado muchas discusiones en el panorama del desarrollo de software. Pase a aprender cómo CI/CD juega un papel clave en la industria automotriz y cómo Parasoft puede ayudar a que su CI/CD sea más eficiente.

Los vehículos modernos suelen tener más de 100 millones de líneas de código. Mantener tanto la calidad como la asequibilidad se han convertido en prioridades y desafíos únicos para muchos equipos de desarrollo. Esto viene junto con requisitos más rigurosos para la seguridad y la protección. Todo esto se suma a que las pruebas se conviertan aún más en una parte integral del ciclo de vida del desarrollo de software (SDLC).

A medida que la industria automotriz continúa adoptar la metodología de desarrollo ágil, aparecen otros procesos que se pueden acelerar. Esto incluye la entrega por parte de DevOps con un enfoque particular en las pruebas continuas. DevOps tiene como objetivo automatizar todos los pasos necesarios para tomar el código de la aplicación y entregarlo al usuario final. Esencialmente, funciona como una cinta transportadora para mover el código de la aplicación a través de distintas fases.

Las iniciativas actuales de DevOps y de todo continuo requieren la capacidad de evaluar los riesgos asociados con una versión candidata de manera instantánea y continua. Las pruebas continuas proporcionan una forma automatizada y discreta de obtener comentarios inmediatos sobre los riesgos comerciales asociados con una versión candidata de software. Guía a los equipos de desarrollo para cumplir con las expectativas comerciales y ayuda a los gerentes a tomar decisiones de compensación informadas para optimizar el valor comercial de una versión candidata. Gran parte de esto se realiza a través de la integración continua (CI).

Nuestro documento técnico sobre el tema ilustra cómo CI/CD DevOps puede ser útil para proyectos de desarrollo automotriz. Este blog cubre algunos de los mismos temas y responde las siguientes preguntas.

  1. ¿Qué es CI/CD en ADAS Development?
  2. ¿Cuáles son los beneficios de CI/CD?
  3. ¿Cómo encaja en la industria automotriz DevOps?
  4. ¿Qué puede hacer la automatización de pruebas por su equipo?
  5. ¿Qué son los contenedores y cómo funcionan?
  6. ¿Por qué Parasoft es bueno para CI/CD DevOps en el desarrollo automotriz?

Bucle infinito de integración continua y desarrollo continuo: planificar, codificar, construir, probar, lanzar, implementar, operar, monitorear, continuar nuevamente con el plan.

Integración continua como parte de un ciclo de desarrollo continuo.

¿Qué es CI/CD?

CI/CD significa integración continua y entrega continua. La combinación de los dos crea una canalización automatizada donde el código se construye, luego se prueba y luego se implementa mediante procesos automatizados. También implica que los equipos de desarrollo trabajen en ciclos más cortos en un flujo de trabajo más optimizado.

Equipos que utilizan CI/CD por lo general, tienen riesgos, costos y tiempos de desarrollo reducidos al usar esta metodología y enfoque. Como se muestra arriba en el ciclo DevOps de CI/CD, el circuito de retroalimentación habilita el aspecto "continuo" de la metodología para habilitar la automatización. Sin embargo, son las pruebas automatizadas las que impulsan todo el ciclo.

¿Cómo encaja CI/CD en DevOps para la industria automotriz?

Dado que gran parte del desarrollo automotriz se ha visto envuelto en el software, impulsar las actualizaciones se ha convertido en el trabajo más rutinario para abordar las fallas del hardware. Adherirse a las actualizaciones de estándares de seguridad funcional como ISO 26262, AUTOSAR, y más significa que los equipos deben adaptarse rápidamente.

El uso de la metodología Agile, las pruebas continuas y la automatización es la mejor estrategia para abordar estas preocupaciones modernas en el desarrollo y mantenimiento de software automotriz.

Conformidad de software ISO 26262 en la industria automotriz

Beneficios de las canalizaciones de CI/CD

Aquí hay siete beneficios de las canalizaciones de CI/CD en el desarrollo de software automotriz.

Cobertura de código y prueba

Saber qué código estaba y no estaba cubierto a través de la ejecución de casos de prueba, los equipos pueden comprender mejor dónde pueden estar al acecho los errores. También ayuda a saber cuántos casos de prueba más se necesitan para los objetivos de cobertura de código requeridos y obtener resultados más precisos.

Estándares de código

Empleando análisis estático dentro del flujo de trabajo de DevOps de CI/CD facilita el cumplimiento de los requisitos de codificación de la industria, como MISRA C/C++.

Automatización de pruebas continuas

Aproveche la inmensa mano de obra y la reducción de costos para crear software automotriz pruebas de forma continua automatizada que requiere poca interacción humana.

Prueba de desplazamiento a la izquierda

Las pruebas tempranas y frecuentes ayudan a garantizar menos vectores de amenazas, errores y problemas durante su flujo de trabajo. Los errores se exponen antes, lo que lleva a correcciones más fáciles, tiempos de implementación reducidos y costos de proyecto más bajos.

Seguridad

Uso de análisis estático estándares de codificación como SEI CERT C/C++ permite la detección temprana de vulnerabilidades y errores de seguridad.

Contenedores

Estos pueden ayudar a crear entornos de desarrollo reproducibles, consistentes y seguros. Se pueden actualizar de manera centralizada y luego implementar como código de actualización de los desarrolladores.

Impulsado por datos

La base de las pruebas continuas es la generación y el análisis de datos. Al crear los datos apropiados para escenarios específicos que desea ejecutar, puede simular mejor el escenario en lugar de depender de las fuentes de datos de producción.

Mejores prácticas de DevOps para el desarrollo automotriz

Construyendo el ecosistema correcto de automatización de pruebas de DevOps

Es importante comprender completamente las fases de DevOps y cuándo comenzar a usar las herramientas adecuadas para obtener los mejores resultados. También hay varias herramientas o soluciones de canalización de CI/CD probadas y verdaderas en el mercado que respaldan su implementación de DevOps. Algunas de estas herramientas para la industria automotriz incluyen:

  • parasoft
  • Jenkins
  • GitHub
  • GitLab
  • Azure DevOps
  • bitbucket
  • Bamboo
  • Docker (contenedores)
Bucle infinito de integración continua y desarrollo continuo que muestra los métodos de prueba cuando corresponda.
Un ejemplo de fases de DevOps con métodos de prueba cuando corresponda.

Automatización de pruebas de seguridad para el desarrollo de software automotriz

Es posible que haya escuchado el término, DevSecOps, antes de. Esta es la práctica de integrar la seguridad en el flujo de trabajo de DevOps. Se requiere un cambio de mentalidad en los equipos para integrar herramientas y prácticas de seguridad en esta metodología.

La adopción de la seguridad en su flujo de trabajo es primordial, ya que la seguridad se ha vuelto muy importante para muchos fabricantes de automóviles. Requisitos normativos del WP.29 de la UNECE y la necesidad de incorporar procesos de seguridad de estándares como ISO 21434 necesitarlo.

En la figura anterior se muestra la incorporación de la seguridad en las fases de CI/CD, así como también dónde se pueden aplicar los métodos de prueba.

Integración Continua en Software Automotriz

Uno de los componentes centrales de DevOps es la integración continua. CI es la fusión de funciones de código, correcciones o pequeños cambios respaldados por procesos que incluyen control de versiones y automatización de compilación de software.

Los procedimientos automatizados variarán para los equipos de desarrolladores según el alcance del proyecto, las prioridades, las herramientas utilizadas, el presupuesto y otros factores.

Infografía que muestra el flujo de trabajo de integración continua.
Un ejemplo de un flujo de trabajo de integración continua.

En pocas palabras, el flujo de trabajo típico comienza cuando los desarrolladores crean una rama desde la que trabajar. Los desarrolladores realizan una solicitud de incorporación de cambios, escriben código y realizan cambios todos los días, varias veces al día. Se realiza una inserción o confirmación para el cambio de código, lo que crea una solicitud de fusión.

El código se envía a un repositorio como Git, generalmente dentro de una plataforma DevOps como GitLab. GitLab ejecutará una canalización para cada confirmación en la rama del desarrollador. En otras palabras, construirá el código y ejecutará scripts de prueba automatizados (análisis estático, pruebas unitarias, cobertura de código, etc.). Las imágenes de Docker también se pueden usar para completar la canalización. Una vez que se haya verificado el código, se fusionará con la rama principal.

Otras plataformas de alojamiento de código como GitHub también se usan comúnmente y pueden alojar ejecutores autohospedados. Estos ejecutores pueden ser servidores físicos, máquinas virtuales o imágenes de contenedores, y se ejecutan en las instalaciones o en una nube pública, como Google Cloud.

Guía de CI/CD para DevOps automotriz

Flujo de trabajo de automatización de pruebas

La automatización ya no es suficiente. Es por eso que las pruebas continuas funcionan en conjunto con la automatización en DevOps para brindar mejores resultados, ciclos de vida más cortos y menos errores. Permite que los equipos cambien rápidamente, un rasgo necesario en el mundo actual de requisitos y actualizaciones en constante cambio.

¿Cómo se construye la tubería?

La creación de su propia canalización de DevOps de CI/CD automotriz dependerá de su equipo, flujos de trabajo, proyecto y similares. Pero, en general, la construcción del oleoducto depende de algunos aspectos clave.

  1. Identificar el hardware de destino, el propósito del software y los resultados esperados.
  2. Conocer los posibles factores de riesgo, vulnerabilidades de seguridad y problemas.
  3. Establecer pruebas automatizadas identificando qué pruebas pueden y deben automatizarse y aplicarlas en consecuencia.
  4. Utilizar las herramientas adecuadas que ayuden mejor a los desarrolladores a abordar las actualizaciones, los errores y los flujos de trabajo generales.
  5. Creación de documentación en torno al sistema para la transparencia y una comunicación más fácil entre los miembros del equipo.

¿Qué desencadena la tubería?

Cuando un desarrollador ha creado un nuevo código o ha finalizado una corrección, enviarlo al repositorio activa la prueba con una prueba de compilación incremental y una prueba de análisis estático en la unidad. Los desarrolladores pueden usar estos resultados para refactorizar según sea necesario.

Los desarrolladores también pueden desencadenar compilaciones de todo el proyecto manualmente o en ciertos momentos durante las horas de trabajo. Esto iniciaría una ejecución de análisis estático completa seguida de un conjunto de pruebas de regresión con pruebas unitarias nuevas y actualizadas.

Infografía que muestra las pruebas de desplazamiento a la izquierda sobre cómo realizar las pruebas temprano ayuda a eliminar errores posteriores costosos y difíciles de corregir.
Cuando se realiza antes en el desarrollo y la refactorización del código, el análisis estático puede eliminar errores posteriores costosos y difíciles de corregir.

Puntos de integración para pruebas automatizadas

Con un enfoque particular en el análisis estático y las pruebas unitarias, la automatización de pruebas desempeña el papel más integral en la fase de código, construcción y prueba del SDLC.

  • Código. En términos de cumplimiento de estándares de codificación, calidad y seguridad, las herramientas de análisis estático son esenciales. Por ejemplo, el software de automoción conforme a MISRA C o C++ requiere informes limpios en la codificación y el registro para garantizar el cumplimiento continuo.
  • Obra Nueva. Esta etapa activa las herramientas de análisis estático e inicia las pruebas de regresión. Esto proporciona un alcance completo del software con precisión para la ubicación de errores y datos para futuras pruebas.
  • Prueba. En esta etapa, los equipos abordan las pruebas de regresión fallidas y prueban las características recién agregadas. La regresión y otros resultados de las pruebas impulsan el ciclo de planificación.

La integración de controles vitales de calidad y seguridad requiere herramientas de análisis estático.

Gráfico que muestra la implementación con Parasoft C/C++test y una cadena de herramientas de compilación en contenedores.
Ejemplo de implementación utilizando Parasoft C/C++test y una cadena de herramientas de compilación en contenedores.

Cómo los contenedores mejoran el desarrollo de software automotriz

Los equipos de desarrollo saben que los flujos de trabajo de CI/CD pueden funcionar de la misma manera, independientemente de si están en contenedores o no. Pero los contenedores permiten que los equipos de DevOps implementen aplicaciones más fácilmente, así como parchearlas y escalarlas según las necesidades de una organización. En esencia, los contenedores aceleran el desarrollo, las pruebas y la producción según se aplican dentro de la utilización de Agile y DevOps.

Cuando se trata de administrar entornos de desarrollo complejos, especialmente en el espacio crítico para la seguridad, los equipos generalmente luchan con 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 (CI / CD).
  • Capacidad para versionar el entorno de desarrollo y restaurarlo para dar servicio a la versión anterior del producto que se certificó con la cadena de herramientas específica.
  • Incorporación y creación de nuevos desarrolladores.

Todos estos problemas se pueden resolver utilizando contenedores.

Conclusión

Cualquier estrategia que reduzca el tiempo de comercialización, los costos y facilite las cosas para los equipos de desarrollo es una situación en la que todos ganan. Adoptar la metodología Agile y cambiar a la izquierda hacia CI/CD DevOps es una necesidad para los desarrolladores de la industria automotriz moderna. Pero no todas las herramientas en el mercado para este propósito se crean de la misma manera.

¿Por qué Parasoft es bueno para CI/CD DevOps en el desarrollo automotriz?

Parasoft presenta un solución única para sus necesidades de CI/CD DevOps. Nuestra herramienta genera automáticamente informes de datos, presenta una interfaz de usuario intuitiva que es fácil de usar para principiantes, ayuda con las pruebas del sistema de extremo a extremo y más. Elimine las preguntas sobre la calificación de la herramienta o las dificultades con el mantenimiento de registros. Realice un seguimiento del progreso mediante informes y paneles inteligentes que brindan datos a través de pruebas unitarias, análisis estáticos y otras métricas.

Nuestras soluciones mantienen los estándares y las certificaciones requeridas para el software crítico para la seguridad. Además, los usuarios de Parasoft se benefician de una interfaz basada en web centralizada y flexible para examinar los resultados cuando se integran en los flujos de trabajo de CI/CD. El tablero de informes dinámico basado en la web utiliza nuestro motor de inteligencia de procesos para ofrecer características de calidad de vida como:

  • Navegación por el código fuente
  • Widgets de informes personalizables
  • Análisis avanzado
  • Filtrado avanzado
Implemente las mejores prácticas de DevOps en su flujo de trabajo de CI/CD y optimice las pruebas.

“MISRA”, “MISRA C” y el logotipo del triángulo son marcas comerciales registradas de The MISRA Consortium Limited. © The MISRA Consortium Limited, 2021. Todos los derechos reservados.