“En la lucha por la supervivencia, los más aptos ganan a expensas de sus rivales porque consiguen adaptarse mejor a su entorno” .
Charles Darwin
El mundo ya cambió, nos guste o no, para la generación de negocios del futuro. Ser ágil o vivir en el mundo agile, ya no es una opción. Se estima que por lo menos el 40% de todos los negocios desaparecerán en los siguientes 10 años si no logran adaptarse a los nuevos desarrollos digitales que están evolucionando a una velocidad vertiginosa. Entonces, las empresas requieren reducir el time-to-market para sobrevivir y asegurar la gratificación instantánea que sus clientes demandan con el uso de nuevas aplicaciones de software.
En ese contexto, la evolución hacia un Agile Mindset ofrece una alternativa para el desarrollo de software que permite transformar un producto rápidamente sin perder de vista el enorme riesgo de perder la calidad, durante el proceso.
Agile Testing: Definición, ejecución y automatización de pruebas, para construir un producto de calidad
El testeo tradicional de software, esa fase más dentro del desarrollo cascada o waterfall, ha perdido su eficacia absoluta en un mundo agile. Ahora es más necesario que nunca probar continuamente, porque es una de las claves para mantener la calidad de los productos, que evolucionan a una velocidad vertiginosa. Como menciona el experto en Agile Coaching e Ingeniería Informática, Francisco Javier González, “En el desarrollo ágil de software, generalmente utilizamos un enfoque iterativo e incremental. Podemos ir construyendo el producto y evolucionarlo con el feedback que recibimos de sus usuarios”.
❮❮ La calidad de un producto de software depende exclusivamente de la calidad del proceso con el que se construye. ❯❯
Pruebas a múltiples niveles y no solo en una fase
Agile Testing es una actividad colaborativa que ocurre continuamente, desde el nacimiento de un producto de software hasta su despliegue y operación.
Las pruebas con agilidad se enfocan en construir un producto de calidad, utilizando bucles de feedback cortos o sprints para validar nuestras hipótesis (aprendizaje validado). Las prácticas refuerzan la idea de que la calidad es responsabilidad de todo el equipo.
Pirámide de Pruebas de Software
Para entender mejor el Agile Testing es importante distinguirlo primero del desarrollo de software tradicional.
Desarrollo tradicional vs Desarrollo Agile
La pirámide de la derecha representa como se ejecuta el Agile Testing, donde la gran mayoría de las pruebas son unitarias automatizadas, de aceptación automatizadas y de interfaz gráfica automatizadas, buscando reducir al mínimo las pruebas funcionales manuales.
Aprenda más sobre: Garantizar una mayor velocidad de ejecución en iteraciones agiles. ¡Descubre los detalles aquí!
❮❮ Un experto multifuncional en Agile Testing tiene la única misión de entregar el valor de negocio que su cliente necesita, a un ritmo sostenible y continuo. ❯❯
Agile Testing es mucho más que solo una fase del proceso
Las metodologías ágiles no consideran a las pruebas de software como una fase separada, sino como parte integral del desarrollo de software al igual que la programación.
Agile Testing, incorpora una serie de prácticas, como por ejemplo las pruebas de “todo el equipo”, pruebas independientes, integración continua, testing guiado por pruebas, desarrollo guiado por comportamiento, desarrollo guiado por pruebas de aceptación, entre otros.
6 prácticas de Pruebas de software
- Test Driven Development (TDD): Técnica que combina un enfoque de refactorización del lado de desarrollo con un enfoque de probar primero en cuanto al testing.
- Acceptance Test Driven Development (ATDD): Es una dimensión del TDD aplicada al nivel de gestión de requerimientos de software, en el cual las pruebas escritas son a nivel de cliente, es decir, lo equivalente a una prueba de aceptación o test funcional.
- Behaviour Driven Development (BDD): Bajo este enfoque primero se desarrolla una prueba funcional o de historia de usuario automatizada, luego se ejecuta el desarrollo aplicando TDD hasta que la prueba es exitosa.
- Testing exploratorio: Enfoque en el cual el aprendizaje de la funcionalidad, diseño de pruebas y ejecución de pruebas ocurren simultáneamente.
- Automatización de pruebas de regresión: Tanto la integración continua como la refactorización son prácticas necesarias para poder implementar una metodología ágil de desarrollo de software.
- Automatización de pruebas unitarias: Consiste en usar un marco de trabajo o framework para ejecutar tus tests unitarios, en lugar de ejecutar estos manualmente una y otra vez cada vez que modificas el código.
Las pruebas ágiles de software implican cambios importantes respecto a estos métodos de trabajo, como por ejemplo que el equipo de pruebas está integrado con el de desarrollo, es un solo equipo, las pruebas se realizan en paralelo con el desarrollo, los QA’s colaboran con el dueño del producto en el levantamiento de requerimientos e historias de usuario.
¿Cómo reducir hasta en 70% los tiempos de ejecución con pruebas automatizadas? ¡Obtenga nuestras ideas aquí!
Equipo técnico de Quality Assurance
El proceso de pruebas llevado a cabo por el equipo de Quality Assurance a lo largo de un proyecto no solo darán lugar a un producto fiable y de calidad, sino que también permitirá establecer un control permanente sobre todos los procesos, evitando los problemas que suponen la detección de errores en fases más avanzadas.
Pero si por por algo se caracteriza el trabajo del equipo de Quality Assurance es por la completa planificación de sus labores en cada una de las fases de un proyecto:
- FASE DE ANÁLISIS.
- FASE DE DISEÑO Y DESARROLLO.
- FASE DE VALIDACIÓN Y ENTREGA.
En resumen, estas son 8 principales ventajas de las pruebas ágiles de software o de Agile Testing como método de trabajo en una fábrica de software:
- Integración de desarrolladores de software y técnicos de QA – Quality Assurance – en un solo equipo multifuncional o Squad Agile.
- El Testing Agile es permanente, desde etapas tempranas del proyecto y debe realizarse a nivel de unidad (Pruebas unitarias).
- El Testing Agile se realiza en paralelo con el desarrollo de software.
- Los Testers Agile asisten en las interacciones con el área de negocio.
- Los Testers Agile están involucrados en todas las actividades del proyecto.
- El Tester Agile necesita conocer a profundidad el funcionamiento interno del software.
- El Testing Agile depende en gran medida de la automatización de pruebas de software.
- Debe existir equilibrio entre las pruebas de nueva funcionalidad y las pruebas de regresión.
En Stefanini brindamos un sólido y maduro servicio ATS que mejora la calidad funcional y no funcional de sus aplicaciones, mediante la ejecución de un riguroso y metódico proceso de pruebas sostenido por metodologías ágiles, apoyados con el uso de herramientas que permiten su automatización.
Fuentes:
-
Esther Fernández. “¿Qué papel tiene QA en las metodologías ágiles?” QA funcional, 2018
-
Amarender Yogender. “8 diferencias de las pruebas ágiles de software”
-
Alberto Gutierrez. “Waterfall vs. Agile. QA and Management”. Dzone, 2010
-
Maria Quintero. “Agile Testing”. CGTS, 2018
-
Francisco González López. “Testing en un mundo Agile”. Universidad de A Coruña, 2019