Logotipo de Parasoft

WEBINAR

Optimice el cumplimiento de ISO 26262 e ISO 21434 con pruebas automatizadas

En la industria automotriz, ISO 26262 aborda la seguridad del software en el desarrollo de productos y describe varios métodos de prueba para garantizar la entrega de vehículos seguros. De manera similar, muchas organizaciones deben cumplir con los requisitos de verificación y seguridad del software recomendados por la norma ISO 21434.  

Los métodos de verificación esenciales, como el análisis estático, las pruebas unitarias, la cobertura del código estructural y la trazabilidad de requisitos, pueden requerir mucho tiempo y esfuerzo. Descubra cómo automatizarlos dentro del flujo de trabajo natural del desarrollo de software para reducir los costos de mano de obra, acelerar el tiempo de comercialización, mejorar la calidad del código y garantizar el cumplimiento normativo. ISO 26262 y ISO 21434 Normas de seguridad y protección funcional.  

Puntos clave

  • La integración es clave: Puede integrar los requisitos de ciberseguridad en sus procesos de seguridad existentes, lo que facilita la gestión de ambos.
  • Pruebas continuas: Adoptar prácticas de pruebas continuas dentro de su flujo de trabajo de CI es una práctica recomendada para los principales fabricantes de automóviles.
  • Beneficios de la automatización: La automatización de pruebas como el análisis estático, las pruebas unitarias y la cobertura de código reduce los costos laborales, acelera el tiempo de comercialización y mejora la calidad del código.
  • Asuntos de herramientas: Usando las herramientas adecuadas, como GoogleTest para pruebas unitarias e integración con soluciones de cobertura y trazabilidad, es vital.

El modelo V y los niveles de prueba

ISO 26262, en particular la Parte 6 para el desarrollo de softwareUtiliza un modelo en V. Este modelo muestra las diferentes fases de desarrollo a la izquierda (requisitos, diseño e implementación) y las correspondientes fases de prueba a la derecha (pruebas unitarias, de integración y de sistema). Si bien el modelo en V es un proceso recomendado, no es una metodología de desarrollo como Waterfall o Agile.

La norma ISO 21434 también utiliza un enfoque similar de modelo V para el desarrollo y la verificación, enfatizando la necesidad de probar las funciones de seguridad a diferentes niveles. Esto implica realizar pruebas unitarias de las funciones de cifrado, pruebas de integración de los procesos de arranque y pruebas del sistema de los protocolos de comunicación para garantizar la seguridad del intercambio de datos.

Aprenda las mejores prácticas para acelerar el cumplimiento de la norma ISO 21434 con pruebas automatizadas.

Conexión de pruebas de seguridad y protección

La norma ISO 21434 establece que la ciberseguridad debe integrarse en los procesos existentes. Dado que muchos profesionales de la industria automotriz ya están familiarizados con la norma ISO 26262, la integración de la seguridad es más sencilla. Esto suele implicar que los ingenieros de sistemas colaboren estrechamente con los ingenieros de seguridad para definir requisitos, realizar análisis de riesgos y análisis de amenazas para la seguridad.

Ambas normas requieren métodos de verificación similares:

  1. Pruebas basadas en requisitos: Vincular las pruebas directamente a los requisitos de seguridad/protección.
  2. Análisis estático: Comprobación del código para detectar posibles problemas sin ejecutarlo.
  3. Análisis dinámico: Incluye pruebas unitarias, de integración y de sistema.
  4. Cobertura de código: Garantizar que las pruebas ejerciten el código lo suficiente. Para la seguridad, métricas como la Cobertura de Condición/Decisión Modificada (MCDC) son importantes, ya que van más allá de la simple cobertura de declaraciones o ramas.

Automatización del cumplimiento con CI/CD

Muchos fabricantes de automóviles están adoptando flujos de trabajo de integración continua (CI) y entrega continua (CD). Estos flujos de trabajo ayudan a predecir la entrega de software, gestionar los cambios en los requisitos y reducir los problemas reportados por el departamento de control de calidad. El enfoque se centra en la automatización a escala.

Frameworks como GoogleTest son populares para pruebas unitarias en C++. Son fáciles de usar, tienen una sintaxis clara y se integran bien con sistemas de compilación como CMake. Sin embargo, para obtener el máximo provecho, estos frameworks pueden mejorarse con herramientas que añaden cobertura de código estructural y trazabilidad de requisitos.

Un ejemplo típico de flujo de trabajo

Así es como podría lucir un flujo de trabajo optimizado:

  1. Desarrollo de rama de características: Los desarrolladores trabajan en código nuevo en una rama separada, a menudo vinculada a requisitos en herramientas como Jira.
  2. Pruebas locales: Los desarrolladores prueban su código localmente utilizando GoogleTest y su cadena de herramientas en contenedores.
  3. Solicitud de extracción: Se crea una solicitud de extracción, que activa una canalización automatizada.
  4. Puertas automatizadas: Esta canalización incluye parámetros de calidad para las pruebas, como la cobertura de código. Si no se cumplen estos parámetros (por ejemplo, cobertura MCDC insuficiente), la solicitud de extracción falla.
  5. Análisis y correcciones: Los desarrolladores analizan los informes de canalización (a menudo publicados en páginas de GitHub o visualizados a través de extensiones IDE) para identificar brechas y agregar casos de prueba faltantes.
  6. Unir: Una vez que se solucionan todos los problemas y el proceso avanza, el código se fusiona en la rama principal.
  7. Tubería de la rama principal: La fusión activa otra tubería que monitorea la rama estable y envía los resultados a un sistema de informes como Parasoft DTP para análisis agregados e informes de cumplimiento.

Consideraciones de costo

Al comparar herramientas de código abierto con soluciones comerciales, entran en juego varios factores de costo:

  • Coste de adquisición: Al principio, las herramientas de código abierto pueden parecer más baratas.
  • Esfuerzo de calificación: Las herramientas comerciales a menudo están precertificadas, lo que reduce los costos de calificación para su equipo.
  • Costo de integración: Las herramientas que se integran fácilmente en flujos de trabajo automatizados (como las herramientas de línea de comandos) son menos costosas de implementar.
  • Costo de capacitación: Las herramientas de código abierto podrían no requerir una capacitación extensa si los desarrolladores ya están familiarizados con ellas.
  • Creación de casos de prueba: Los marcos que simplifican la creación de casos de prueba, como GoogleTest, pueden ser muy eficientes.
  • Alcanzar los objetivos de cobertura: Las herramientas que proporcionan sugerencias e informes detallados para lograr una mayor cobertura, especialmente MCDC, pueden reducir significativamente el esfuerzo y el costo.

Al automatizar los métodos de verificación e integrarlos en su flujo de trabajo de desarrollo, puede reducir eficazmente los costos laborales, acelerar su tiempo de comercialización, mejorar la calidad del código y garantizar el cumplimiento de las normas ISO 26262 e ISO 21434.