Logotipo de Parasoft
Cubo de prueba de Google

¡Descubra la primera solución de inteligencia artificial de GoogleTest y Agentic certificada por TÜV de la industria para pruebas C/C++! Obtenga los detalles »

Fondo geométrico con toques de azul y verde.
Imagen de portada del documento técnico Guía de CI/CD para DevOps en la industria automotriz

White Paper

Guía de CI/CD para DevOps automotriz

¿Te preguntas qué contiene la guía? Obtén una vista previa a continuación.

Noticias

El rápido crecimiento del software automotriz, impulsado por los ADAS y las crecientes demandas de seguridad, ha encarecido y complejo el desarrollo y las pruebas. Con vehículos modernos que contienen más de 100 millones de líneas de código, los fabricantes de automóviles están adoptando prácticas de CI/CD y DevOps para reducir el tiempo de comercialización y controlar los costos.

Este documento técnico explica cómo la integración de pruebas automatizadas (en particular, análisis estático, pruebas unitarias y cobertura de código estructural alineada con ISO 26262) en los procesos de CI permite realizar pruebas continuas, mejorando significativamente la productividad, reduciendo el esfuerzo de prueba y mejorando la calidad y la seguridad generales del software.

Automatización en CI/CD

Integración continua depende de procesos automatizados de compilación e implementación para evitar flujos de trabajo manuales y lentos que minan su eficacia.

La CI requiere un repositorio de código fuente único, compilaciones automatizadas y una rápida resolución de problemas de integración. Sin embargo, los esfuerzos de CI/CD suelen estancarse en la fase de pruebas, donde determinar qué probar y ejecutar las pruebas, especialmente manualmente, se vuelve una tarea tediosa y costosa. Si bien la automatización de pruebas es esencial, por sí sola no es suficiente, lo que pone de relieve la necesidad de estrategias de pruebas más integrales para mantener la entrega continua.

CI/CD para el desarrollo de ADAS

La CI/CD sigue ganando popularidad en las organizaciones de desarrollo de software automotriz. Sin embargo, los proyectos suelen verse limitados de maneras que el desarrollo de aplicaciones no lo está.

Además de las limitaciones físicas y computacionales del hardware de destino, existen restricciones del mercado. El software automotriz exige seguridad, fiabilidad y ciclos de vida extremadamente largos: los productos pueden permanecer en el mercado durante décadas.

A nivel de desarrollo, el software automotriz requiere IDE, compiladores, análisis estático y dinámico, y herramientas de compilación. Las herramientas suelen estar orientadas a arquitecturas diferentes a las que funcionan (host versus entorno de destino). La consistencia de versiones de las herramientas en todo el equipo es esencial.

Infografía que muestra la integración continua como parte de un ciclo de desarrollo continuo.

La automatización a nivel de compilación utiliza las mismas técnicas. Sin embargo, cuando el código requiere ejecución, la barrera entre el host y el destino se vuelve significativa. La automatización que requiere ejecución de código requiere un soporte especial en el desarrollo de software automotriz.

Automatización de pruebas para software automotriz es más desafiante debido a la complejidad de iniciar y observar pruebas en objetivos integrados, el acceso limitado al hardware de destino y la necesidad de pruebas continuas viables desde los sistemas de desarrollo del host hasta los sistemas de destino.

Pruebas automatizadas desde el host hasta el objetivo

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.

Realizar pruebas unitarias y cobertura de código en el hardware de destino

Una vista de alto nivel de la implementación, ejecución y observación de pruebas desde el host hasta el destino.

Una gran ventaja de la solución de pruebas Parasoft C/C++ es la integración con IDE y depuradores integrados, lo que facilita y automatiza la ejecución de casos de prueba. Los entornos IDE compatibles incluyen Eclipse, Código VS, Green Hills Multi, Wind River Workbench, IAR EW, ARM MDK, ARM DS-5, TI CCS, Visual Studio y muchos otros.

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. 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.

Plataforma de desarrollo en contenedores en el escritorio de cada desarrollador

Las implementaciones de herramientas de desarrollo en contenedores se están convirtiendo en la base de los equipos de desarrollo automotriz. Si bien inicialmente se desarrollaron para resolver problemas con la implementación de microservicios y aplicaciones web, recientemente han ganado popularidad entre los equipos de desarrollo, especialmente entre los equipos grandes que utilizan contenedores para gestionar cadenas de herramientas complejas.

Cuando se trata de gestionar entornos de desarrollo complejos, específicamente en el desarrollo de software 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 o una cadena de herramientas de compilación
  • 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)
  • Crear versiones del 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 configuración de nuevos desarrolladores

Todos estos problemas son fáciles de solucionar con contenedores.

Uso de una herramienta basada en línea de comandos con una cadena de herramientas de compilación en contenedores

Es fácil configurar la herramienta de línea de comandos Parasoft C/C++test Professional para que funcione con una cadena de herramientas de compilación y el entorno de ejecución implementado en contenedores. La herramienta admite implementaciones basadas en contenedores Linux y Docker.

Beneficios de CI/CD

La mayor ventaja de CI/CD es la reducción del riesgo del proyecto. Anteriormente, muchos proyectos dependían de integraciones de software masivas, donde los equipos intentaban integrar su software demasiado cerca del final del desarrollo del producto. Estos equipos se topaban con graves problemas de integración y, a menudo, se encontraban con plazos ajustados para finalizar el proyecto. Las pruebas se alargaban aún más hasta el final del proyecto, cuando resultaba demasiado poco y demasiado tarde.

Al utilizar la integración continua, los equipos de software siempre tienen una versión completa del producto lista para pruebas, entrega y lanzamiento. En lugar de improvisar, el equipo realiza pequeños pasos de integración continuamente para detectar problemas con anticipación y reducir el riesgo de una integración tardía.

A continuación se presentan más beneficios de la integración continua:

  • Las pruebas de integración se realizan con frecuencia y en etapas tempranas., lo que significa que los errores se exponen antes, donde se pueden solucionar de forma más fácil y económica.
  • Las pruebas de regresión comienzan antes Para probar nuevas funciones y ver cómo impactan el código existente, se añaden nuevas pruebas al conjunto de pruebas de regresión después de cada iteración.
  • Mejoras incrementales del producto en términos de añadir y probar nuevas funciones y eliminar errores. Es más fácil incorporar calidad y seguridad de forma incremental.
  • Permite pruebas y entregas continuas, que son partes iguales del proceso de desarrollo continuo. La integración continua por sí sola no es eficaz sin prueba continua y entrega continua

 

CI/CD necesita pruebas continuas

La integración continua es solo una parte de un proceso de desarrollo continuo que requiere pruebas y entrega. Las pruebas continuas proporcionan retroalimentación inmediata, automatizada y discreta sobre las versiones candidatas de software; no se trata simplemente de una mayor automatización de las pruebas, sino de incorporar calidad y seguridad a los productos como parte de los procesos de CI, lanzamiento y entrega.

Análisis estático

La detección temprana de errores y vulnerabilidades de seguridad en el escritorio del desarrollador evita que los errores desperdicien tiempo en las pruebas unitarias y se introduzcan en la compilación del software.

Cumplimiento de estándares de codificación

Ayuda a las Cumplir con los estándares requeridos por la industria como MISRA C/C++ o CERT C/C++, evitando que clases enteras de defectos y malas prácticas de codificación ingresen a la compilación.

Ejecución de pruebas automatizada

Se necesita en cuanto se crea la aplicación. Las pruebas requeridas incluyen pruebas unitarias, además de pruebas no funcionales de carga, seguridad y rendimiento, ejecutadas directamente desde los sistemas de orquestación de CI.

Trazabilidad de requisitos

Vincula el código, las pruebas y otros recursos con los requisitos del negocio. Proporciona una evaluación objetiva de los requisitos no implementados, las deficiencias en las pruebas y el progreso hacia la entrega.

Análisis de impacto de prueba

Proporciona orientación sobre la dirección correcta para las pruebas. Desde una perspectiva de riesgo, los cambios en el código afectan más que al software en sí: afectan a las pruebas y los recursos relevantes.

Prueba de gestión de datos

Aumenta significativamente la eficacia de la estrategia de pruebas continuas. Buenos datos de prueba y prácticas de gestión de datos de prueba Aumente la cobertura y obtenga resultados más precisos.

Desplazamiento a la izquierda con CI/CD

el camino a desplazarse a la izquierdaLa seguridad, la protección y la confiabilidad en el ciclo de vida del desarrollo de software (SDLC) provienen del deseo de detectar y corregir errores y vulnerabilidades de seguridad lo antes posible. Es mucho más fácil, económico y menos arriesgado solucionar los problemas antes, no después. Es de sentido común, pero la industria del software está llena de ejemplos de defectos críticos que causaron resultados catastróficos.

Los requisitos esenciales para un cambio a la izquierda se centran en la necesidad de incorporar la calidad en todas las aplicaciones desde el principio. La seguridad no se puede añadir, sino integrar. A continuación, se presentan algunas recomendaciones para un cambio a la izquierda en el flujo de trabajo de CI/CD que ayudan a crear la plataforma necesaria para las pruebas continuas:

  • Mejorar la automatización de pruebas
  • Aumentar la cobertura del código
  • Automatizar la trazabilidad bidireccional
Diagrama con el eje Y que muestra el porcentaje de defectos y el eje X que muestra las etapas de desarrollo y muestra cómo el costo de los defectos aumenta cuanto más tarde se encuentran en el ciclo de vida del desarrollo.
Encontrar y solucionar vulnerabilidades de seguridad de manera temprana es más barato y menos riesgoso.

Mejorando la seguridad con DevSecOps

Cabe mencionar que las metodologías DevOps y DevSecOps comparten el uso de la automatización y los procesos continuos para establecer ciclos colaborativos de desarrollo. Si bien DevOps prioriza la velocidad de entrega, DevSecOps desplaza la seguridad hacia la izquierda, lo cual es más importante en el software clasificado como crítico para la seguridad integrada.

Tanto DevOps como DevSecOps se basan en la automatización y la colaboración continua, pero DevSecOps prioriza la integración de la seguridad en las primeras etapas del proceso de desarrollo, un requisito esencial para el software embebido y crítico para la seguridad. Al fomentar una colaboración más estrecha entre desarrolladores y partes interesadas, DevSecOps mejora el desarrollo de software seguro. Si bien la automatización de pruebas es un factor clave, es solo una parte del enfoque. Dado que las pruebas suelen ser un cuello de botella importante en el ciclo de vida del software, adelantar las actividades de seguridad y reducir el esfuerzo de las pruebas posteriores mejora significativamente tanto la seguridad del software como la eficiencia del desarrollo.

Acelere la seguridad con CI/CD

Las iniciativas modernas de DevSecOps requieren la capacidad de evaluar los riesgos asociados a una versión candidata de forma instantánea y continua. Las pruebas continuas dentro del flujo de trabajo de CI/CD proporcionan una forma automatizada y discreta de obtener retroalimentación inmediata sobre los riesgos de seguridad asociados a una versión candidata de software. Guían a los equipos de desarrollo para cumplir con los requisitos de seguridad y ayudan a los gerentes a tomar decisiones informadas sobre las compensaciones necesarias para optimizar la versión candidata.

Las pruebas continuas ofrecen una evaluación cuantitativa del riesgo, así como tareas prácticas que lo mitigan antes de que avance a la siguiente etapa del ciclo de vida del desarrollo de software (SDLC). El objetivo es eliminar actividades innecesarias, a la vez que se mejora la calidad y la seguridad, e impulsar el desarrollo hacia una versión exitosa.

Resumen

La integración y entrega continuas son comunes en el desarrollo automotriz. Migrar un proceso en cascada a CI/CD y desarrollo ágil se traduce en una reducción de riesgos y mejoras en la calidad y la seguridad. La seguridad es una prioridad para los desarrolladores automotrices, y CI/CD facilita DevSecOps, que introduce requisitos y controles de seguridad en todos los aspectos del proceso de desarrollo.

Los contenedores se integran perfectamente con CI/CD. Facilitan la implementación rápida y la portabilidad entre diferentes entornos de host, con compatibilidad con control de versiones y centralizado. Los entornos de desarrollo en contenedores son importantes para el desarrollo seguro en una canalización de DevSecOps, ya que permiten proporcionar un entorno de aplicación reproducible con controles de seguridad integrados.

Las pruebas son, sin duda, la actividad que más tiempo y recursos consume en el desarrollo automotriz. Las pruebas continuas son un componente necesario de un flujo de trabajo de CI/CD bien optimizado y proporcionan un marco para implementar las pruebas en etapas más tempranas del ciclo de vida.

Con la correcta aplicación de la automatización y el enfoque en las áreas de mayor riesgo de la aplicación, es posible optimizar las pruebas para que sean menos limitantes en los procesos continuos. Las pruebas continuas requieren herramientas que las apoyen para la automatización y la optimización. Las herramientas que impulsan una mayor cobertura de código, la ejecución inteligente de pruebas y la trazabilidad bidireccional mejoran aún más las pruebas continuas.

Equipo de desarrolladores

¿Listo para sumergirte más profundamente?

Obtenga el documento técnico completo