Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora

Tiempo de lectura: 7 minutos.

Desde 2012, Parasoft ha estado trabajando con un contratista del Departamento de Defensa de EE. UU. En la industria aeroespacial y de defensa para mejorar la calidad y seguridad de su software. El contratista es un contribuyente significativo a una iniciativa de defensa importante y de larga duración. La naturaleza del proyecto ha evolucionado drásticamente durante el mandato de la relación de Parasoft con el contratista. Más recientemente, el Departamento de Defensa ha anunciado planes para poner en marcha las canalizaciones de DevOps para respaldar la iniciativa.

Una canalización de DevOps es una infraestructura automatizada que procesa el código aportado al proyecto por varios equipos. A medida que el código se registra y se envía a través de la canalización, los trabajos de análisis de código y ejecución de pruebas se activan continuamente. Las actividades continuas de calidad del código brindan retroalimentación a los ingenieros y evaluadores de software para que la construcción al final del proceso cumpla con los objetivos de calidad, seguridad y cumplimiento de la organización. DevSecOps integra actividades de pruebas de seguridad en el proceso.

El tamaño y la complejidad del proyecto representan un desafío importante para todos los proveedores involucrados. El propósito de este caso de estudio es describir el recorrido de DevOps de la empresa y destacar las tecnologías y los procesos que caracterizan a DevOps y DevSecOps. Para cumplir con la política de privacidad de la empresa, se ha eliminado la información de identificación.

Fase 1: análisis de código estático

El viaje de DevOps del contratista comenzó en 2012 cuando comenzó a trabajar con Parasoft para implementar una solución de análisis de código estático automatizado. La solución de análisis de código estático existente del contratista carecía de las capacidades de automatización necesarias para entregar software de misión crítica a tiempo y de conformidad con las pautas críticas de seguridad.

La capacidad de automatizar la calidad del código es fundamental para ejecutar una canalización de DevOps, pero pasarían algunos años antes de que las discusiones que tienen lugar dentro del desarrollo de software se centren en DevOps, y mucho menos. DevSecOps. En esta etapa, el contratista quería sistemas automatizados más eficientes. análisis de calidad de código para reducir los costos y riesgos asociados con su proceso de desarrollo, y hacerlo de una manera que le permita lograr el cumplimiento de JSF y DO-178.

Además, el contratista no estaba considerando cambios en su enfoque de seguridad de software en este momento. Las pruebas de seguridad eran una fase separada del ciclo de vida del desarrollo con su propio conjunto de procesos que, para muchas empresas, tenían poco que ver con el análisis de código estático. Sin embargo, una canalización de DevSecOps integra las actividades de seguridad del software en el flujo de trabajo. A medida que el código pasa por diferentes puertas, se pueden aplicar automáticamente diferentes técnicas para validar otros aspectos del código, como la seguridad.

El enfoque de Parasoft siempre ha sido incorporar seguridad en el proceso de ingeniería de software. Esto se logra habilitando verificadores que informan violaciones cuando se detectan patrones que se sabe que dan como resultado defectos relacionados con la seguridad. De hecho, para enfoques como el de Parasoft, analizar la calidad del código y analizar la seguridad sigue exactamente el mismo proceso. La única diferencia es qué fichas están habilitadas. Debido a este enfoque, la automatización de la calidad y la seguridad dentro de una canalización de DevOps es simple.

Las inversiones realizadas en esta etapa ayudaron al contratista a sentar las bases para la iniciativa DevOps que comenzaría a planificar más recientemente.

Fase 2: prueba unitaria y cobertura

La siguiente fase del viaje del contratista fue ampliar sus capacidades de prueba unitaria, también con el objetivo de permitir una mayor automatización. Las pruebas unitarias son una actividad fundamental de calidad de software que los ingenieros y desarrolladores de todas las industrias luchan por implementar de manera consistente y eficiente. Es una actividad notoriamente costosa en términos de recursos de ingeniería por varias razones, entre ellas:

  • Se requiere tiempo y experiencia para crear pruebas.
  • Tiempo y recursos informáticos necesarios para ejecutar las pruebas.
  • Conocimientos y habilidades técnicas requeridas para mantener las pruebas unitarias.
  • Capacidad para identificar qué pruebas ejecutar después de cambios en el código.

Una vez más, el contratista se acercó a Parasoft para reemplazar su actual herramientas de prueba unitaria con Parasoft porque necesitaba crear, ejecutar y mantener sus pruebas unitarias de manera más eficiente. Si bien cada proveedor de pruebas tiene sus ventajas y limitaciones, la solución de prueba integrada insignia de Parasoft, Parasoft C / C ++test, pone énfasis en cobertura de prueba y trazabilidad de requisitos como parte integral del flujo de trabajo de pruebas unitarias. La capacidad de ejecutar pruebas unitarias de manera eficiente en todos los marcos y recopilar información de cobertura concisa que se remonta a los requisitos ayudó al contratista a cumplir de manera eficiente sus objetivos críticos de seguridad y de cumplimiento en esta etapa.

Ya sea que produzcan sus propias aplicaciones o integren código posterior en sus proyectos, las organizaciones que entregan software para iniciativas de DoD críticas para la seguridad deben poder demostrar la trazabilidad desde el requisito hasta la prueba, así como informar la integridad de las pruebas. El integrador de software es responsable de cualquier efecto negativo si una unidad de compilación descubierta produce un comportamiento inesperado en la aplicación, como un bloqueo o una superficie explotable.

