miércoles, 18 de marzo de 2015

Qué es el Agile Testing y cuáles son sus principios y estrategias

Imagen de: Practitest.com

Que es el Agile Testing

Agile Testing es una práctica de pruebas de software que sigue los principios del desarrollo ágil de software.

Involucra a todos los miembros de un equipo ágil multifuncional, en el cual el rol del tester es el de un experto multifuncional, garante que se entregue el valor de negocio deseado por el cliente a un ritmo sostenible y continuo.

Las metodologías ágiles no ven al software testing como una fase separada, sino como parte integral del Desarrollo de software al igual que la programación.

Agile Testing, incorpora una serie prácticas, como por ejemplo Testing de “todo el equipo”, Testing independiente (opcional), Integración continua, Testing guiado por pruebas (Test Driven Development – TDD), Desarrollo guiado por comportamiento (Behaviour Driven Development – BDD), Desarrollo guiado por pruebas de aceptación (Acceptance Test Driven Development – ATDD), entre otros.

Los equipos ágiles utilizan un enfoque de “todo el equipo” al testing, con la finalidad de integrar la calidad al desarrollo del producto, al contrario de un enfoque de primero fabricar el producto y luego inspeccionar para determinar su nivel de calidad.

Principios del Agile Testing

De forma similar a que el Manifiesto Ágil contiene principios que se aplican al desarrollo ágil de software, el Agile Testing engloba los siguientes principios:

  • El Testing no es una fase: El testing continuo es la única forma de garantizar avance continuo, por esto, el testing se realiza continuamente junto con el desarrollo de software y demás actividades.
  • El Testing hace avanzar el proyecto: Bajo métodos convencionales, el testing es una alcabala, en cambio en Agile Testing se proporciona retroalimentación continua, permitiendo corregir el rumbo continuamente durante el desarrollo de software.
  • Todo el equipo realiza pruebas: en Agile Testing, los Analistas de negocio y Desarrolladores de software también ejecutan pruebas, no sólo los testers como en métodos convencionales.
  • Reducir el tiempo para recibir retroalimentación: En Agile Testing, los equipos del área de negocio (el cliente) están involucrados en cada iteración, no solo al final durante la fase de aceptación, como resultado, el tiempo de retroalimentación se reduce y el costo de correcciones también es menor.
  • Código limpio: Los defectos en el código se corrigen en la misma iteración, por lo que se mantiene el código limpio.
  • Reducir la documentación de pruebas: Los Agile Testers usan listas de chequeo reusables en lugar de documentación extensa, se enfocan en la esencia de la prueba en lugar de detalles. Siguiendo principios ágiles estas listas de chequeo son el inicio de las definiciones de las pruebas y no el final, y el tester cuenta con libertad para aportar valor.
  • Guiado por pruebas: El Agile Testing, las pruebas se hacen “durante” el desarrollo y no después del desarrollo como en métodos convencionales.

Algunas de las prácticas relacionadas con Agile Testing

  • Behaviour Driven Development (BDD): También puede llamarse Story Driven Development. 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. Aquí te compartimos un artículo sobre la herramienta Cucumber y su uso para aplicar Behaviour Driven Development (BDD).
  • Testing exploratorio: Enfoque en el cual el aprendizaje de la funcionalidad, diseño de pruebas y ejecución de pruebas ocurren simultáneamente, en contraposición con el enfoque convencional en el cual primero se documenta la funcionalidad o requisito, luego se diseña el caso de prueba y luego se ejecuta de acuerdo a guiones prestablecidos. Las pruebas exploratorias no están predefinidas ni se ejecutan según un plan. 
  • 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. Ambas técnicas implican modificar las fuentes de código constantemente, por lo que la automatización de pruebas de regresión por medio de herramientas es una necesidad imperiosa. Aquí te dejamos más información sobre herramientas para automatización de pruebas.
  • Automatización de pruebas unitarias: Consiste en usar un marco de trabajo o framework (como NUnit) para ejecutar tus tests unitarios, en lugar de ejecutar estos manualmente una y otra vez cada vez que modificas el código. Para ello existen múltiples frameworks, muchos de los cuales pueden integrarse en los ambientes IDE.

Más Información sobre Software Testing

Visita nuestra página de Recursos en Pruebas de Software

La pirámide del Testing

Originalmente propuesta por Mike Cohn, la pirámide del testing sirve para explicar las diferencias del Software Testing trabajando con metodologías convencionales y trabajando con metodologías ágiles o de forma iterativa.

