¡Todas las grandes empresas utilizan DevOps! Diez minutos para explicarle la aplicación de la automatización en DevOps

Hola a todos. DevOps, CI/CD, Docker, Kubernetes... parece que todo el mundo habla de estas tecnologías, tanto que sientes que estás a punto de llegar a la etapa NoOps. No te preocupes, es normal sentirse perdido en el vasto mar de herramientas y diversas mejores prácticas, es hora de que analicemos qué es DevOps.

1. Introducción a DevOps
1. Introducción

DevOps es una serie de prácticas de desarrollo de software que enfatizan la comunicación y la cooperación entre los desarrolladores (Dev) y el personal de operaciones (Ops). A través de procesos y herramientas automatizados, la construcción, las pruebas y el lanzamiento del software son más rápidos, más frecuentes y más confiables. DevOps enfatiza una cultura que rompe las barreras inherentes entre el personal de desarrollo y operación y mantenimiento, y enfatiza la comunicación y cooperación entre desarrollo, pruebas, operación y mantenimiento, y otros vínculos. DevOps es un método práctico que extiende las prácticas de desarrollo ágil a la etapa de operación y mantenimiento, enfatizando el proceso de construcción, implementación y entrega de software. DevOps es también una serie de cadenas de herramientas, desde codificación, construcción, prueba, empaquetado, publicación hasta configuración, monitoreo, etc., basadas en una serie de principios básicos y metodologías prácticas, formando un conjunto de cadenas de herramientas instrumentales y automatizadas. Les permite crear, probar e implementar aplicaciones y, al mismo tiempo, reducir significativamente el tiempo de comercialización. DevOps hace que el proceso del software sea "rápido" y "estable". La rapidez y la estabilidad se reflejan en las cuatro dimensiones de frecuencia de implementación, ciclo de entrega, tiempo promedio de reparación y tasa de fallas de cambio.

El control de calidad es una parte integral del proceso de desarrollo en cascada, pero aún desempeña un papel importante en DevOps. El proceso de DevOps nunca consiste en dedicar mucho tiempo a la creación de pruebas integrales entre la codificación y el lanzamiento. También significa que los equipos trabajan constantemente para especificar, crear, probar e implementar software de manera eficiente y rápida.

El aumento del volumen de pruebas también aumenta los requisitos para la automatización de pruebas. DevOps requiere una copia de seguridad de la automatización de pruebas para mantenerse ágil y eficiente. La automatización de pruebas es esencial para mantener un control de calidad completo y mantener la velocidad de liberación. De todos modos, la dependencia de las pruebas automatizadas no se puede evitar en las canalizaciones de CI/CD.

2. Beneficios

La automatización de pruebas tiene muchas ventajas que las empresas pueden aprovechar para optimizar sus prácticas de DevOps:

Elimina la posibilidad de error humano;
No hay necesidad de intervención humana durante las ejecuciones de prueba;
Obtiene retroalimentación más rápida;
Más cobertura del dispositivo;
La automatización garantiza una calidad constante;
Reconfiguración automática;
Aunque tiene varias ventajas, las pruebas automatizadas se pueden reemplazar por completo ¿Pruebas manuales? Bueno, la respuesta no es sí. Sin embargo, el mejor enfoque debería ser automatizar tanto como sea posible y realizar únicamente pruebas manuales en la funcionalidad de la aplicación menos crítica. Esto incluye actualizar scripts de prueba, revisiones, completar pruebas únicas y pruebas de usabilidad, etc.

La implementación continua de la automatización de pruebas facilita la cuantificación del grado de automatización en función de datos históricos. Sin embargo, alguien que sea nuevo en el campo de las pruebas puede utilizar esta fórmula estándar para calcular el retorno de la inversión estimado de la automatización de pruebas.

Costo de automatización de pruebas = costo de herramientas + costo de mano de obra para crear scripts + costo de mantenimiento de pruebas automatizadas

Si utiliza una prueba automatizada varias veces, el ROI se sumará después de cada uso. Entonces, si la evaluación de la automatización es inferior a la de las pruebas manuales, continúe con la estrategia y encuentre tantas áreas de automatización como sea posible.

2. Análisis de cada etapa de prueba
1. Pruebas unitarias

El objetivo de la prueba unitaria es que no hay llamada a la base de datos ni código de servicio web. Estas pruebas son muy rápidas debido a su enfoque limitado y a que no dependen de servicios o sistemas externos.

Las pruebas unitarias se centran únicamente en garantizar que todas las rutas pasen por el código y se verifiquen correctamente. Considere un algoritmo de nómina diseñado para calcular los salarios de los trabajadores por cada hora que trabajan. El algoritmo calculará el salario teniendo en cuenta el número de horas trabajadas y la tarifa por hora. Sin embargo, este algoritmo será necesario para muchos tipos de situaciones, entre ellas:

