En este apartado, veremos algunos de los enfoques ágiles más utilizados al día, que implementan los valores y principios del Manifiesto Ágil de diferentes formas, los cuales son: Extreme Programming (XP), Scrum y Kanban
Este es un enfoque ágil de desarrollo de software descrito por ciertos valores, principios y prácticas de desarrollo, abarca cinco valores, la comunicación, la sencillez, la retroalimentación, el valor y el respeto, dentro de los principios contempla como directrices adicionales, la humanidad, economía, beneficio mutuo, autocontrol similitud, mejora, diversidad, reflexión, flujo, oportunidad, redundancia, falla, calidad, pequeños pasos, y aceptación de la responsabilidad; como prácticas se resaltan trece principales:
Scrum es un marco de gestión ágil que está constituido por los siguientes instrumentos y prácticas:
o Sprint: Scrum divide un proyecto en iteraciones (llamados sprints) de longitud fija, usualmente de dos a cuatro semanas
o Incremento del producto: Cada sprint resulta en un producto potencialmente liberable/enviable, llamado incremento.
o Product backlog: El product owner gestiona una lista priorizada de elementos del producto planificados (Product backlog). Este evoluciona de un sprint a otro (refinamiento del producto)
o Sprint Backlog: Al inicio de cada sprint, el equipo scrum selecciona un conjunto de elementos altamente priorizados (llamados sprint backlog) desde el product backlog. Dado que el equipo Scrum, no el product owner o propietario del producto, selecciona los elementos que se realizarán dentro del sprint, esta es referenciada basado en el principio de extracción en lugar del principio de empuje.
o Definición de hecho: Para asegurarse de que haya un producto potencialmente liberable al final de cada sprint, el equipo de Scrum analiza y define los criterios adecuados para la finalización del sprint. La discusión profundiza la comprensión del equipo sobre los elementos de backlog y los requisitos del producto.
o Timeboxing: Solo aquellas tareas, requisitos o características que el equipo espera terminar dentro del sprint son parte del backlog del sprint. Si el equipo de desarrollo no puede finalizar una tarea dentro de un sprint, las características del producto asociadas se eliminan del sprint y la tarea se mueve de nuevo al backlog del producto. El timeboxing se aplica no solo a las tareas, sino en otras situaciones (por ejemplo, hacer cumplir las horas de inicio y finalización de la reunión).
o Transparencia: el equipo de desarrollo informa y actualiza el estado del sprint a diario en una reunión llamada scrum diario. Esto hace que el contenido y el progreso del sprint actual, incluidos los resultados de las pruebas, sean visibles para el equipo, la gerencia y todas las partes interesadas. Por ejemplo, el equipo de desarrollo puede mostrar el estado del sprint en una pizarra.
Cuenta con tres roles principales:
o Scrum Master: es el encargado de asegurar que las prácticas y reglas de scrum se implementen y se sigan; además, resuelve cualquier violación, problema de recursos u otros impedimentos que podrían impedir que el equipo siga con las prácticas y reglas. Es de resaltar que este no es un líder de equipo, sino un entrenador.
o Product Owner: representa al cliente y genera, mantiene y prioriza el product baclog. No es el líder del equipo
o Development Team: desarrolla y prueba el producto. El equipo es auto-organizado: No hay un líder del equipo, por lo que el equipo toma sus decisiones. El equipo es además, multifuncional.
Kanban es un enfoque de gestión que a veces se utiliza en proyectos Agile. El objetivo general es visualizar y optimizar el flujo de trabajo dentro de una cadena de valor agregado. Kanban utiliza tres instrumentos
o Kanban board (Tablero de kanban): La cadena de valor a gestionar se visualiza mediante un tablero Kanban. Cada columna muestra una estación, que es un conjunto de actividades relacionadas, por ejemplo, desarrollo o prueba. Los artículos que se producirán o las tareas que se procesarán están simbolizados por boletos que se mueven de izquierda a derecha a través del tablero a través de las estaciones.
o Límite de trabajo en curso: la cantidad de tareas activas paralelas está estrictamente limitada. Esto está controlado por la cantidad máxima de boletos permitidos para una estación y / o globalmente para el tablero. Siempre que una estación tiene capacidad libre, el trabajador saca un boleto de la estación predecesora.
o Tiempo de entrega: Kanban se utiliza para optimizar el flujo continuo de tareas minimizando el tiempo de entrega (promedio) para el flujo de valor completo.
Kanban presenta algunas similitudes con Scrum. En ambos marcos, la visualización de las tareas activas (por ejemplo, en una pizarra pública) proporciona transparencia del contenido y el progreso de las tareas. Las tareas que aún no están programadas están a la espera de una acumulación y se trasladan al tablero Kanban tan pronto como hay nuevo espacio (capacidad de producción) disponible.
Las iteraciones o los sprints son opcionales en Kanban. El proceso Kanban permite publicar sus entregables, artículo por artículo, en lugar de parte de un lanzamiento. El timeboxing como mecanismo de sincronización, por lo tanto, es opcional, a diferencia de Scrum, que sincroniza todas las tareas dentro de un sprint.
Las especificaciones deficientes son a menudo una de las principales razones del fracaso del proyecto. Los problemas de especificación pueden deberse a la falta de conocimiento de los usuarios sobre sus verdaderas necesidades, la ausencia de una visión global del sistema, características redundantes o contradictorias y otros errores de comunicación. En el desarrollo ágil, las historias de usuario se escriben para capturar los requisitos desde las perspectivas de los desarrolladores, evaluadores y representantes comerciales. En el desarrollo secuencial, esta visión compartida de una característica se logra mediante revisiones formales después de que se redactan los requisitos
La autoría colaborativa de la historia del usuario puede utilizar técnicas como lluvia de ideas y mapas mentales. El probador puede utilizar la técnica INVEST, que ayuda asegurar la calidad en la escritura de historias de usuario, bajo el cumplimiento de unas características:

