Close

Cómo las pruebas automatizadas hacen posible DevOps

Con la automatización de las pruebas, los equipos de desarrollo pueden compilar, probar y lanzar de forma más rápida y fiable.

Fotografía de primer plano de Krishna Sai
Anton Hristov

Gestor de productos en mabl


A principios de la década de los 2000, las empresas comenzaron a adoptar prácticas de metodología ágil y a aplicar un ciclo de vida de desarrollo acelerado y marcado por el feedback frecuente de los clientes. Más adelante, esto impulsó la adopción de herramientas que permiten la integración continua y la entrega continua y que automatizan los procesos de compilación, prueba, configuración e implementación.

Sin embargo, funciones clave, como el desarrollo, las pruebas y la entrega a la producción, quedaban en manos de equipos independientes que operaban de forma aislada. Esto provocaba ineficiencias y empantanaba el ciclo de vida del desarrollo del software. También dio lugar a DevOps, las filosofías, prácticas y herramientas organizativas que se traducen en equipos pequeños e interdisciplinarios (o "escuadrones"), que se encargan de la entrega continua y la calidad de las actualizaciones de productos de principio a fin.

Al principio, DevOps unificó solamente las operaciones de TI y de desarrollo, mientras que las pruebas seguía realizándolas un equipo independiente de forma mayoritariamente manual. Esto ayudó a abordar los desafíos relacionados con la entrega y supervisión de aplicaciones en la nube. También dio lugar a la creación de canalizaciones de CI/CD totalmente automatizadas. Sin embargo, no agilizó de forma considerable los ciclos de lanzamiento, ya que las pruebas las realizaba un equipo aislado y solían ser un proceso manual que requería mucho tiempo.

Para resolver el cuello de botella de las pruebas, las organizaciones están pasando de equipos de control de calidad centralizados a integrar el control de calidad en todo el equipo de desarrollo.

¿Qué es la automatización de pruebas?


La práctica de automatización de pruebas consiste en revisar y validar automáticamente un producto de software (por ejemplo, una aplicación web) para asegurarse de que cumple con los estándares de calidad predefinidos para el estilo de código, la funcionalidad (lógica empresarial) y la experiencia del usuario.

Las pruebas suelen constar de las siguientes etapas:

  • Pruebas unitarias: verifican unidades individuales de código, como una función, para comprobar que funcionan según lo esperado.
  • Pruebas de integración: garantizan que varios fragmentos de código puedan funcionar juntos sin consecuencias imprevistas.
  • Pruebas de extremo a extremo: verifican que la aplicación cumple con las expectativas del usuario.
  • Pruebas exploratorias: adoptan un enfoque no estructurado para revisar numerosas áreas de una aplicación desde la perspectiva del usuario con el fin de descubrir problemas funcionales o visuales.

Los diferentes tipos de pruebas suelen visualizarse en forma de pirámide. A medida que subes por la pirámide, el número de pruebas de cada tipo disminuye y aumenta el coste de crear y ejecutar pruebas.

Pirámide de pruebas exploratorias

Anteriormente, todas las pruebas de la pirámide se realizaban manualmente. Era un proceso lento, costoso y propenso a errores, hasta que se crearon las herramientas de pruebas automatizadas.

En la actualidad, casi todas las pruebas unitarias están totalmente automatizadas y, de hecho, esta automatización se considera una práctica recomendada. Las pruebas de integración también están automatizadas en gran medida y, de lo contrario, se suelen omitir en favor de pruebas de extremo a extremo más manuales. La tendencia actual de automatización de pruebas se centra principalmente en automatizar la capa de extremo a extremo de la pirámide de pruebas, lo que reduce la necesidad de realizar pruebas de integración.

Aunque las herramientas de automatización existen desde hace más de una década, muchas requieren conocimientos de programación y suelen dan lugar a pruebas problemáticas que son extremadamente costosas de mantener a escala y cuyos problemas cuesta resolver. Muchos equipos terminan creando sus propios marcos de automatización de pruebas personalizados, lo que provoca que la curva de aprendizaje consecuente dificulte y ralentice la incorporación de nuevos miembros del equipo. Los marcos personalizados también terminan requiriendo mantenimiento y mejoras para adaptarse a los cambios de la pila tecnológica. En consecuencia, hasta ahora la mayoría de las pruebas de extremo a extremo eran un proceso manual.

