Cuando utiliza el marco Scrum, un ciclo de Sprint implica desarrollo y control de calidad. Al final del Sprint, las tareas trabajadas y probadas se muestran y se publican.
Por lo general, para un equipo de 3 a 4 desarrolladores, habría 1 recurso de control de calidad. ¿Qué se espera que hagan los desarrolladores cuando se realiza el control de calidad? Dado que la cantidad de desarrolladores es mucho mayor que la cantidad de evaluadores de control de calidad, las correcciones de errores se realizan muy rápido y los desarrolladores no tienen nada que hacer hacia el final del Sprint.
¿Qué se espera de los desarrolladores durante esta prueba de control de calidad mientras siguen Scrum?
Su pregunta incorpora algunas suposiciones falsas sobre la naturaleza lineal de las pruebas dentro de un proceso ágil. Un equipo ágil maduro con conjuntos de habilidades multifuncionales trata el desarrollo y las pruebas como actividades entrelazadas en lugar de actividades secuenciales.
Debe esforzarse por integrar el desarrollo y las pruebas para que no sean flujos de trabajo fundamentalmente separados. En su defecto, debe aceptar formalmente los riesgos y los déficits de proceso asociados con el flujo de trabajo actualmente implementado.
Por lo general, para un equipo de 3 a 4 desarrolladores, habría 1 recurso de control de calidad. ¿Qué se espera que hagan los desarrolladores cuando se realiza el control de calidad? Dado que la cantidad de desarrolladores es mucho mayor que el control de calidad, las correcciones de errores se realizan muy rápido y los desarrolladores no tienen nada que hacer hacia el final del sprint.
No estás haciendo Scrum, estás haciendo cascada. Las actividades deben ser multifuncionales y aprovechar un enfoque de equipo multifacético para todas las tareas.
Como un ejemplo, los probadores y los desarrolladores deben trabajar al unísono a lo largo de un Sprint. Los probadores deben participar desde el principio y con frecuencia, ayudando a los desarrolladores a diseñar características comprobables trabajando en criterios de prueba desde el principio antes de que se escriba una sola línea de código y ayudando a garantizar que las pruebas se escriban primero.
La gente de control de calidad debe ejecutar la integración continua todos los días, de modo que haya un ciclo de retroalimentación estrecho (e idealmente inmediato) entre el desarrollo y las pruebas. Al trabajar con los desarrolladores, en lugar de tratarse como una actividad de seguimiento separada, el control de calidad se convierte en una parte intrínseca de los ciclos de diseño y desarrollo en lugar de una externalidad.
¿Qué se espera que hagan los desarrolladores cuando se realiza el control de calidad? Dado que la cantidad de desarrolladores es mucho mayor que el control de calidad, las correcciones de errores se realizan muy rápido y los desarrolladores no tienen nada que hacer hacia el final del sprint.
Así como se espera que los evaluadores se involucren con los desarrolladores desde el primer día, se espera que los desarrolladores trabajen con el control de calidad durante las tareas de prueba. En lugar de arrojar el código por encima de la pared a los probadores, los desarrolladores y los probadores deben trabajar juntos en el proceso de prueba para que los errores se corrijan a medida que se descubren.
Imagine un escenario de programación en pareja donde un probador y un desarrollador trabajan juntos en un conjunto de pruebas. En lugar de que un desarrollador descargue un muro de código en el probador y luego espere los resultados, los dos podrían trabajar juntos en pruebas y refactorizaciones. Por ejemplo:
Si por alguna razón su equipo no puede o no quiere cooperar en actividades relacionadas con las pruebas, entonces el proceso debe hacer que ese costo sea visible para el equipo. Si los desarrolladores y el control de calidad insisten en jugar voleibol con tareas lanzando cosas de un lado a otro sobre una red en lugar de integrarse para realizar el trabajo juntos, entonces simplemente hace que ese proceso (potencialmente disfuncional) sea completamente visible.
¿Los probadores realmente no tienen nada que hacer durante la primera fase de un Sprint? No, pero si ese es su proceso, entonces reconoce que tener probadores inactivos en el equipo durante medio Sprint es uno de los costos de hacer negocios. Del mismo modo, si los desarrolladores realmente no tienen nada que aportar al proceso de prueba en la segunda mitad de un Sprint, entonces usted reconoce explícitamente que a sus desarrolladores se les paga para pasar el rato en Facebook el 50 % del tiempo, y puede aceptarlo como tal. un costo de hacer negocios dentro de su proceso elegido.
Los equipos saludables tratan a todos los miembros como recursos multifuncionales, con valor para agregar durante cada paso del proceso. Incluso si elige no integrar completamente las pruebas como una actividad de primera clase dentro de sus Sprints, los evaluadores y los desarrolladores pueden turnarse para ayudarse mutuamente en las tareas actuales. Por ejemplo, durante el desarrollo, un probador puede trabajar en colaboración para diseñar dispositivos de prueba mientras el desarrollador escribe la característica; luego, durante la prueba, el desarrollador puede ejecutar un análisis de cobertura de código o trabajar para convertir los resultados de la prueba en documentación mientras el probador ejecuta las pruebas.
Si el equipo no puede o no quiere trabajar cooperativamente de esta manera, entonces la organización simplemente puede aceptar el hecho de que algunos roles dentro del equipo estarán inactivos en ciertos puntos del proceso. Si bien no es lo ideal, podría ser políticamente necesario simplemente reconocer que el 50 % de sus roles estarán inactivos en un momento dado y que este es un costo aceptable de hacer negocios dentro de su proceso de desarrollo actual. Si bien personalmente considero que esta es una opción subóptima, aún es mejor que caer presa de la falacia de utilización del 100% que intenta mantener a todos ocupados incluso cuando hacerlo es un desperdicio y no genera valor... y, a veces, incluso puede reducir activamente productividad.
Podrían estar haciendo varias cosas. Lo que deberían estar haciendo depende de la madurez de Scrum/XP de su organización, pero aquí hay algunos elementos comunes:
El control de calidad funciona: sí, los desarrolladores pueden realizar el control de calidad, ya sea escribiendo nuevas pruebas automatizadas, aumentando la cobertura de prueba existente o reduciendo la complejidad de la prueba, realizando pruebas manuales o pruebas de rendimiento/carga, los desarrolladores pueden y deben realizar el control de calidad. Todo el equipo es dueño de la calidad del producto. Los desarrolladores especialmente disciplinados usarán TDD, por lo que la mayoría de las pruebas se realizan antes de que la historia pase al control de calidad. Los equipos Scrum con 0 recursos de control de calidad son bastante comunes.
Deuda tecnológica/Refactorización/Corrección de defectos
Picos para historias funcionales más grandes que vienen en el próximo sprint
Aprendiendo nuevas habilidades tanto blandas como técnicas. El final de un sprint es un buen momento (como cualquier otro) para que se produzca una mejora continua. Tener un desarrollador que piense que no es su trabajo probar. Emparéjelo con un recurso de control de calidad durante la segunda mitad del sprint.
Preparar el trabajo atrasado/trabajar con PO para obtener consideraciones técnicas.
Aprender a escribir y preparar historias/tareas que son pequeñas para que no todas las pruebas ocurran en la segunda mitad de la iteración.
Mejorar herramientas o procesos en torno a la integración continua.
Para llevar, si sus desarrolladores están inactivos durante la segunda mitad de su iteración mientras el control de calidad realiza las pruebas, tiene algunas oportunidades para aprovechar los beneficios de las verdaderas prácticas de scrum/XP en lugar de vivir el mini-scrum en cascada.
"Por lo general, para un equipo de 3 a 4 desarrolladores, habría 1 recurso de control de calidad"
Ahí está tu problema. Hay tres roles en Scrum , Product Owner, Scrum Master y Development Team Member. Su equipo de desarrollo está destinado a ser un equipo multifuncional que trabaja hacia los mismos objetivos. Está bien tener personas con diferentes habilidades (en control de calidad, en desarrollo), pero si tiene miembros del equipo que solo pueden hacer cosas muy específicas (como evaluadores que solo pueden realizar pruebas manuales), ese es un problema que debe solucionar. La automatización de pruebas es un terreno común útil entre desarrolladores y probadores.
Parece que en realidad no estás practicando scrum sino 'cascada de tiempo'. Con este enfoque, cada sprint es su propio proyecto de mini cascada, con desarrollo al frente y pruebas al final. Como ha identificado, esto da como resultado una pérdida de tiempo, ya que los probadores tienen poco que hacer al comienzo del sprint y los desarrolladores tienen poco que hacer al final del sprint.
En cambio, el equipo debe trabajar para garantizar que todos estén lo más empleados posible ( tenga en cuenta que no se utiliza al 100%, consulte los comentarios a continuación). Durante los standups diarios y en la planificación del sprint, su equipo debe tratar de averiguar cómo pueden entregar algo a los evaluadores de inmediato, y luego repetirlo durante el sprint para que los evaluadores puedan probar la funcionalidad en partes a medida que se entrega.
Una parte común del standup podría ser que un probador diga que no tiene nada en lo que trabajar más tarde ese día. Tal vez un desarrollador se ofrezca a corregir un par de errores que saben que luego pueden cerrar esa mañana en lugar de comenzar algo más grande. Eso luego llena un vacío para el probador mientras otro desarrollador está terminando un trabajo para que comiencen a probar mañana. Nadie se está rompiendo el estómago, pero tienes un mayor rendimiento de trabajo.
Es una configuración un poco inusual la que tiene allí, pero lo que los desarrolladores pueden hacer es comenzar a prepararse para el próximo sprint, solucionar los desafíos técnicos con las nuevas historias de usuario o refactorizar la base de código existente.
Segunda opción, el "Libro Scrum" sugeriría que los desarrolladores también deberían hacer pruebas (modismo de equipo interfuncional), por supuesto, un desarrollador no puede probar lo que implementó.
Tercera opción, es posible que desee pensar en tener dos sprints paralelos pero desplazados. Uno para control de calidad y otro para desarrollo. El control de calidad comenzaría medio ciclo más tarde que el desarrollo. Con esta configuración, los desarrolladores y el control de calidad trabajarán sin estar inactivos durante mucho tiempo. Solo asegúrese de tener capacidad en cada sprint para corregir errores, de lo contrario, la calidad del código disminuirá.
Cuarta opción, puede contratar otro control de calidad para acelerar las pruebas.
El desarrollador puede trabajar para mejorar tanto el proceso como el equipo a través de varias acciones requeridas para el final del sprint, tales como:
Referencias
Soy un desarrollador.
Déjame decirte, lo que estás haciendo mal...
¡Nada! Así es como se diseña Scrum, y ningún sistema es perfecto. No es de extrañar que esté leyendo mi respuesta en este momento porque es un problema universal de scrum.
Esto es lo que no debes hacer:
Esto es lo que encontré que funciona mejor:
Realmente, el n.° 1 (TRABAJO ADELANTE) es lo que mejor me sirvió, porque los n.° 2, n.° 3 y n.° 4 deben realizarse durante todo el sprint, ¡no solo cuando el control de calidad prueba el código!
Además, el #5 es evidente.
Entonces, sí... ¡Adelante!
Cuando termino mis historias en el sprint actual, pregunto en qué historia debo comenzar desde el siguiente sprint.
Comienzo una historia del siguiente sprint, y como comencé temprano antes de que comience el sprint, termino mis próximas historias de sprint (aunque no todas a la vez), poco después de que comience el siguiente sprint, a la mitad del próximo sprint o unos pocos días antes de que finalice (no uno o dos días antes de la revisión del sprint).
Esto le da a QA mucho tiempo para probar mi código y tengo tiempo suficiente para responder a sus comentarios. Además, trabajar con anticipación proporciona tareas de prueba para el control de calidad durante todo el sprint, ¡no solo en los últimos días! Esto hace que la carga de trabajo del control de calidad esté equilibrada, y no todo hacia el final del sprint.
Una vez más, la respuesta es ¡TRABAJAR ADELANTE!
¡Esto garantizará la implementación de funciones a lo largo del ciclo de sprint, lo que equilibrará la carga de prueba durante todo el sprint!
Aquí hay un buen artículo que escribí sobre mi experiencia con el tema: ¡Resolví el problema del cuello de botella de las pruebas ágiles!
https://medium.com/@salibsamer/i-resolvió-scrum-sprint-end-testing-bottleneck-problem-bfd6222284a1
Judit