Shift Left es una práctica orientada a detectar y prevenir defectos al principio del proceso de entrega del software. La idea es mejorar la calidad moviendo las tareas a la izquierda tan pronto como sea posible en el ciclo de vida. El Shift-Left testing significa realizar una prueba antes en el proceso de desarrollo de software. En el modelo de desarrollo de software tradicional, los requisitos se mantienen en el lado izquierdo del plan, además de que los requisitos de entrega y prueba se encuentran en el lado derecho.
Ahora bien, un problema dentro de estas prácticas es que no pueden manejar los cambios en las expectativas y los requisitos, por lo que conducen a resultados negativos para la empresa, como el aumento de los costos, el aumento del tiempo de comercialización y los errores inesperados.
¿Cuándo notamos los efectos del software?
Se ha demostrado que alrededor del 56% de todos los defectos de software surgen durante la fase de requisitos, el 27% en la fase de diseño y solo el 7% durante la fase de desarrollo. Estas cifras fueron detalladas por primera vez por el autor ganador de un premio Pulitzer y consultor de TI James Martin, afirmado por S.A. Kelkar del Instituto Indio de Tecnología en Análisis y Diseño de Sistemas Estructurados, y confirmado por STBC en The Economics of Testing.
Ahora que hemos establecido las fases en las que surgen los defectos, es fundamental evaluar los costos asociados con dichos problemas. Un informe de IBM System Institute reveló que los defectos identificados y resueltos durante la fase de requisitos y diseño son alrededor de 100 veces menos costosos de reparar que los descubiertos después del lanzamiento de un producto.
Según IBM Security, la investigación del Instituto Nacional de Estándares y Tecnología y el Instituto Ponemon encontró que, si las vulnerabilidades se detectan en el proceso de desarrollo temprano, pueden costar alrededor de $ 80 en promedio. Pero las mismas vulnerabilidades pueden costar alrededor de $ 7600 si se detectan durante la fase de producción.
En un enfoque de Shift Left, las pruebas se realizan durante las primeras etapas moviéndose hacia la izquierda en el ciclo de vida del proyecto. Los desarrolladores deben centrarse en la calidad desde el principio, en lugar de esperar a que se descubran errores y errores más adelante en el SDLC (software development lifecycle, o ciclo de vida de desarrollo de software). Si se desplaza hacia la izquierda, los equipos de proyecto pueden realizar pruebas, proporcionar comentarios, así como revisar cambios y progresar diariamente.
¿Qué es Shift Right?
A veces, puede faltar un enfoque de prueba de Shift Left para proporcionar un rendimiento y funcionamiento óptimos en un entorno del mundo real. En tales situaciones, una estrategia de prueba de Shift Right puede ayudar a mejorar la experiencia del cliente, proporcionar el alcance para la implementación de la automatización de prueba y asegurar una mejor cobertura de prueba. Shift Right inicia las pruebas desde la derecha, es decir, la postproducción. Se está probando una aplicación completamente construida y en funcionamiento para garantizar los rasgos de rendimiento y usabilidad. Las revisiones y comentarios de usuarios específicos ayudan aún más a mejorar la calidad del software.
Una característica importante del enfoque de Shift Right es la voluntad de validar una hipótesis al probar nuevas soluciones y colaborar con los clientes para determinar qué es lo que funciona, en lugar de dedicar tiempo a las suposiciones. La retroalimentación continua de los usuarios puede ayudar a responder mejor ante circunstancias imprevistas como caídas, fallas, etc.
Estrategias de Shift Left
- Pedir planificación. Los analistas de pruebas deben comprometerse con las partes interesadas operativas y comerciales, de esta forma deberán proporcionar una visión a futuro sobre la demanda. Esto permite la planificación y finalización de estrategias presupuestarias, de recursos y de prueba antes de tiempo. Es una parte integral del enfoque de Shift Left y un punto de partida para todas las demás actividades en el ciclo de vida de prueba.
- Pruebas estáticas. Las pruebas estáticas se llevan a cabo en los primeros ciclos del proyecto e incluyen la validación de los requisitos y el diseño. Se realiza con el propósito de encontrar defectos al principio del ciclo de vida, que podrían resultar muy costosos en las fases posteriores del proyecto. La verificación y validación de requisitos y diseño se realiza durante las llamadas de colaboración de diseño utilizando listas de verificación apropiadas, los defectos se registran en la herramienta de gestión de defectos.
- Estrategia de prueba unificada. Es una estrategia general de alto nivel, se implementa para realizar pruebas de extremo a extremo, es decir, desde la prueba de unidad a través de UAT, ORT y pruebas posteriores a la implementación. La cobertura crítica serán todas las fases del control de calidad con responsabilidades claras. Analiza las dependencias de los entornos, los stubs, la automatización y los datos de prueba, asegurando que estos puedan ser cumplidos por los respectivos equipos.
- Análisis basado en riesgo. Se realiza un análisis basado en el riesgo para determinar el impacto y la probabilidad de falla para cada escenario de prueba. Este enfoque se usa para pruebas funcionales, no funcionales y de regresión. Una vez que se establecen los casos de prueba, la prioridad para los casos de prueba se decide en función del análisis realizado. El impacto del fracaso se discutirá con el analista o diseñador de negocios, y la probabilidad de fracaso se tratará con el equipo de desarrollo.
Descarga eBook: Estrategia de Shift Left para IT Service Management
Beneficios de la automatización Shift Left
- Automatización. El aumento de los niveles de automatización mientras se desplaza a la izquierda puede:
1)Reducir los errores humanos.
2)Aumentar la cobertura de la prueba ejecutando una mayor cantidad pruebas al mismo tiempo.
3)Conceder tiempo suficiente para que los evaluadores se centren en tareas más inspiradoras y satisfactorias.
4)Reducir los problemas que surjan durante la producción. - Entrega más rápida. Los evaluadores pueden acelerar la entrega de proyectos encontrando defectos antes en el ciclo de vida del desarrollo del software, minimizando el tiempo entre versiones y mejorando así la calidad del software. Un proceso organizado puede proporcionar la manera más efectiva de realizar tareas a tiempo. El aseguramiento de la calidad se centra en desarrollar y documentar estos procesos, y luego mejorarlos.
- Ejecución libre de fallos. Encontrar defectos antes en la fase de requisitos puede garantizar que su equipo esté al tanto de todos los requisitos comerciales.
- Socios comerciales satisfechos. Si el equipo puede ofrecer todas las funciones más rápido con mayor calidad, menores costos y mayor satisfacción del cliente, no hay razón para esperar para adoptar un enfoque de Shift Left.
Shift Left se clasifica ampliamente en 4 tipos: pruebas tradicionales, incrementales, Agile y basadas en modelos. Como es una nueva palabra de moda en ITSM, comparémosla con DevOps.
Shift Left en ITSM implica la resolución de tickets de soporte de la manera más eficiente posible, esto se debe a que, al cambiar los tickets a la fuente de soporte menos costosa, lleva el trabajo más complejo al personal de primera línea, por lo tanto, traslada las actividades estándar y el trabajo repetitivo, hacia los portales de autoservicio web.
Esto conlleva a que los miembros del personal altamente experimentados hacen que sus soluciones estén más disponibles para los colegas que cuentan con una menor experiencia en este tipo de situaciones, esto tiene como finalidad el que puedan ayudar a los clientes a usar las respuestas disponibles.
El Shift Left en ITSM suele estar impulsado por el Knowledge Centered Support (KCS), también conocido como Soporte Centrado en el Conocimiento. Se trata de un mecanismo eficaz de soporte de TI que coloca la creación y el intercambio de conocimientos en el centro de cada interacción de TI.
Desde la perspectiva de DevOps, debemos considerar a Shift Left como un enfoque utilizado para mejorar la colaboración y la comunicación al involucrar a los interesados en las funciones que se encuentran a la derecha en el proceso de entrega, antes en el ciclo de vida.
El Shift Left requiere dos prácticas clave: pruebas continuas y despliegue continuo. La prueba continua es el proceso de ejecución de pruebas automatizadas lo antes posible, junto con la virtualización del servicio para imitar los sistemas no disponibles. En la implementación continua, las tuberías de implementación están completamente automatizadas y se activan automáticamente para cada cambio.
Mejores prácticas que implementar para Shift Left
- Todas las partes interesadas deben tener una comprensión clara de la estrategia, los requisitos funcionales y comerciales, el diseño y el plan de prueba.
- Nunca permita que sus requisitos pasen a la fase de diseño sin un segundo par de ojos que puedan revisar cada aspecto de ese requisito.
- La implementación de una prueba de concepto les permite evaluar la facilidad de uso de la aplicación. También les ayuda a mostrar al cliente el cómo se desempeñaría un proyecto.
- Los desarrolladores pueden asumir cierta responsabilidad por los esfuerzos de automatización de pruebas para acelerar todo el proceso. El desarrollo impulsado por el comportamiento es una forma útil de persuadir a los desarrolladores para que comiencen a crear pruebas, y colmar la brecha entre los desarrolladores y los evaluadores.
- Los evaluadores pueden realizar algunas tareas de desarrollador, como las revisiones de códigos de automatización de pruebas. Cuando tienen el conocimiento de dominio requerido y una comprensión holística del sistema, pueden concentrarse sin esfuerzo en las áreas donde se pueden encontrar defectos.
- Organizar reuniones con el equipo de desarrollo relacionadas con los síntomas y soluciones de defectos. Hagan reportes sobre todos los defectos y su impacto, así como toquen los temas en reuniones de estado semanales y mensuales.
- Registren defectos con su análisis y resolución en un repositorio central. Esto podría ser utilizado como una línea de base para los próximos proyectos de software.
- Es esencial crear un plan de mantenimiento que proporcione una hoja de ruta y una dirección claras.
¿Cómo empezar con Shift Left?
- Defina el ciclo de vida completo de las pruebas: defina el ciclo de vida de las pruebas con fases, tareas y herramientas de SDLC. Mueva las actividades de prueba relevantes a las fases iniciales de planificación, requisitos y diseño.
- Técnicas de diseño formal: puede hacer uso de técnicas de diseño de prueba, como el análisis de decisiones, la partición de clase de equivalencia y el análisis ortogonal.
- Validación de requisitos: implementar un método de inspección formal para ayudar en el descubrimiento temprano de defectos. Estas inspecciones pueden acortar la fase de desarrollo al identificar los requisitos faltantes.
- Integración: el siguiente paso es integrar todos los procesos de desarrollo, gestión de proyectos y operación con las pruebas. Ayuda a identificar el tiempo estimado para completar el ciclo de prueba y evitar la duplicación de tareas.
- Controles de calidad: los controles de calidad pueden ayudar a los equipos de proyecto a determinar la condición de un proyecto en cada fase. El gerente de proyecto tiene que tomar acciones correctivas para obtener control sobre los requisitos y los cambios de alcance.
- Planificación de lanzamientos: se recomienda planificar los lanzamientos departamentales con anticipación, ya que ayuda a comprender los posibles retrasos y la gestión de recursos.
- Creación de casos de prueba: los expertos normalmente sugieren desarrollar casos de prueba que puedan cubrir procesos funcionales y patrones operativos. Ayuda a reducir el número de casos de prueba que se crearán en el futuro.
- Participe en la automatización de pruebas: tanto los desarrolladores como los evaluadores pueden automatizar toda la compilación para probar el proceso en todas las fases de SDLC, lo que puede infundir una mejor integración entre procesos y generar más confianza en cada versión.
- Mecanismo de retroalimentación continua: el mecanismo de retroalimentación continua ayuda a los evaluadores a proporcionar retroalimentación a los desarrolladores, y los errores tienden a disminuir el tiempo extra.
Como hemos visto, Shift Left significa desplazar las pruebas de integración a la izquierda de su posición habitual en la entrega. Para lograr las pruebas de integración al inicio del ciclo de vida, la virtualización de prueba se convierte en un requisito previo. La prueba Shift Left es un habilitador clave para aumentar la eficiencia y la calidad. En este modelo, cada miembro del equipo tiene la misma responsabilidad de producir software de alta calidad. Por lo tanto, Shift Left es mucho más que un cambio de proceso, es una mentalidad y un cambio cultural que claramente genera excelentes beneficios.