A medida que las organizaciones desarrollan sus prácticas de DevOps, es importante automatizar las pruebas a lo largo del ciclo de vida para sacar partido de las principales ventajas de DevOps: la capacidad de compilar, probar y lanzar de forma más rápida y fiable, optimizar las respuestas ante incidentes y mejorar la colaboración y la comunicación entre equipos. Ahora ya no es una opción que la compilación de una publicación esté en manos del equipo de control de calidad durante varios días antes de que los desarrolladores reciban feedback y corrijan los problemas detectados. Los equipos de control de calidad deben ajustar su actividad al ciclo de DevOps garantizando que los casos de prueba estén automatizados y logren una cobertura de código cercana al 100 %. Los entornos deben estandarizarse y la implementación en los espacios aislados de control de calidad debe automatizarse. Las tareas previas a las pruebas, las limpiezas, las tareas posteriores a las pruebas y demás también deben automatizarse y ajustarse al ciclo de integración continua.

Ahora existen herramientas de poco código como mabl que permiten incorporar pruebas de extremo a extremo fiables y automatizadas en todas las etapas de la canalización de CI/CD, lo que sirve para detectar problemas mucho antes en el ciclo de vida del desarrollo. Y es que, como todos sabemos, cuanto antes se detecten los problemas de una publicación, más rápido y económico será solucionarlos.

Pruebas automatizadas en DevOps


En la práctica, esto se traduce en que los desarrolladores se inclinan por escribir pruebas unitarias para verificar que el código funciona según lo esperado, mientras que los profesionales de calidad y los propietarios del producto crean pruebas de interfaz de usuario automatizadas que verifican la experiencia del usuario de principio a fin. Los profesionales de calidad también organizan sesiones de pruebas exploratorias en las que el equipo examina manualmente diversas áreas de la aplicación en busca de problemas.

Una práctica recomendada de DevOps es ejecutar pruebas automatizadas cuanto antes y con la mayor frecuencia posible dentro de la canalización de CI/CD. Esto incluye la ejecución de pruebas de interfaz de usuario automatizadas en producción para supervisar de forma proactiva la interfaz en busca de problemas en la experiencia del usuario. Dado que las aplicaciones actuales dependen de numerosos servicios con varias partes móviles, realizar una supervisión sintética de las transacciones mediante pruebas en producción puede detectar problemas con los servicios de terceros antes que los usuarios.

Icono de anillos entrelazados
Material relacionado

Pruébalo gratis

Icono de herramientas
Material relacionado

Mejora las prácticas de DevOps con pruebas

Introducción a las pruebas automatizadas


No existe una solución única para todos, pero estos son algunos aspectos importantes que debes tener en cuenta al definir una estrategia de automatización de pruebas para el equipo:

Frecuencia de publicación

Cuanto más frecuentes sean las publicaciones, más tendrás que invertir en automatización de pruebas, especialmente en pruebas de extremo a extremo que deberían ejecutarse en cada implementación. Si no tienes un ciclo de lanzamiento frecuente y te gustaría acelerarlo, puedes empezar por ampliar la cobertura de pruebas unitarias y crear pruebas de humo sencillas y automatizadas en la interfaz de usuario para realizar una comprobación rápida de estado en cada compilación. A continuación, puedes invertir gradualmente en la creación de pruebas de extremo a extremo más automatizadas que te ayuden a reducir el tiempo necesario para comprobar si hay regresiones en una publicación.

Disponibilidad de las herramientas

Unas herramientas modernas de automatización de pruebas mejorarán significativamente la capacidad de tu equipo para ofrecer software de gran calidad de forma continua. Al evaluar las herramientas de prueba, valora la creación sencilla de pruebas, la fiabilidad, la necesidad de mantenimiento y la integración con tu pila de CI/CD.

También es importante conocer la curva de aprendizaje y las habilidades necesarias de una herramienta determinada. Cuanto más fácil sea usar tu solución, más rápido podrá avanzar el equipo. Además, será más accesible para más personas del equipo, lo que puede aumentar la cobertura de las pruebas y promover una cultura de calidad. Una forma eficaz de evaluar las soluciones de pruebas es que todo el equipo dedique tiempo a automatizar algunos escenarios de casos de prueba con los principales candidatos de la lista de soluciones preseleccionadas.

Madurez del producto