Imagen de: Agile Couch Journal

En la forma tradicional (pirámide de la izquierda), la gran mayoría de las pruebas son manuales y funcionales, pudiendo existir algún pequeño grado de automatización y de pruebas unitarias por desarrolladores.

La pirámide de la derecha representa como se ejecuta el Software Testing en Agile, 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.

Los cuadrantes del Agile Testing

Una taxonomía útil para poner el Agile Testing en contexto y guiar a los equipos y gerencia sobre cómo integrar el Testing en sus prácticas de desarrollo iterativos son los cuadrantes del Testing Agile, originados por Brian Marick en un post sobre el tema y luego adaptados por Lista Crispin y Janet Gregory en su obra “Agile Testing”.

Los cuadrantes representan los diferentes propósitos y tipos de pruebas de software que podemos realizar en un entorno Agile. Aquí una imagen de los cuadrantes del Agile Testing.

Imagen obtenida de: TestingBaires

Las pruebas de los cuadrantes del lado izquierdo ayudan al equipo a definir que código necesitan escribir y cuando han terminado de escribirlo.

Tenemos un excelente artículo sobre los 4 cuadrantes del Agile Testing y como utilizarlo para planificar las puebas de software.

Pruebas de software Agile: Planificar con los 4 cuadrantes del Agile Testing (1era parte)

Los cuadrantes del lado derecho ayudan al equipo a aprender más acerca de las funcionalidades y códigos que han escrito, lo cual se traduce usualmente en nuevas historias de usuario o modificaciones a las existentes.

Los cuadrantes del lado superior abarcan pruebas de cara al negocio, que suelen ser de naturaleza más funcional, mientras que las pruebas de los cuadrantes inferiores son de mayor naturaleza técnica y no funcional.

El Rol del Tester en un marco Agile

El rol del tester en un equipo ágil es el de un experto, garante que se entregue el valor de negocio deseado por el cliente a un ritmo sostenible y continuo.

Para ello, utiliza la “especificación mediante ejemplos” para capturar los comportamientos deseados y no deseados para guiar la codificación. 

El foco del Tester en un entorno Agile está en la aplicación de enfoques tipo Behaviour Driven Development (BDD), usualmente trabajando en paralelo con el equipo de desarrollo y no en la fase final.

Esto se contrapone con el rol convencional del tester, en el cual es un profesional encargado de elaborar diseños de prueba (a partir de diseños funcionales), y luego ser un simple ejecutor de guiones prestablecidos.

En un entorno Agile el rol del tester es de mayor especialización técnica, considerando que debe manejar herramientas de automatización, gestión ágil y metodologías. 

Además, el rol también posee mayor interacción con otras personas como por ejemplo el cliente o los desarrolladores, por lo que también necesitará habilidades blandas de comunicación, orientación al cliente, negociación, entre otras.

¿Buscas más información?

En el siguiente artículo te mostramos más información:

8 diferencias de las pruebas ágiles de software

¿Y tu? ¿Que opinas?

¿Has aplicado metodologías ágiles o el Agile Testing?, ¿Cuéntanos tu experiencia?, ¿Cuáles son los factores críticos para el éxito?, expresa tu opinión en la sección de comentarios.


¿Buscas más información de metodologías ágiles?

¿Quieres obtener completamente gratis y directamente en tu correo electrónico plantillas, artículos y otros recursos de gerencia de proyectos y metodologías ágiles?, entonces presiona "suscríbete" a continuación.

Suscríbete a la lista de correo electrónico:


Vía FeedBurner, se abrirá una nueva ventana

También puedes seguirnos vía Twitter, Facebook o Linkedin:

  

Artículos similares

Pruebas de software Agile: Planificar con los 4 cuadrantes del Agile Testing (1era parte)

Test Driven Development (TDD): Como llevarlo a la práctica

2 comentarios :

  1. Excelente artículo, fundamental para presentar la certificación ISTQB Agile Tester. Me gustaría compartir mi experiencia en la presentación del exámen: http://calidadsoft.co/2020/04/06/certificate-en-istqb-agile-tester-con-estos-consejos/

    ResponderEliminar
  2. Excelente articulo. me gustaría compartir mi experiencia en relación a la presentación del examen de Agile Testing. https://calidadsoft.co/2020/04/06/certificate-en-istqb-agile-tester-con-estos-consejos/

    ResponderEliminar

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.