Horas de trabajo estándar (0–40 horas)
Horas extras (horas superiores a 40 horas máximas de la empresa por período)
Corrección de errores (horas negativas, salarios negativos, horas máximas excedidas)
Utilice herramientas ampliamente aceptadas (incluyendo NUnit, RSpec y JUnit, etc.) .) para verificar esta situación. Esta situación se puede verificar de manera efectiva mediante pruebas unitarias utilizando herramientas reconocidas que incluyen NUnit, JUnit, RSpec, etc.

2. Pruebas de integración

Las pruebas de integración verifican el comportamiento entre componentes. Incluye verificar el comportamiento entre llamadas a bases de datos, servicios web u otras interacciones API.

En comparación con las pruebas unitarias, las pruebas de integración son más lentas debido a la gran cantidad de "rituales" involucrados en el establecimiento de una conexión, la autenticación y el manejo de retrasos en la red y el servicio. Las pruebas de integración deben incluirse en una verificación más crítica en lugar de una verificación granular.

3. Pruebas funcionales

Las pruebas funcionales tienen como objetivo verificar funcionalmente una parte del sistema. A diferencia de las pruebas de integración, las pruebas funcionales son mucho más lentas porque abarcan todo lo largo y ancho de la interfaz de usuario. Es comprensible que sean mucho más lentas que las pruebas unitarias.

Lento debido a su naturaleza frágil; es factible dejar que las pruebas funcionales manejen casos de alto valor. Dejar que las pruebas funcionales manejen demasiadas operaciones de bajo nivel puede reducir drásticamente el tiempo de comercialización.

Una cobertura de pruebas eficaz solo se puede lograr con una estrecha colaboración entre los equipos de ejecución. Garantizar pruebas eficaces también garantiza que se evite cualquier forma de duplicación en la cobertura de las pruebas. Evitar la duplicación de pruebas es fundamental para el negocio, de modo que se puedan utilizar herramientas costosas para resolver problemas específicos.

Entonces, ¿bajo qué circunstancias es más factible la automatización de pruebas?

Durante las pruebas de requisitos de funcionalidad crítica para que los usuarios puedan ver claramente sus fallas;
piezas repetitivas y que requieren mucha mano de obra;
pruebas funcionales con un historial de causar problemas;
pruebas de componentes que requieren grandes cantidades de datos;
pruebas de estrés/carga;
apuntando a diferentes versiones, Conjuntos de datos y navegadores para pruebas;

4. Pruebas automatizadas

Las empresas deben automatizar la fase de prueba tanto como sea posible para garantizar que las fases de entrega de integración requeridas puedan cumplir con los plazos de manera efectiva. Para implementar eficazmente las prácticas de DevOps, los equipos deben comenzar la fase de prueba temprano en el desarrollo y mantenerla continuamente durante todo su ciclo de vida. La frecuencia de lanzamiento deseada se logra fácilmente detectando los problemas desde el principio, cuando son más fáciles de solucionar y no cuestan una fortuna.

Sin embargo, es necesario utilizar diferentes métodos de prueba en cada etapa del ciclo de desarrollo. Los diferentes tipos de pruebas automatizadas que necesita en diferentes proyectos incluyen regresión, unidad, rendimiento, integración, carga, accesibilidad, seguridad y monitoreo de producción, así como pruebas funcionales, etc.

3. Automatización y DevOps
1. ¿Cuál es su importancia?

Para adaptarse a la velocidad de las entregas frecuentes, el trabajo de prueba debe ser más eficiente, lo que hace que las pruebas automatizadas sean imprescindibles. Cuando se trata de pruebas automatizadas, tenemos que hablar de la pirámide de pruebas. La pirámide se divide aproximadamente en pruebas unitarias, pruebas de interfaz y pruebas de interfaz de abajo hacia arriba. Cuanto más baja es la base de la pirámide, menor es el costo de resolver el problema. Cuanto más arriba en la pirámide, mayor es el costo de resolver el problema y cuanto menor sea la eficiencia. Por lo tanto, de acuerdo con el principio de la pirámide, debemos hacer lo suficiente en términos de pruebas unitarias en el nivel más bajo. La adecuación aquí no es solo una gran cantidad de casos de uso y una alta cobertura, sino que también requiere una alta calidad de las pruebas. Si se descubre un problema durante la prueba de la interfaz, debemos ir de una interfaz a otra, módulo, etc., y requerir la cooperación de varias partes para localizar el problema. Si se encuentra un problema en la prueba unitaria, es un problema con el módulo en sí y el problema se localizará y resolverá mucho más rápido. Las pruebas automatizadas pueden mejorar tanto la eficiencia como la calidad de las pruebas. Sin embargo, las pruebas automatizadas tienen ciertos requisitos para las capacidades y herramientas de prueba automatizadas de los evaluadores, y requieren una cierta cantidad de inversión, pero los beneficios posteriores también son obvios.

2. ¿Cómo avanzar?