Si tu equipo trabaja en un producto que ya tiene un gran número de clientes y una base de código madura, es probable que ya tengas una cadencia establecida de publicación y prácticas de prueba. A medida que el equipo pase a la integración continua o a la CI/CD completa, es importante incluir la automatización de pruebas como una pieza clave de la automatización de la canalización. Por mucho que haya una entrega rápida y feedback inmediato, no servirá de nada si no se automatizan las pruebas antes y durante todo el desarrollo.

Por otro lado, si tu equipo está creando un nuevo producto, es una oportunidad ideal para instrumentar las pruebas automatizadas desde el principio. Desde el primer momento, define un objetivo para la cobertura de pruebas unitarias y céntrate en definir los casos de prueba de extremo a extremo para cada función. Es mejor esperar a que una función tenga próxima una publicación para añadir pruebas de extremo a extremo automatizadas y así evitar fallos de prueba debidos a cambios incompletos en la interfaz de usuario.

Datos de pruebas y entornos CI/CD

Crear pruebas automatizadas es todo un reto, pero a menudo es la falta de entornos depurados con datos de prueba lo que impide que los equipos adopten la automatización de pruebas en etapas anteriores de la canalización de CI/CD. Por lo tanto, es importante tener un debate en equipo desde el principio sobre la estrategia de pruebas y comprometerse a crear la infraestructura de pruebas necesaria. Por ejemplo, los desarrolladores deben implementar soporte para cuentas de usuario de prueba y tener la capacidad de cargar un entorno con datos de prueba a través de una API. Crear una infraestructura para el aprovisionamiento de entornos de pruebas efímeras desde las primeras etapas acelerará considerablemente la revisión de publicaciones y el ciclo de feedback.

Diagrama de pruebas de calidad

¿Cómo cambian las pruebas automatizadas el papel del control de calidad?


Cómo ayudan las pruebas automatizadas a impulsar DevOps


Ahora las pruebas automatizadas son una práctica recomendada de DevOps. Implementar pruebas automatizadas en gran parte de la canalización de desarrollo puede intimidar al principio, pero puedes empezar por automatizar un único escenario de extremo a extremo y ejecutar esa prueba según un cronograma. Con las nuevas herramientas, las pruebas automatizadas también son más fáciles que nunca y los resultados valen la pena. Después de todo, ¿quién no quiere usuarios satisfechos?

Con la adopción de pruebas automatizadas, se puede sacar más provecho de las siguientes ventajas de DevOps:

  • Velocidad sin renunciar a la calidad: obtén una alta velocidad del producto que hará felices a los desarrolladores y les permitirá ofrecer más valor a los usuarios con mayor rapidez.
  • Colaboración en equipo mejorada: al compartir la responsabilidad de la calidad, mejora la colaboración entre los miembros del equipo.
  • Fiabilidad: mejora la fiabilidad de las publicaciones aumentando la cobertura con la automatización de pruebas. Los problemas en la producción deberían ser excepciones, no la norma.
  • Escala: produce resultados de calidad uniformes con menor riesgo al distribuir el desarrollo entre varios equipos pequeños que operan de forma autosuficiente.
  • Seguridad: muévete rápidamente sin poner en riesgo la seguridad ni el cumplimiento normativo mediante políticas de cumplimiento automatizadas, controles exhaustivos y técnicas de gestión de la configuración.
  • Mayor satisfacción del cliente: una mayor fiabilidad y una respuesta rápida al feedback de los usuarios aumentan su satisfacción y las recomendaciones.

En conclusión...


Si adoptas la automatización de pruebas para sacar todo el partido de DevOps, reducirás los cuellos de botella y aumentarás la eficiencia. Esto, a su vez, repercutirá directamente en la satisfacción de empleados y clientes y, en última instancia, en el resultado final.

Comienza a automatizar tus pruebas con Bitbucket Pipelines o con una de las muchas herramientas y recursos de automatización de pruebas disponibles en Atlassian Marketplace.

Anton Hristov
Anton Hristov

Anton Hristov es responsable de producto en mabl y cuenta con más de 10 años de experiencia en desarrollo, pruebas y entrega de software. En su trabajo, le gusta encontrar el punto de encuentro entre personas, tecnología y diseño. A Anton le encanta extraer información útil de los datos y ayudar a las personas a desarrollar todo su potencial, lo que se refleja en los productos que contribuye a crear.


Compartir este artículo

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Ilustración de Devops

La comunidad de DevOps

Ilustración de Devops

Ruta de aprendizaje de DevOps

Ilustración de un mapa

Pruébalo gratis

Suscríbete para recibir el boletín de DevOps

Thank you for signing up