Según el concepto 3C, una historia de usuario es la conjunción de tres elementos:
Los equipos ágiles varían en términos de cómo documentan las historias de los usuarios. Independientemente del enfoque adoptado para documentar las historias de los usuarios, la documentación debe ser concisa, suficiente y necesaria.
En el desarrollo ágil, una retrospectiva es una reunión que se lleva a cabo al final de cada iteración para discutir qué fue exitoso, qué se podría mejorar y cómo incorporar las mejoras y retener los éxitos en iteraciones futuras. Las retrospectivas cubren temas como el proceso, las personas, las organizaciones, las relaciones y las herramientas. Las reuniones retrospectivas realizadas con regularidad, cuando se realizan las actividades de seguimiento adecuadas, son fundamentales para la auto-organización y la mejora continua del desarrollo y las pruebas.
Las retrospectivas pueden dar lugar a decisiones de mejora relacionadas con las pruebas que se centran en la eficacia de las pruebas, la productividad de las pruebas, la calidad de los casos de prueba y la satisfacción del equipo. También pueden abordar la capacidad de prueba de las aplicaciones, historias de usuario, funciones o interfaces del sistema. El análisis de la causa raíz de los defectos puede generar mejoras en las pruebas y el desarrollo. En general, los equipos deben implementar solo algunas mejoras por iteración. Esto permite una mejora continua a un ritmo sostenido.
El momento y la organización de la retrospectiva dependen del método ágil particular que se siga. Los representantes comerciales y el equipo asisten a cada retrospectiva como participantes mientras el facilitador organiza y dirige la reunión. En algunos casos, los equipos pueden invitar a otros participantes a la reunión.
Los probadores deben jugar un papel importante en las retrospectivas. Los evaluadores son parte del equipo y aportan su perspectiva única. Las pruebas ocurren en cada sprint y contribuyen de manera vital al éxito. Todos los miembros del equipo, probadores y no probadores, pueden aportar información tanto sobre las actividades de prueba como para las que no lo son.
Las retrospectivas deben producirse en un entorno profesional caracterizado por la confianza mutua. Los atributos de una retrospectiva exitosa son los mismos que los de cualquier otra revisión, como se analiza en el programa de estudios de nivel básico.
La entrega de un incremento de producto requiere un software integrado, confiable y funcional al final de cada sprint. La integración continua aborda este desafío fusionando todos los cambios realizados en el software e integrando todos los componentes modificados con regularidad, al menos una vez al día. La gestión de la configuración, la compilación, la creación, la implementación y las pruebas de software están integradas en un proceso único, automatizado y repetible. Dado que los desarrolladores integran su trabajo constantemente, compilan constantemente y prueban constantemente, los defectos en el código se detectan más rápidamente.
Después de la codificación, depuración y registro del código por parte de los desarrolladores en un repositorio de código fuente compartido, un proceso de integración continuo consta de las siguientes actividades automatizadas:
Un proceso de construcción y prueba automatizado se lleva a cabo a diario y detecta los errores de integración de manera temprana y rápida. La integración continua permite a los probadores ágiles ejecutar pruebas automatizadas con regularidad, en algunos casos como parte del proceso de integración continua en sí, y enviar comentarios rápidos al equipo sobre la calidad del código. Los resultados de estas pruebas son visibles para todos los miembros del equipo, especialmente cuando se integran informes automatizados en el proceso. Las pruebas de regresión automatizadas pueden ser continuas a lo largo de la iteración. Las buenas pruebas de regresión automatizadas cubren tanta funcionalidad como sea posible, incluidas las historias de usuario entregadas en las iteraciones anteriores. Una buena cobertura en las pruebas de regresión automatizada ayuda a respaldar la construcción (y prueba) de grandes sistemas integrados. Cuando se automatizan las pruebas de regresión, los probadores ágiles tienen la libertad de concentrar sus pruebas manuales en nuevas funciones, cambios implementados y pruebas de confirmación de corrección de defectos.
Además de las pruebas automatizadas, las organizaciones que utilizan la integración continua suelen utilizar herramientas de creación para implementar un control de calidad continuo. Además de ejecutar pruebas unitarias y de integración, estas herramientas pueden ejecutar pruebas estáticas y dinámicas adicionales, medir y perfilar el rendimiento, extraer y dar formato a la documentación del código fuente y facilitar los procesos manuales de garantía de calidad. Esta aplicación continua de control de calidad tiene como objetivo mejorar la calidad del producto, así como reducir el tiempo necesario para entregarlo, reemplazando la práctica tradicional de aplicar el control de calidad después de completar todo el desarrollo.
Las herramientas de compilación se pueden vincular a las herramientas de implementación automática, que pueden obtener la compilación adecuada del servidor de compilación o integración continua y desplegarla en uno o más entornos de desarrollo, prueba,
preparación o incluso producción. Esto reduce los errores y retrasos asociados con la dependencia de personal especializado o programadores para instalar versiones en estos entornos.
La integración continua puede proporcionar los siguientes beneficios:
Sin embargo, la integración continua no está exenta de riesgos y desafíos:
La integración continua requiere el uso de herramientas, incluidas herramientas de prueba, herramientas para automatizar el proceso de compilación y herramientas para el control de versiones.
Como se menciona en el programa de estudios de nivel básico, la planificación es una actividad continua, y este es también el caso de los ciclos de vida ágiles. Para los ciclos de vida ágiles, se producen dos tipos de planificación, planificación de versiones y planificación de iteraciones.
La planificación del lanzamiento anticipa el lanzamiento de un producto, a menudo unos meses antes del inicio de un proyecto. La planificación del lanzamiento define y redefine la acumulación del producto y puede implicar refinar historias de usuarios más grandes en una colección de historias más pequeñas. La planificación de la versión proporciona la base para un enfoque de prueba y un plan de prueba que abarca todas las iteraciones. Los planes de lanzamiento son de alto nivel.
En la planificación del lanzamiento, los representantes comerciales establecen y priorizan las historias de usuario para el lanzamiento, en colaboración con el equipo. A partir de estas historias de usuarios, se identifican los riesgos del proyecto y de la calidad y se realiza una estimación del esfuerzo de alto nivel
Los probadores están involucrados en la planificación de versiones y, especialmente, agregan valor en las siguientes actividades:
Una vez realizada la planificación del lanzamiento, comienza la planificación de iteraciones para la primera iteración. La planificación de la iteración mira hacia el final de una única iteración y se ocupa de la acumulación de iteraciones.
En la planificación de la iteración, el equipo selecciona historias de usuarios de la lista de trabajos pendientes de publicación priorizada, elabora las historias de usuarios, realiza un análisis de riesgo para las historias de usuarios y estima el trabajo necesario para cada historia de usuario. Si una historia de usuario es demasiado vaga y los intentos de aclararla han fallado, el equipo puede negarse a aceptarla y usar la siguiente historia de usuario según la prioridad. Los representantes comerciales deben responder las preguntas del equipo sobre cada historia para que el equipo pueda comprender qué deben implementar y cómo probar cada historia.
El número de historias seleccionadas se basa en la velocidad del equipo establecido y el tamaño estimado de las historias de usuario seleccionadas. Una vez finalizado el contenido de la iteración, las historias de usuario se dividen en tareas, que serán llevadas a cabo por los miembros del equipo correspondientes.
Los probadores están involucrados en la planificación de la iteración y, especialmente, agregan valor en las siguientes actividades:
Los planes de lanzamiento pueden cambiar a medida que avanza el proyecto, incluidos los cambios en las historias de usuarios individuales en la cartera de pedidos del producto. Estos cambios pueden ser provocados por factores internos o externos. Los factores internos incluyen capacidades de entrega, velocidad y problemas técnicos. Los factores externos incluyen el descubrimiento de nuevos mercados y oportunidades, nuevos competidores o amenazas comerciales que pueden cambiar los objetivos de lanzamiento y / o las fechas previstas. Además, los planes de iteración pueden cambiar durante una iteración. Por ejemplo, una historia de usuario particular que se consideró relativamente simple durante la estimación podría resultar más compleja de lo esperado.
Estos cambios pueden ser un desafío para los evaluadores. Los evaluadores deben comprender el panorama general de la versión para fines de planificación de pruebas, y deben tener una base de prueba adecuada y un oráculo de prueba en cada iteración para fines de desarrollo de pruebas, como se explica en el programa de estudios de nivel básico. La información requerida debe estar disponible para el evaluador con anticipación y, sin embargo, el cambio debe adoptarse de acuerdo con los principios ágiles. Este dilema requiere decisiones cuidadosas sobre las estrategias de prueba y la documentación de prueba. Para obtener más información sobre los desafíos de las pruebas ágiles.
La planificación de versiones e iteraciones debe abordar la planificación de pruebas así como la planificación de las actividades de desarrollo. Los problemas particulares relacionados con las pruebas que se deben abordar incluyen:
Además, el esfuerzo de estimación del equipo más grande debe incluir la consideración del tiempo y el esfuerzo necesarios para completar las actividades de prueba requeridas.