Seminario web destacado: MISRA C++ 2023: todo lo que necesita saber | Vea ahora

Un micromanifiesto sobre pruebas continuas para DevOps

Logotipo del cubo de Parasoft 300x300
Marzo 11, 2021
6 min leer

DevOps se trata de crear una sinergia entre los desarrolladores y el equipo de operaciones para una mejor entrega de software. Sin embargo, para que DevOps funcione, debe haber pruebas continuas, entre otros factores. ¿Cómo logra pruebas continuas en DevOps? Aquí está el desglose.

Todo el mundo habla de DevOps en estos días, y creo que los principios detrás de él se comprenden bastante bien.

¿Qué significa la prueba continua para DevOps?

El consenso general es que DevOps es "infraestructura como código": la unificación de los equipos de desarrollo y operaciones a través de la automatización.

Otra forma de decir esto es que es una forma en que una aplicación puede llegar desde las líneas de código que escriben los desarrolladores hasta una aplicación completamente implementada. La mejor forma de hacerlo es mediante la automatización.

Ágil en DevOps

Una cosa que escuchamos con bastante frecuencia cuando hablamos de DevOps es el concepto de Agile. Agile es una metodología de desarrollo en la que comprime los ciclos dentro del desarrollo de una aplicación en partes más pequeñas para que pueda concentrarse más fácilmente en ofrecer valor incremental para una aplicación.

En Agile, un proyecto que tradicionalmente tardaría 12 meses en completarse se divide en una serie de sprints que suelen durar de una a dos semanas.

En los sprints, el desarrollo pasa por todo el proceso de decidir un conjunto de historias de usuario, desarrollar esas historias de usuario y luego entregar esas historias de usuario. Durante un período de tiempo, finalmente entregará la solicitud completa. Pero debido a que lo está dividiendo en partes más pequeñas, puede verificar en cada sprint para asegurarse de que está construyendo lo correcto. Este es un habilitador crítico para DevOps porque nos brinda puntos de control para automatizar la entrega de esos fragmentos más pequeños.

¿Qué son las pruebas continuas?

Prueba continua es el proceso de probar continuamente la aplicación. Suena como una obviedad, pero viene en dos formas.

La primera ruta consiste en ejecutar pruebas de forma continua contra la aplicación y, a medida que las nuevas compilaciones están disponibles, esas pruebas verifican que la aplicación funciona como se esperaba. La naturaleza continua de este enfoque de prueba le permite obtener comentarios inmediatos cada vez que hay cambios en el código y ayuda a garantizar que algo hecho en una compilación anterior no afecte a la aplicación en su conjunto.

La otra forma de pensar en las pruebas continuas es que el proceso de pruebas en sí es continuo. Lo que significa que, como parte de la construcción continua, la integración continua y las tuberías de entrega continua, también hay una pista de prueba continua. Esto significa que la automatización de pruebas está integrada en el proceso de compilación y lanzamiento real y puede servir como una puerta de entrada de calidad para garantizar que las aplicaciones cumplan con especificaciones específicas antes de que se implementen automáticamente a través de DevOps.

Si lo piensa, las pruebas continuas son esenciales para DevOps porque sirven como un mecanismo para detener la cinta transportadora si algo anda mal con la aplicación. Si está tomando sus compilaciones e inmediatamente pasándolas a través de la automatización al proceso de entrega, podría estar implementando defectos en producción. Entonces, es por eso que creo que la imagen completa es DevOps y pruebas continuas.

¿Qué necesita para habilitar las pruebas continuas para DevOps?

Hay muchas tecnologías que los equipos pueden aprovechar durante la fase de prueba automatizada del Canalización de DevOps. Individualmente, cada una de estas técnicas y procesos de prueba es bastante valiosa. El verdadero beneficio por su inversión proviene de la incorporación de cada tecnología y proceso de principio a fin.

Escaneos de código automatizados

En los escaneos de código automatizados, esencialmente ejecuta un corrector ortográfico en su código. Esto a menudo se conoce como análisis de código estático y ocurre tan pronto como se escriben las líneas de código.

La idea es que las herramientas busquen patrones en el código que se sabe que conducen a malas prácticas o defectos en el futuro. Con este enfoque, está previniendo, en lugar de detectar, defectos antes de que se introduzcan en sus aplicaciones.

Ejecución de pruebas automatizada

Una vez que se crea una aplicación, el código se oculta. Entonces, la mejor manera de probar su aplicación es validando las entradas y las interfaces del usuario. Tus objetivos aquí son Prueba de UI, pruebas de API, pruebas de bases de datos, pruebas de rendimiento y pruebas de seguridad. Desea poder ejecutar pruebas de regresión completas en las IU y tocar cada una de las API expuestas.

Estas pruebas se conocen como pruebas funcionales y le permitirán validar que las aplicaciones funcionan como se espera. Hay todo un mundo de capacidades aquí y personalmente creo que es un habilitador crítico del proceso de DevOps porque las cosas tienden a ponerse raras cuando se integran entre sí. Entonces, un lugar para buscar realmente aquí es en las pruebas de API.

