Exploramos los beneficios que puede traer para el equipo y para la experiencia de los usuarios finales, el enfoque Shift Left para las actividades de Testing y QE, en un entorno de DevOps.

Con el surgimiento de las metodologías ágiles (Scrum, XP, Kanban), la gestión del ciclo de vida de las aplicaciones (ALM) permitieron que el desarrollo, el testing y las operaciones se encuentren unificadas en un proceso integrado denominado DevOps.

El Desarrollo, el Testing de Software y las Operaciones se encuentran unificadas en un proceso integrado denominado DevOps.

¿En qué consiste DevOps?

El objetivo que persigue DevOps, una combinación de los términos ingleses development (desarrollo) y operations (operaciones), es automatizar tantos pasos como sea posible, entre la formación de una idea y el lanzamiento del código terminado a producción. Esto produce reduce el tiempo desde que alguien tiene la idea de un nuevo producto, hasta que está disponible en el mercado.

Esto significa que preocupaciones como el aprovisionamiento de servidores y otra infraestructura, así como el escalado de una aplicación exitosa, deben ser tan automatizadas y fluidas como el proceso de construcción de desarrollo del software.

Para esto, necesitamos contar con siete elementos básicos:

  • Planificar: el plan se compone de dos cosas: “definir” y “planificar”. Esta actividad se refiere al valor comercial y los requisitos de aplicación .
  • Código/Compilación: herramientas de diseño y desarrollo de código, herramientas de gestión de código fuente, servidores de integración/compilación continua
  • Probar/Verificar: herramientas y procesos de prueba continuos que brindan retroalimentación sobre los riesgos comerciales
  • Paquete: repositorio de artefactos, preparación previa a la implementación de la aplicación.
  • Lanzamiento: gestión de cambios, aprobaciones de lanzamientos, automatización de lanzamientos.
  • Configurar: configuración y administración de infraestructura, infraestructura como herramientas de código.
  • Supervisar: supervisión del rendimiento de las aplicaciones y la experiencia del usuario final.

La relativa importancia de cada uno de los anteriores elementos variará según:

  • Tipo de aplicación: basada en la web, móvil, de desktop heredado, microservicios, inteligencia artificial, data warehouse).
  • Metodología utilizada: la construcción y la integración continua, generalmente requieren de una metodología.
  • Estado de la aplicación: MVP, adopción temprana, adopción generalizada o modo de soporte y mantenimiento.

Seguramente ha escuchado diferentes combinaciones con DevOps, como por ejemplo, DevTestOps, DevSecOps y DevTestSecPerfOps. Estas determinan que la calidad del software y las pruebas deben estar presentes en todo el proceso, o comúnmente conocidas como pruebas continuas.

El alcance de las pruebas se extiende desde la validación de los requisitos iniciales o las historias de usuarios, hasta la evaluación de los requisitos del sistema asociados con los objetivos comerciales generales, y aborda hasta la supervisión del sistema en producción para encontrar los posibles incidentes que deben corregirse.

Por tanto, agregar pruebas continuas al flujo de DevOps proporciona una nueva manera de pensar acerca de las pruebas de software, y cómo se integran primero en el ciclo de vida de DevOps.

Ciclo de vida de DevOps

DevOps busca cumplir con las expectativas de los clientes que esperan experiencias digitales memorables y de la forma más rápida posible, al contribuir a aumentar el ritmo de nuevas compilaciones de cara a los clientes, al mismo tiempo que se mantiene la calidad.

En este sentido, aún existen muchas organizaciones esperan hasta el final del ciclo de vida de desarrollo de software (SDLC por sus siglas en inglés) para ejecutar sus pruebas, encontrando errores inesperados al final de este ciclo, donde los incidentes son más difíciles y costosos de resolver. Con dicho enfoque, las pruebas se convierten en un cuello de botella que impacta directamente al desarrollo e implementación de software ágil y eficiente.

Asimismo, es probable que afecte negativamente la moral del equipo, ya que los desarrolladores que dedicaron mucho tiempo y esfuerzo a crear y enviar código rápidamente, ahora deben retrasar su proceso de implementación para corregir los incidentes.

Sin embargo, existe un enfoque más eficiente que las organizaciones pueden implementar y en el que se abordará en las próximas líneas.

¿Qué es el Enfoque Shift Left para las Pruebas de Software?

Shift Left Testing consiste en un enfoque que permite mejorar la calidad del producto final y reducir los riesgos, al descubrir y solucionar potenciales problemas de manera anticipada.

Foto de Tung Lam en Pexels

Si bien realizar más pruebas al inicio del ciclo de vida del desarrollo puede parecer inicialmente un obstáculo para la rapidez que ofrece DevOps, permite a los equipos lanzar software de mayor calidad y más rápido, a medida que el enfoque Shift Left Testing se convierte en una parte clave de sus procesos. Con este enfoque las pruebas de software se pueden implementar durante y a lo largo de las etapas críticas de diseño y desarrollo de software, y no después.

