Automatización de pruebas en CI/CD
Clase 7 de 9 • Curso de Introducción a la Automatización de Pruebas
Contenido del curso
Clase 7 de 9 • Curso de Introducción a la Automatización de Pruebas
Contenido del curso
Milena Pellegrino
Manuel Ledezma
Javier Fuentes Mora
David Zonana
Cristian Camilo Cortes Ortiz
Keirys Polanco Crespo
Valeria Vanesa Zalazar
Fernando Navia Bolaños
Josue Quevedo Portas
Jair Israel Avilés Eusebio
Leiber Bertel
RONY RINCON
Samaris Saturno
William Schnaider Torres Bermon
Francisco Antonio Hernandez Sabatino
Erik Esneider Vasquez Patiño
Gabriel Hans González Peña
Javier Fuentes Mora
Paula Andrea Hayle
Eduardo Sandoval Rubio
Stanley Ernesto Doradea
Héctor Salinas Alcarraz
Wilson Fernando Antury Torres
Mario Alex Inostroza Muñoz
Melissa Abigail Murillo Sanchez
Aprendiz Ada
Juan Francisco Puentes Gomez
Platzi
Zaial Rodríguez
Johan Augusto Potosi Morales
Automatización de pruebas en CI/CD
CI: Continuous Integration CD: Continuous Deployment
Las pruebas automatizadas ayudan a realizar las pruebas mas frecuentes sin sobrecargar, a los equipos de desarrollo y pruebas y poder entregar mayor valor al cliente.
VENTAJAS:
DESVENTAJAS No tiene. (No hay ninguna razón por la cual no deberías integrar las pruebas automatizadas a tu flujo de CI/CD)
SI, con el Jenkins pero con Selenium webdriver aún no sabemos como hacer el build integrado sin necesidad de arrancarlo externamente.
En el curso que se viene de automatización avanzada con puppeteer vemos un ejemplo de como integrarlo en un flujo de Jenkins
CI/CD Continuous Integration/Continuous Deployment . Hoy en día la industria avanza muy rápido donde se tiene que construir y entregar valor constantemente por lo que la automatización de pruebas es muy importante ya que permite mejorar la calidad de software que se entrega al cliente. . Las pruebas automatizadas ayudan a realizar las pruebas mas frecuentes sin sobrecargar, a los equipos de desarrollo y pruebas y poder entregar mayor valor al cliente. . Pros Ofrece mayor agilidad permitiendo desarrollar mas rápido reduciendo el costo debido a que el equipo de pruebas manuales no debe estar probando cada uno de las pruebas generando mayor seguridad y productividad. . Contras. No tiene.
gracias
Muchas gracias.
No he tenido la oportunidad de implementar el Continuos Testing, pero lo que he conocido es que muy interesante y cuenta con muchos beneficios tanto para el producto como para los equipos de trabajo, se reducen horas realizando actividades, se incentiva la agilidad y se genera productividad. Hay algo muy cierto y es que Continuos testing no es nuevo para muchas empresas y profesionales, hoy en dia se presentan cursos, foros, material académico y demos , pero realmente lo que sucede es que hay compañías que realmente no lo implementan , aducen que implica inversión o simplemente siguen usan los métodos tradicionales. Hay otras empresas que si implementan el Continuos testing y son las que mas ganancias y reconocimiento por su producto tienen hoy en día, sus equipos están altamente capacitados y cada vez mas se genera interés en otras personas que tal vez no hemos tenido la oportunidad de hacer parte de este.
Ni siquiera se que es CI y CD, o en que consiste, creo que para un curso futuro o un remake de éste deberían incluir una mayor explicación sobre dichos temas, ya que muchos ignoramos estos conceptos.
En mi caso estoy tomando la escuela de programación y desarrollo de software y aun no vemos nada de eso, por lo que quedé muy confundido con los flujos y todo eso, ojalá se pueda explicar de mejor forma
CI: Continuous Integration CD: Continuous Delivery
Son conceptos mas orientados de DevOps para la automatizacion de despliegue de aplicaciones.
Si bien esto se relaciona con el ciclo de vida de desarrollo y testing, esta fuera de alcance del curso introductorio.
Aunque concuerdo que una mencion o referencia a que curso en Platzi o URL podria ser de utilidad.
Estas seguro que en CI vamos desarrollando, testeando, construyendo y liberando ? O sera desarrollando, construyendo, testeando y liberando pero de forma continua en cada sprint?
diría que es desarrollando, testeando, construyendo testeando y liberando. :)
Lo veo de esa manera, saludos!
Introducción
La industria del software evoluciona rápidamente, lo que exige la construcción y entrega continua de valor. La Integración Continua (CI) y el Despliegue Continuo (CD) permiten distribuir aplicaciones de manera rápida y confiable, utilizando la automatización de pruebas para garantizar calidad y estabilidad.
Diferencia entre el enfoque tradicional y CI/CD
El enfoque tradicional de desarrollo de software, conocido como Waterfall, separa las fases de desarrollo, pruebas y despliegue en etapas bien definidas, lo que puede generar retrasos y acumulación de errores.
Por otro lado, CI/CD permite una integración y entrega constantes, ejecutando pruebas automatizadas en cada etapa para detectar errores tempranamente. Este proceso reduce el riesgo y acelera el tiempo de salida al mercado.
Ejemplo de Solución Automatizada
Un pipeline de CI/CD suele seguir estos pasos:
Cada commit a una rama principal desencadena este proceso, asegurando una entrega continua de software.
Tipos de Pruebas Automatizadas en CI/CD
Las pruebas automatizadas pueden incluir:
Beneficios de la Automatización de Pruebas en CI/CD
Implementar pruebas automatizadas en un pipeline CI/CD proporciona ventajas clave:
Conclusión
La automatización de pruebas en CI/CD es fundamental para garantizar la calidad y estabilidad del software en un entorno de desarrollo ágil. Adaptar este enfoque permite reducir errores, acelerar el despliegue y mejorar la eficiencia del equipo de desarrollo.
🚀 Automatización de Pruebas en CI/CD: El Motor de la Entrega Continua
En una industria del software que exige velocidad y calidad, los equipos necesitan entregar valor de forma constante y segura. La Integración Continua (CI) y el Despliegue Continuo (CD) son las prácticas que lo hacen posible, y su éxito depende de un pilar fundamental: una robusta estrategia de automatización de pruebas.
El Salto Evolutivo: De la Cascada al Flujo Continuo
Para entender el impacto de CI/CD, es crucial ver de dónde venimos y hacia dónde vamos.
🏞️ El Modelo Tradicional: Waterfall (Cascada)Es un enfoque secuencial donde cada fase debe terminar para que la siguiente comience. El flujo es lineal: Desarrollo ➡️ Pruebas ➡️ Lanzamiento.- El Gran Problema: Las pruebas son un cuello de botella. Se realizan al final, cuando los errores son más difíciles y costosos de corregir. Un solo bug crítico puede retrasar todo el lanzamiento durante semanas. Este modelo es demasiado lento y arriesgado para el mercado actual.
🔄 El Modelo Moderno: CI/CD (Integración y Despliegue Continuo)Es un modelo cíclico e interconectado donde el desarrollo, las pruebas y el despliegue ocurren de forma constante y automática en pequeños incrementos.- La Gran Solución: Las pruebas automatizadas se integran en cada etapa del ciclo. En lugar de encontrar errores semanas después, se detectan a los pocos minutos de ser introducidos. Esto transforma el proceso de entrega en una "autopista" rápida, predecible y segura.
Anatomía de un Pipeline de CI/CD Moderno
Un pipeline de CI/CD es una serie de pasos automatizados que se activan cada vez que un desarrollador sube un cambio al repositorio de código. Es el corazón operativo de la entrega continua.
El flujo típico se ve así:
commit es el disparador que inicia todo el pipeline.Este pipeline es flexible y puede personalizarse con más etapas de validación, pero la secuencia Build ➡️ Test ➡️ Deploy es su esencia.
Las Capas de Pruebas en un Pipeline Robusto
Un pipeline efectivo no depende de un solo tipo de prueba. Utiliza una estrategia de "defensa en profundidad" con múltiples capas de validación:
Beneficios Innegables de la Automatización en CI/CD
Integrar pruebas automatizadas en CI/CD no es una mejora, es una transformación. Los beneficios impactan directamente en el negocio y en la cultura del equipo:
bugs y vulnerabilidades en producción.En conclusión, la automatización de pruebas es el combustible del motor de CI/CD. Adoptar este enfoque es fundamental para cualquier empresa de software que busque ser competitiva, ya que prácticamente no existen desventajas frente a las inmensas ganancias en velocidad, calidad y eficiencia.
Respuesta sugerida (con el punto de móviles y hardware)
El planteamiento es correcto como marco conceptual para muchos proyectos de software, especialmente en aplicaciones web o servicios desacoplados. Sin embargo, no siempre es completamente aplicable en sistemas complejos donde existen múltiples interacciones entre hardware, software y comportamiento real de los usuarios.
En estos casos, una estrategia de CI/CD basada únicamente en automatización puede presentar varias limitaciones:
1. Dependencias de hardware y entornos físicos En sistemas que interactúan con dispositivos físicos (IoT, sensores, periféricos o hardware especializado), muchas validaciones dependen del comportamiento del hardware real. Estas condiciones no siempre pueden replicarse completamente en entornos automatizados o simulados dentro de un pipeline.
2. Interacciones con dispositivos móviles y sensores En aplicaciones móviles existen funcionalidades que dependen directamente de componentes físicos del dispositivo, como:
Aunque existen emuladores y frameworks de automatización, no todos los escenarios pueden validarse de forma confiable sin pruebas en dispositivos reales, especialmente cuando intervienen condiciones ambientales, permisos del sistema operativo o variaciones entre fabricantes.
3. Interacciones humanas y experiencia de usuario real Las pruebas automatizadas validan lógica y flujos funcionales, pero no reemplazan completamente evaluaciones de experiencia de usuario, usabilidad o comportamientos inesperados de uso real.
4. Complejidad emergente en sistemas distribuidos En arquitecturas con múltiples integraciones o servicios externos, el comportamiento del sistema puede depender de:
Por estas razones, más que una solución universal, CI/CD y la automatización deben verse como herramientas que se adaptan al contexto del sistema que se está construyendo. En muchos escenarios complejos, el enfoque más efectivo termina siendo híbrido, combinando automatización con pruebas manuales, exploratorias y validaciones en entornos reales.
En resumen, CI/CD aporta grandes beneficios, pero su efectividad depende de la naturaleza del software, sus dependencias tecnológicas y el entorno donde opera.
E intentado implementar el CI/CD con gitlab y cypress, pero el ambiente no permite ejecutar las pruebas ¿Que ambiente es mejor para implementarlo?
como que no te permite ejecutar pruebas el ambiente?
lo mejor es jenkins y travis y nos funciona muy bien.... es lo que le ordeno a mis MINIONS usar y funciona muy bien......
incluso hay un curso de eso aqui en PLATZI. uwu
Sabes que tan bueno es el curso de Jenkins de platzi?
Actualmente no estoy laborando, pero creo que a lo largo de 10 años de trabajar en varias empresas lo maximo que llegue a ver fue la implementacion de git.
Desventajas:
Usamos Jenkins y maven para crear los builds y ejecutar nuestras pruebas.
tristemente no tengo equipo ni empresa 😢, pero comenzaré a diseñar un sistema basado en CI/CD
realmente aun no he implementado estos métodos en algún proyecto, pero me gustaría, para visualizar el proceso que tiene y así saber cual es el mejor que se podría adaptar para futuros proyectos de software.
No sé mucho acerca de mi empresa, si he esuchado un equipo de QA, pero hasta ahí. Super genial tener una metodología de trabajo así.
automatizar el smoke test? o automatizar las pruebas de regresión?? ya que tengo entendido que la automatización debería hacerse sobre algo estable que no este cambiando. No?
Las pruebas de humo y de regresión pueden automatizarse en un flujo de CI/CD.
nunca he realizado pruebas automatizadas...
pero el moderador se dirige como si tiviesemos ex´periencia en ela
El modelo en cascada es un enfoque secuencial en el desarrollo de software. En este contexto:
Este enfoque implica completar cada etapa antes de avanzar a la siguiente, lo que puede ser limitante en entornos dinámicos.