Beneficios que puede traer para el equipo y para la experiencia de los usuarios finales, el enfoque Shift Left para las actividades de testing e ingeniería de calidad, 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.
¿En qué consiste el 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 los siguientes aspectos:
- 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 variaciones con el témrino 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.
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 para una mejora continua, que explicaremos a continuación.
Enfoque Shift Left para el Software Testing
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.
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 Shift Left 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 de funcionalidad, usabilidad, rendimiento, seguridad y accesibilidad de forma anticipada. 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.
- Hacer 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 delivery (entrega continua o Continuous Delivery en inglés), un tema que abordaremos en otro momento.
Shift Left y Shift Right Testing
En resumen, Shift Left 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 testing continuo 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 (Risk-based approach) para decidir cuándo lanzar a producción la nueva funcionalidad del producto.
Probar el software para asegurar un correcto funcionamiento según lo previsto, es un requisito fundamental que debe estar presente en todo el ciclo de desarrollo de software (SDLC).
Shift Left y DevOps para un software deslumbrante
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 permite que se mejore la calidad del producto final y que se minimicen 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 la incorporación de técnicas de Shift Left al ciclo de vida de desarrollo del software de nuestros clientes, un enfoque que mejora la calidad del producto final, minimiza los riesgos y reduce costos al descubrir y solucionar potenciales problemas de manera anticipada. Integramos esta enfoque en los canales de integración continua buscando alcanzar con DevOps, las expectativas de nuestros clientes que buscan experiencias digitales memorables y de la forma más rápida posible.
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!
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 la calidad, en un entorno de DevOps.
Otros contenidos relacionados
Beneficios de Shift Left Testing en el Ciclo de Desarrollo de Software
El Testing como impulsor del cambio hacia una Cultura DevOps
3 claves para una implementación exitosa de Testing Continuo
Posts Relacionados
Abstracta, Líder en Pruebas de Software
Abstracta es reconocida por TEST Magazine y Clutch, como líder en pruebas de software a nivel global. ¡Conózcanos!
Automatización de pruebas: el motor de la ingeniería de calidad-software
La automatización ha ganado gran relevancia en varias áreas del control de calidad gracias a la volatilidad de las aplicaciones. Revise los desafíos y beneficios que esto representa.