La información continua y completa sobre el estado de la aplicación permitió al contratista entregar con confianza software sin errores críticos. El "ciclo de retroalimentación", como se lo conoce comúnmente, es fundamental para que los equipos cumplan con los rigurosos ciclos de lanzamiento prometidos por DevOps. Esto se debe a que el ciclo de retroalimentación ideal devuelve datos de prueba, análisis de código, cobertura y trazabilidad completos y precisos lo antes posible para que los ingenieros de software puedan solucionar los problemas sin desperdiciar iteraciones. El ciclo de retroalimentación que hizo posible la prueba C / C ++ permitió al contratista encontrar defectos e identificar el código descubierto crítico para la seguridad de la aplicación antes de que el costo de solucionar esos problemas se volviera exorbitante.

Más recientemente, la compañía ha recurrido a Parasoft para medir la cobertura del código a nivel de ensamblaje, lo que le permite cumplir con sus objetivos de cumplimiento DO-178B / C. Si bien muchos de los procesos que marcan una verdadera canalización de DevOps aún no se han implementado, gran parte de la infraestructura se ha implementado. Además, el departamento de gobierno que ejecuta la iniciativa ha decretado que todos los contratistas que contribuyan al proyecto sigan el modelo DevOps.

Fase 3: Sostenibilidad

Los proyectos gubernamentales de larga duración finalmente llegan a una fase en la que el enfoque cambia de un nuevo desarrollo a la sostenibilidad. Esto significa que, aunque el desarrollo continúa, el software y el mantenimiento se convierten en el objetivo principal a medida que se actualiza el hardware. El impulso hacia la sostenibilidad significa un énfasis aún mayor en la eficiencia de las pruebas de software.

El contratista en el centro de este estudio de caso está desarrollando actualmente una canalización de DevOps para respaldar la fase de sostenibilidad del programa. La canalización está destinada a procesar el código no solo aportado por el contratista principal, sino también por varios otros proveedores responsables de diferentes partes del código base. El objetivo es estandarizar y automatizar las actividades de prueba utilizando las soluciones de Parasoft.

En última instancia, la canalización de DevOps se ejecutará en un entorno seguro y en contenedores, lo que ha sido considerado la mejor práctica por el jefe de DevSecOps para todo el Departamento de Defensa de EE. UU. Esto permite a la organización implementar políticas de prueba de cambio a la izquierda que se centran en la seguridad y la calidad.

Cambio cultural

Una de las diferencias clave entre una canalización de DevOps y una infraestructura de pruebas automatizadas es que DevOps requiere cambios culturales dentro de la organización. Las pruebas automatizadas y las actividades de compilación son parte del avance hacia DevOps, pero a veces se deben implementar nuevas tecnologías que requieren que ciertas prácticas se realicen de diferentes maneras. Los cambios permiten a la organización lograr los mismos objetivos de manera más eficiente y con mejores resultados.

Por ejemplo, una de las formas en que Parasoft apoya DevSecOps es proporcionando datos procesables en cada etapa del ciclo de desarrollo; esta es la característica del ciclo de retroalimentación de los flujos de trabajo de DevOps. Los datos no solo son completos y procesables, sino que en muchos casos Parasoft permite flujos de trabajo de remediación que están a un clic de distancia. Los resultados del análisis de código se vinculan directamente con la infracción del código y la documentación para ayudar a los ingenieros a corregir rápidamente los defectos y volver a ejecutar el análisis de inmediato.

Todavía es un trabajo en progreso, pero el contratista aeroespacial y de defensa se ha comprometido a realizar los cambios culturales necesarios para implementar DevOps y estandarizar las soluciones de Parasoft.

Conclusión

En el momento de redactar este documento, el contratista ha implementado análisis de código estático automatizado y pruebas unitarias automatizadas con cobertura y trazabilidad integradas, así como cobertura a nivel de ensamblaje. La implementación de estas tecnologías es un paso crítico hacia la creación de una verdadera canalización de DevOps, ya que permiten que los datos completos y precisos sobre el estado de la aplicación se retroalimenten continuamente a los ingenieros de software.

El camino hacia la verdadera canalización de DevSecOps será aún más corto porque el contratista está estandarizando la prueba Parasoft C / C ++. En un modelo de ingeniería de software tradicional, las pruebas de seguridad son un proceso independiente que comienza después de que la mayor parte de la aplicación ha sido programada y probada para determinar su calidad. La prueba Parasoft C / C ++ está diseñada para integrar las actividades de prueba de seguridad en el flujo de trabajo normal. Cambiar del análisis de código estático que apunta a la calidad a un conjunto de verificadores que apuntan a la seguridad es simple e incluso puede ejecutarse en paralelo.

Las sólidas capacidades de prueba, cobertura y trazabilidad de unidades de Parasoft C / C ++ también se automatizan fácilmente, lo que permite a cualquier equipo de ingeniería de software obtener rápidamente la retroalimentación que necesita para cumplir la promesa de un modelo DevSecOps.

Incorpore seguridad en su proceso de desarrollo de software desde el principio.

  • Industria: Militar & Defensa
  • Solución: Prueba C / C ++