En el ciclo de vida del desarrollo ágil, enriquecemos y actualizamos el producto en cada iteración para que satisfaga mejor las necesidades del sistema del cliente. El foco de las pruebas está en la etapa de desarrollo para garantizar que el producto cumpla con los estándares de lanzamiento. Después de introducir DevOps, no solo nos centramos en la calidad de los productos, sino también en la verificación oportuna del valor del producto. Por lo tanto, no solo necesitamos probar el desplazamiento a la izquierda, descubrir problemas durante las etapas de desarrollo e incluso diseño y verificarlos a tiempo, sino también probar el desplazamiento a la derecha, verificar el valor del producto monitoreando los datos operativos del producto en el entorno de producción y Obtener retroalimentación de manera oportuna, para mejorar continuamente el producto.

Mientras avanzamos en el proyecto DevOps, también exploramos constantemente cómo completar mejor el trabajo de prueba en DevOps. En DevOps, las pruebas no solo se utilizan para detectar problemas del producto de manera temprana y verificar la calidad del producto, sino también para verificar el valor del producto y obtener comentarios para lograr el propósito de la mejora continua del producto. Las pruebas ya no son trabajo exclusivo de los probadores. Todo el equipo debe ser responsable de la calidad. DevOps ha planteado requisitos más altos para las pruebas automatizadas. Como miembro del equipo, todos deben mejorar sus habilidades de prueba y los probadores deben prestar más atención a mejora de las habilidades de prueba automatizadas y los miembros del equipo trabajan juntos para utilizar mejor el valor de las pruebas.

3. ¿Qué recursos se necesitan?

Todas las herramientas de DevOps son de código abierto y admiten todo, desde la creación y orquestación de contenedores hasta la creación de redes de microservicios, la gestión de la configuración, la automatización de CI/CD, la supervisión de pila completa y más. Estas son algunas de las herramientas DevOps más populares en la actualidad:

Kubernetes: en lugar de publicar microservicios manualmente, Kubernetes automatiza la implementación, el mantenimiento y el escalado de flotas de contenedores en producción.
Docker: Docker es una plataforma gratuita de código abierto para crear, publicar y ejecutar aplicaciones en forma de contenedores livianos. Los contenedores empaquetan los binarios, bibliotecas, archivos de configuración y dependencias necesarios para que se ejecute un programa.
Jenkins: Una gran parte de la filosofía DevOps es encontrar formas de automatizar e implementar nuevas iteraciones de manera más eficiente. Parte de este objetivo es crear canales optimizados de integración continua y entrega continua (CI/CD). Jenkins es un servidor de automatización de código abierto con cientos de complementos que automatizan la creación, implementación y prueba de proyectos de software.
ELK Stack: ELK Stack es una combinación de tres proyectos de código abierto: Elasticsearch, Logstash y Kibana mantenidos por Elastic. Con estos tres componentes, los desarrolladores pueden adquirir y registrar datos de cualquier fuente y crear visualizaciones útiles.
Prometheus: el servidor Prometheus recopila métricas de series temporales mediante la extracción de puntos finales HTTP y genera sistemas que interactúan con esos datos, proporcionando consultas profundas, visualización, almacenamiento y otras capacidades.
Istio: Istio es una malla de servicios de código abierto construida sobre Envoy, que la abre a complementos y opciones de extensibilidad.

4. Resumen

El proceso de DevOps se basa en la instalación, configuración e implementación automatizadas para garantizar una entrega más rápida de las actualizaciones. Todo esto hace que las pruebas automatizadas sean una parte crítica de CI/CD, ya que cada confirmación de código debe probarse adecuadamente antes de la implementación. La automatización de pruebas ayuda a encontrar y corregir errores más rápidamente cuando aún son pequeños. Puede reducir el riesgo y al mismo tiempo responder a las necesidades de los clientes en cuestión de días o incluso horas.

Las ventajas de las pruebas automatizadas proporcionan una eficiencia increíblemente alta en DevOps. Sin embargo, la práctica general de realizar pruebas aún no ha alcanzado la tecnología moderna. Un estudio de Capgemini muestra que las grandes y medianas empresas no están utilizando plenamente la automatización. La investigación se realizó a través de entrevistas con 500 altos ejecutivos de TI. El estudio también reveló que sólo el 24% de los casos de prueba se ejecutan mediante pruebas automatizadas.

La automatización de pruebas es crucial para que DevOps garantice la entrega oportuna de resultados de alta calidad. Sin embargo, nunca podrá eliminar por completo la dependencia de los métodos de prueba manuales. La estrategia correcta debería ser lograr el mejor equilibrio entre pruebas automatizadas y manuales para obtener los mejores resultados.

Finalmente me gustaría agradecer a todos los que leyeron atentamente mi artículo, la reciprocidad siempre es necesaria, aunque no es algo muy valioso, si puedes usarlo, puedes tomarlo directamente:

Supongo que te gusta

Origin blog.csdn.net/2301_76643199/article/details/133441166
Recomendado
Clasificación