Gestión de necesidades

Cuando creamos una aplicación, creamos una asociación con los requisitos. De esta manera tenemos un marco para construir la aplicación, pero también conocemos las expectativas comerciales. Las pruebas deben seguir el mismo paradigma. Crea pruebas que están asociadas con los requisitos. Esto le ayuda no solo a comprender si ha cubierto lo suficiente de la aplicación para asegurar a las partes interesadas que la aplicación tiene un nivel suficiente de riesgo para su lanzamiento, sino que también le ayuda a comprender en qué pruebas centrarse cuando partes específicas de la aplicación no funcionan correctamente. La asignación de casos de prueba a los requisitos se convierte en un componente crítico de la priorización y para la corrección en la automatización de pruebas.

Gestión del cambio

“Continuo” es un esfuerzo por lograr una mayor velocidad. Cuando nos movemos tan rápido, si algo cambia y no lo esperábamos, nuestra tubería podría romperse.

La automatización de pruebas es una alarma que nos ayuda a asegurarnos de que estamos entregando un software valioso que está libre de defectos en el proceso de entrega. Si la aplicación cambia, el software automatizado debe saberlo y adaptarse a esos cambios para que no obtenga falsos positivos o, peor aún, falsos negativos. La creación de un proceso de gestión de cambios en la canalización de DevOps lo ayuda a garantizar que los resultados que provienen de sus pruebas automatizadas sean válidos.

Datos de prueba

El acceso a datos de prueba utilizables y seguros es un habilitador fundamental de las pruebas continuas para DevOps. Para crear una canalización de DevOps escalable, debe poder tener una combinación de datos de prueba realistas y / o generados sintéticamente que se puedan inyectar en la automatización de su prueba para que tenga suficientes datos para realizar las pruebas que desea lograr.

Simulación y acceso al entorno de prueba

Anteriormente mencioné que las pruebas funcionales se activan cuando se crea la aplicación. Una pieza clave de esto es el hecho de que esa aplicación está construida e implementada en algún tipo de entorno.

Con el auge de las arquitecturas y microservicios orientados a servicios, los sistemas distribuidos son una colección de pequeñas aplicaciones y puntos finales que necesitan trabajar entre sí. Para ejecutar esta automatización de prueba, debe tener un entorno de prueba estable con todas las dependencias necesarias. Aquí es donde la simulación puede convertirse en un habilitador crítico para la canalización de DevOps. A través de la simulación, puede crear gemelos digitales de puntos finales que no están disponibles o que no tienen los datos de prueba adecuados en el momento en que desea ejecutar la automatización de la prueba.

Al combinar la virtualización de servicios con DevOps, puede eliminar las limitaciones ambientales. Esto permite a la organización obtener acceso y control total sobre el entorno de prueba e incluso implementar entornos de prueba dinámicos.

En un entorno de prueba dinámico, está implementando un entorno en contenedores que contiene principalmente componentes simulados. A través de esta configuración, puede concentrarse en las aplicaciones que desea validar y eliminar el resto.

Aceleración de DevSecOps con contenedores y pruebas continuas

Puede derivar varias copias de estos entornos de prueba dinámicos, porque si piensa en cómo se llevará a cabo la canalización de DevOps real, las ejecuciones de prueba se ejecutarán en función de las comprobaciones de código. Puede haber varias comprobaciones de código en un momento dado, y no desea que las personas hagan cola esperando que esté disponible un entorno de prueba real. Los entornos de prueba dinámicos pueden ser uno de los habilitadores más críticos que se requieren para las pruebas continuas y DevOps.

Retroalimentación continua

Todo lo que hacemos en pruebas continuas para DevOps se trata de obtener resultados significativos sobre los que podamos actuar. La última pieza del rompecabezas es la retroalimentación continua.

En la retroalimentación continua, está tomando los resultados de sus pruebas automatizadas y combinándolos con otras métricas relacionadas con la calidad, como la cobertura de requisitos, la cobertura de API y la cobertura de código. Luego, puede evaluarlos de forma automatizada para asegurarse de que estén dentro de los umbrales definidos para la aceptación de la calidad.

Si la aplicación está bien, se implementa automáticamente en la siguiente etapa. Si no es así, puede detener el proceso de implementación y devolverlo al desarrollo asociado con el registro original. Este mecanismo de retroalimentación rápido e iterativo le permite tener una verdadera confianza en sus pruebas continuas para DevOps.

Resumen

Esta es solo una vista de alto nivel de lo que se requiere para habilitar una estrategia de automatización de pruebas escalable y confiable para su canal de DevOps. Se requiere mucha más información a medida que profundiza en cada uno de estos temas individuales. La intención de este blog es proporcionar un resumen condensado y fácilmente consumible.

Le animo a que consulte nuestro documento técnico sobre pruebas continuas para DevOps. Exploramos detalles sobre el ROI, las implementaciones y los indicadores clave de rendimiento para comprender si está incorporando la tecnología adecuada en el momento adecuado para su canal de DevOps.

Pruebas continuas para DevOps