Es posible que hayas oído hablar de los términos right shift y left shift operators en programación pero ¿sabías que también pueden emplearse en el ámbito del QA y Testing de software? Vamos a explicarte cómo.
Qué significa left y right shift
La traducción literal de los conceptos right y left shift sería «movimiento hacia la derecha o hacia la izquierda» y en el contexto de la calidad software hacen referencia al momento en el que se recomienda llevar a cabo las tareas del testing durante el ciclo de vida del producto. Estos conceptos asociados a la lateralidad pueden ser aplicados desde las perspectivas del desarrollo software lineal y circular.
Left Shift testing
El ‘shift left testing’ asegura que las tareas de calidad y pruebas estén presentes desde una fase temprana, como en la recogida de requisitos y el diseño, para verificar la funcionalidad y el cumplimiento de lo que necesita el cliente. Así se anticipan potenciales fallos antes de que sucedan, cuando aún ni siquiera se ha escrito código. Esto hace que sean más fáciles de depurar y se ahorren costes. Probar sólo antes del lanzamiento supone un cuello de botella en el proceso, por lo que Left Shift permite desarrollar más ágil, rápido y eficiente y prevenir versus resolver los problemas de calidad. Para lograrlo se puede promover los principios de la responsabilidad compartida por la calidad y la automatización de tests.
Right Shift testing
El ‘shift right testing’ asegura que las tareas de calidad y testing estén presentes al final del desarrollo, como en la subida a entornos de producción. Así se descubren potenciales escenarios inesperados que pueden no haberse detectado en el entorno de desarrollo, se generan fallas deliberadas y se monitorizan indicadores reales.
Aunque el testing se puede hacer en un entorno comparable a producción, no hay ningún sustituto real, ya que la amplitud, diversidad, y carga de tráfico es difícil de simular. La demanda, el entorno y la infraestructura evolucionan con el tiempo, por lo que hay ciertos tipos de pruebas que deben realizarse en producción.
Al tener en cuenta a los usuarios del mundo real y sus experiencias, se obtiene un gran impacto en la satisfacción de los clientes y la cobertura de pruebas se enfoca en lo que realmente se utiliza y no en lo que se piensa que podría suceder o fallar. Testear de forma estática un repositorio o un entorno de desarrollo no brinda la misma información que se obtiene si se observa la aplicación ejecutándose en producción, por lo que la solución evoluciona y se hace más resiliente.
Los equipos a veces utilizan la inserción de errores, la ingeniería de caos, Canary releases, A/B testing, User Acceptance Testing (UAT), Features Flags y API Monitoring.
Modelo lineal de ciclo de vida en cascada
En el modelo en cascada podemos considerar el proceso como una línea continua, de izquierda a derecha. En este modelo lineal de ciclo de vida, cada vez más en desuso, el concepto de right o left shift significa fomentar las actividades de prueba al principio o al final de la línea de tiempo del desarrollo software.
Modelo circular de ciclo de vida en integración continua
En el actual paradigma de Integración y la Entrega Continua (CI/CD) se propone un modelo circular, un ciclo de vida con retroalimentación permanente en forma de bucle infinito, en el que también encajan ambos conceptos de Right y Left Shift.
- En el lado izquierdo, se planifica, diseña y desarrolla software con el objetivo de cumplir los criterios de diseño en entornos de desarrollo.
- En el lado derecho, se pone el software a disposición de los usuarios en producción para cumplir los objetivos comerciales y de confiabilidad.
¿Cuándo aplicar cada tipo de testing?
Parecen prácticas antagónicas, pero Left y Right shift son no excluyentes ni reemplazables entre sí, se complementan y pueden ser llevadas a cabo simultáneamente. Aplicar ambas permitir aislar problemas para analizarlos y abordarlos de manera más eficiente.
El foco de las pruebas y el tipo de problemas a identificar son distintos, la manera de procesar la información y las acciones a tomar en consecuencia varía.
La idea no es restringir las tareas de pruebas a una única fase, sino repartirlas a lo largo de todo el ciclo de vida y asegurarse de que estén presentes en los momentos en los que aportan mayor valor. Decidir esa distribución requiere de diversos análisis y la decisión final dependerá de una serie de factores.
Entre ellos, un análisis de potenciales riesgos de fallos, su criticidad y su impacto son muy útiles para ayudar a decidir en qué momentos del ciclo de vida se deben fomentar estas tareas.
En todo caso, la depuración de problemas en fase de producción siempre es más cara que en las fases tempranas, por lo que el objetivo es identificar y solucionar el máximo número de fallos de alta criticidad y prioridad lo antes posible.
El desplazamiento a la izquierda acelera el tiempo de comercialización y a la derecha garantiza la confiabilidad en condiciones reales. La combinación de los dos fomenta el objetivo final de integración y entrega continua y vuelve más rápida y ágil a una organización.
Ambas prácticas se alinean con metodologías de desarrollo como SAFe, donde la incorporación continua de pruebas y calidad es una práctica clave. SAFe se basa en la filosofía de «Built-in Quality», que se refiere a la incorporación de la calidad en cada etapa del ciclo de vida del software. Esto se logra mediante la integración continua y un entorno de desarrollo ágil, para asegurar que la calidad está presente en todo momento.
Por lo tanto, existen diversas metodologías que se relacionan con ambas prácticas de manera combinada. El right shift y left shift permiten la incorporación continuada de pruebas y calidad en el proceso de desarrollo de software, lo que permite detectar y corregir errores de manera temprana y garantizar la calidad en todo momento.
En Hiberus contamos con un equipo de expertos en QA services certificados en ISTQB que pueden ayudarte a configurar tu ecosistema de herramientas QA. ¿Quieres asegurar la calidad de tus proyectos, procesos y productos? ¡Contacta con nosotros!
¿Quieres más información sobre nuestros servicios de QA?
Contacta con nuestro equipo de expertos en QA y Testing