Algo importante a considerar es que independientemente de cómo un equipo aborde las metodologías de desarrollo (ágil, en cascada, continua o una combinación de estas), cuando las pruebas se ‘mueven hacia la izquierda’, se vuelve una responsabilidad transversal de toda la organización, no solo de los testers. Eso significa que los SDET (una combinación de desarrollador y tester o ingeniero de calidad, que tiene exposición a la gestión de proyectos), los desarrolladores y otros integrantes del equipo, deben participar activamente en las pruebas junto con el equipo de testing y calidad.

Beneficios de Shift Left Testing para los equipos

Cuando todo el grupo participa en las pruebas al inicio del ciclo de vida de desarrollo de software, hay muchos beneficios, entre los que destacan:

  • Se puede crear una lista de flujos de trabajo de usuario y condiciones de validación de pruebas para agilizarlas durante los procesos de desarrollo.
  • Los testers pueden detectar problemas potenciales mucho antes en el proceso para solucionarlos de manera anticipada, y no después de que se haya desarrollado el código.
  • Los desarrolladores y testers pueden trabajar con el código que están familiarizados para editar el código existente y solucionar los problemas por sí mismos.

Al hablar de Shift Left Testing, se contemplan las pruebas que se realizan durante el desarrollo en integración continua (CI) agregando pruebas tempranas de funcionalidad, usabilidad, rendimiento, seguridad y accesibilidad. Para ello se debe contemplar lo siguiente:

  • Pruebas rápidas y automatizadas para evitar que vuelvan a aparecer problemas previamente conocidos.
  • Identificar áreas de riesgo de manera anticipada para saber dónde enfocar las pruebas posteriormente.
  • Realizar todas las pruebas de cada tipo que sean necesarias, al inicio del ciclo para identificar si se justifica realizar más pruebas. 
  • Realizar una exploración temprana de las funcionalidades del producto para determinar posibles problemas y/o riesgos comerciales.

Y así como el Shift Left Testing consiste es probar lo más temprano posible en la canalización de integración continua (CI), el Shift Right se trata del monitoreo en producción luego del deliver (CD), un tema que abordaremos en otro momento.

Shift Left y Shift Right Testing

En resumen, Shift Left Testing Testing se basa en tratar de encontrar problemas de manera anticipada con pruebas rápidas y repetitivas que descubren áreas de riesgo a lo largo de las etapas críticas de diseño y desarrollo de software, y no después, buscando así evitar que ocurran problemas. 

Mientras que Shift Right Testing implica monitorear el comportamiento del usuario, las métricas comerciales, las métricas de rendimiento y seguridad, e incluso experimentos de fallas deliberadas (Chaos Engineering) para ver qué tan resistente es el sistema a las fallas.

A modo de conclusión, para incorporar prácticas de pruebas continuas en el proceso de DevOps es importante priorizar y planificar:

  • Integración de las técnicas de Shift Left en el canal de integración continua. Abordar las áreas de riesgo identificadas de manera temprana para focalizar pruebas mas profundas.
  • Si bien no profundizamos, es importante considerar la técnica Shift Right en la infraestructura ya que las pruebas no terminan después de la ejecución.
  • Tener un enfoque basado en el riesgo para decidir cuándo lanzar a producción la nueva funcionalidad del producto.

Probar el software para asegurarse de que funciona según lo previsto es un paso importante que debe incluirse en todo el ciclo de desarrollo de software.

Testing y QE en un entorno DevOps

El enfoque Shift Left Testing apunta a reducir costos, ya que las pruebas se hacen antes, el feedback se obtiene antes, los potenciales problemas se descubren antes y por lo tanto se pueden resolver antes. Esto al final de cuentas hace que se mejore la calidad del producto final y que se reduzcan los riesgos, en contraste con esperar hasta el final del ciclo de vida de desarrollo de software (SDLC) para ejecutar las pruebas y encontrar errores inesperados, donde son más difíciles y costosos de resolver.

En Abstracta, estamos comprometidos en ayudar a nuestros clientes a cocrear productos digitales exitosos y experiencias que marquen la diferencia, a través de Shift Left Testing, un enfoque que mejora la calidad del producto final y minimiza los riesgos, al descubrir y solucionar potenciales problemas de manera anticipada.

Si busca un partner estratégico para crear mejores grupos de trabajo en que sean más colaborativos y mejoren continuamente para obtener mejores resultados, cuente con los más de 13 años de experiencia internacional de Abstracta y nuestros más de 100 Ingenieros de calidad.

Agende aquí una consultoría gratuita de 30 minutos con nuestros expertos para conocer los beneficios que puede traer para su equipo y para la experiencia de sus usuarios finales, el enfoque Shift Left para las actividades de Testing y QE en un entorno de DevOps.


Otros contenidos relacionados

¿Qué es Shift Left Testing?

El Testing como impulsor del cambio hacia una Cultura DevOps