Los proyectos ágiles describen los requisitos iniciales como historias de usuario en una cartera de pedidos priorizada al inicio del proyecto, los requisitos iniciales son breves y normalmente siguen un formato predefinido, los requisitos no funcionales, como la usabilidad y el rendimiento, también son importantes y pueden especificarse como historias de usuarios únicas o conectarse a otras historias de usuarios funcionales, los requisitos no funcionales pueden seguir un formato o estándar predefinido, como ISO25000, o un estándar específico de la industria.
Las historias de usuario sirven como base de prueba importante, otras posibles bases de prueba incluyen:
Durante cada iteración, los desarrolladores crean un código que implementa las funciones y características descritas en las historias de usuario, con las características de calidad relevantes, y este código se verifica y valida mediante pruebas de aceptación, para ser comprobable, los criterios de aceptación deben abordar los siguientes temas cuando sea relevante
El comportamiento observable externamente con acciones del usuario como entrada que opera bajo ciertas configuraciones.
cómo el sistema realiza el comportamiento especificado, las características también pueden denominarse atributos de calidad o requisitos no funcionales, las características de calidad comunes son rendimiento, confiabilidad, facilidad de uso, etc.
Reglas comerciales: actividades que solo se pueden realizar en el sistema bajo ciertas condiciones definidas por procedimientos y restricciones externas por ejemplo, (los procedimientos utilizados por una compañía de seguros para manejar reclamos de seguros).
Interfaces externas: Descripciones de las conexiones entre el sistema a desarrollar y el mundo exterior. Las interfaces externas se pueden dividir en diferentes tipos (interfaz de usuario, interfaz con otros sistemas, etc.).
Restricciones: cualquier restricción de diseño e implementación que restrinja las opciones para el desarrollador, los dispositivos con software integrado a menudo deben respetar las limitaciones físicas como el tamaño, el peso y las conexiones de interfaz.
el cliente puede describir el formato, tipo de datos, valores permitidos y valores predeterminados para un elemento de datos en la composición de una estructura de datos comerciales compleja (por ejemplo, el código postal en una dirección de correo de EE. UU.).
Además de las historias de usuario y sus criterios de aceptación asociados, otra información que es relevante para el evaluador, incluye:
Los probadores a menudo descubrirán la necesidad de información adicional (por ejemplo, cobertura de código) a lo largo de las iteraciones y deben trabajar en colaboración con el resto de los miembros del equipo Agile para obtener esa información, la información relevante juega un papel importante en la determinación de si una actividad en particular puede considerarse realizada, este concepto de la definición de hecho es fundamental en los proyectos ágiles y se aplica de varias formas diferentes, como se explica en las siguientes subsecciones.
Niveles de prueba
Cada nivel de prueba tiene su propia definición de terminado. La siguiente lista ofrece ejemplos que pueden ser relevantes para los diferentes niveles de prueba.
Prueba unitaria:Prueba de integración:
Historia del usuario
La definición de hecho para historias de usuario puede determinarse mediante los siguientes criterios:
Las historias de usuario seleccionadas para la iteración están completas, son entendidas por el equipo y tienen criterios de aceptación detallados y comprobables.
Se han especificado y revisado todos los elementos de la historia del usuario, incluidas las pruebas de aceptación de la historia del usuario.
El equipo ha identificado y estimado las tareas necesarias para implementar y probar las historias de usuario seleccionadas.
Feature
La definición de hecho para features, que pueden abarcar múltiples historias de usuarios o épicas, puede incluir:
Iteración
La definición de hecho para la iteración puede incluir lo siguiente:
En este punto, el software es potencialmente liberable porque la iteración se ha completado con éxito, pero no todas las iteraciones dan como resultado una versión.
Lanzamiento
La definición de hecho para un lanzamiento, que puede abarcar varias iteraciones, puede incluir las siguientes áreas:
Cobertura: Todos los elementos de base de prueba relevantes para todos los contenidos de la versión han sido cubiertos por pruebas. La adecuación de la cobertura está determinada por lo que es nuevo o modificado, su complejidad y tamaño, y los riesgos de falla asociados.
Calidad: La intensidad del defecto (por ejemplo, cuántos defectos se encuentran por día o por transacción), la densidad de defectos (por ejemplo, el número de defectos encontrados en comparación con el número de historias de usuario, esfuerzo y / o atributos de calidad), estimado el número de defectos restantes está dentro de los límites aceptables, las consecuencias de los defectos no resueltos y restantes (por ejemplo, la gravedad y la prioridad) se entienden y son aceptables, el nivel residual de riesgo asociado con cada riesgo de calidad identificado se comprende y es aceptable.
Hora: si se ha alcanzado la fecha de entrega predeterminada, se deben considerar las consideraciones comerciales asociadas con la liberación y no la liberación.
Costo: El costo estimado del ciclo de vida debe usarse para calcular el retorno de la inversión para el sistema entregado (es decir, el costo de desarrollo y mantenimiento calculado debe ser considerablemente más bajo que las ventas totales esperadas del producto). La mayor parte del costo del ciclo de vida a menudo proviene del mantenimiento después de que el producto ha sido lanzado, debido a la cantidad de defectos que se escapan a la producción.
El desarrollo impulsado por pruebas de aceptación es un enfoque donde se debe realizar primero que todo las pruebas. Los casos de prueba se crean antes de implementar la historia del usuario, los casos de prueba son creados por el equipo Agile, incluido el desarrollador, el evaluador y los representantes comerciales y pueden ser manuales o automatizados.
El primer paso es un taller de especificación en el que los desarrolladores, evaluadores y representantes comerciales analizan, discuten y escriben la historia del usuario, cualquier incompletitud, ambigüedades o errores en la historia del usuario se corrigen durante este proceso.
El siguiente paso es crear las pruebas, esto puede hacerlo el equipo en conjunto o el evaluador individualmente, en cualquier caso, una persona independiente como un representante comercial, valida las pruebas, las pruebas son ejemplos que describen las características específicas de la historia del usuario, estos ejemplos ayudarán al equipo a implementar correctamente la historia del usuario. Dado que los ejemplos y las pruebas son los mismos, estos términos a menudo se usan indistintamente, el trabajo comienza con ejemplos básicos y preguntas abiertas.
Los ejemplos deben cubrir todas las características de la historia del usuario y no deben agregarse a la historia, esto significa que no debería existir un ejemplo que describa un aspecto de la historia del usuario que no esté documentado en la historia misma, además, no hay dos ejemplos que describan las mismas características de la historia del usuario.
En las pruebas ágiles, los evaluadores crean muchas pruebas al mismo tiempo que las actividades de programación de los desarrolladores.
En muchas situaciones, los requisitos no funcionales se pueden documentar como historias de usuario. Las técnicas de diseño de pruebas de caja negra (como el análisis de valor límite) también se pueden utilizar para crear pruebas de características de calidad no funcionales, la historia de usuario puede contener requisitos de rendimiento o confiabilidad, por ejemplo, una ejecución determinada no puede exceder un límite de tiempo o varias operaciones pueden fallar menos de un cierto número de veces.
Las pruebas exploratorias son importantes en los proyectos ágiles debido al tiempo limitado disponible para el análisis de pruebas y los detalles limitados de las historias de usuario, para lograr los mejores resultados, las pruebas exploratorias deben combinarse con otras técnicas basadas en la experiencia como parte de una estrategia de prueba reactiva, combinadas con otras estrategias de prueba como las pruebas analíticas basadas en riesgos, las pruebas analíticas basadas en requisitos, las pruebas basadas en modelos y pruebas de aversión a la regresión.
Una carta de prueba puede incluir la siguiente información:
Para gestionar las pruebas exploratorias, se puede utilizar un método denominado gestión de pruebas basada en sesiones. Una sesión se define como un período ininterrumpido de prueba que puede durar de 60 a 120 minutos. Las sesiones de prueba incluyen lo siguiente:
La calidad de las pruebas depende de la capacidad de los evaluadores para hacer preguntas relevantes sobre qué probar. Los ejemplos incluyen lo siguiente:
Durante la ejecución de la prueba, el evaluador utiliza la creatividad, la intuición, la cognición y la habilidad para encontrar posibles problemas con el producto, el evaluador también debe tener un buen conocimiento y comprensión del software bajo prueba, el dominio comercial, cómo se usa el software y cómo determinar cuándo falla el sistema.
Se puede aplicar un conjunto de heurísticas al realizar pruebas, una heurística puede guiar al evaluador sobre cómo realizar la prueba y evaluar los resultados, Ejemplos incluyen:
Es importante que el evaluador documente el proceso tanto como sea posible, de lo contrario, sería difícil volver atrás y ver cómo se descubrió un problema en el sistema, la siguiente lista proporciona ejemplos de información que puede ser útil documentar: