En este artículo profundizaré el apartado «6.1. Soporte de Herramientas para las pruebas» del programa de estudios del ISTQB CTFL v4.0 no sólo en lo conceptual sino además incluyendo ejemplos prácticos.
Me basaré en un proyecto que tiene como objetivo desarrollar una aplicación web responsive de venta de paquetes turísticos. El equipo de proyecto es de 6 personas constituído por el Product Owner, Scrum Master, tres Developers y un Tester Automatizador y usan Jira Software y el testing es conducido mediante Xray.
El primer incremento que se está desarrollando corresponde a la funcionalidad de «Buscar paquete» con las siguientes posibilidades para la persona interesada: ¿Adonde quieres viajar?, ¿En qué mes quieres ir?, ¿Desde dónde quieres salir? y el botón «Buscar». Cada una de las preguntas corresponde a un campo obligatorio para habilitar el botón «Buscar»
Básicamente cada una de las herramientas aquí planteadas, y de acuerdo con el punto 6.1., pueden aplicarse de manera práctica y efectiva en un entorno de desarrollo ágil, facilitando las actividades de prueba y asegurando que la aplicación cumpla con los requisitos funcionales y no funcionales.
Parte Práctica
a. Herramientas de gestión
Usando Jira Software el Product Owner crea un issue del tipo User Story para la funcionalidad «Buscar paquete», los Developers crean issues del tipo SubTask para ocuparse de la programación de los componentes de funcionalidad, y el Tester Automatizador añade un issue del tipo Test Plan para componer el testing que seguirá, todas estas acciones con el objeto de que el equipo pueda realizar un seguimiento del progreso del desarrollo, de las pruebas y garantizar de esa manera que todos los criterios de aceptación se cumplan antes de cerrar la historia.
b. Herramientas de pruebas estáticas
SonarQube se configura para revisar el código del módulo «Buscar paquete». Detecta un defecto en la validación del campo «¿Desde dónde quieres salir?», que podría permitir entradas no válidas. Este defecto detectado se reporta a los developers antes de la integración, permitiendo corregirlo sin necesidad de pruebas dinámicas adicionales, ahorrando tiempo y recursos en un entorno ágil.
c. Herramientas de diseño e implementación de pruebas
Utilizando Xray, el Tester Automatizador diseña sus casos de prueba en lenguaje Gherkin que cubren diferentes combinaciones de entradas válidas e inválidas para los campos obligatorios de «Buscar paquete». Los casos de prueba están documentados y son fácilmente accesibles por todo el equipo, asegurando que cualquier cambio en los requisitos se refleje rápidamente en las pruebas correspondientes. Por lo tanto Xray permite que el tester automatizador pueda gestionar sus scripts automatizados y tener seguimiento interno de su trabajo.
d. Herramientas de ejecución y cobertura de pruebas
El Tester Automatizador usa Selenium WebDriver para crear scripts automatizados que simulan el comportamiento del usuario al llenar los campos obligatorios y hacer clic en «Buscar». Estos scripts se ejecutan en diferentes navegadores y dispositivos para garantizar que la funcionalidad sea responsive. La herramienta proporciona informes detallados de cobertura mediante Jenkins, ayudando a identificar áreas no probadas del código.
e. Herramientas de pruebas no funcionales
JMeter se utiliza para realizar pruebas de carga en la funcionalidad «Buscar paquete», simulando múltiples usuarios buscando paquetes simultáneamente. La herramienta ayuda a identificar cuellos de botella en el rendimiento de la aplicación, asegurando que el tiempo de respuesta sea aceptable incluso bajo alta demanda, lo cual es crucial para la experiencia del usuario en una aplicación de ventas.
f. Herramientas DevOps
Jenkins se configura para integrar los scripts de pruebas automatizadas en el pipeline de CI/CD. Cada vez que un Developer sube cambios al repositorio, Jenkins ejecuta automáticamente las pruebas de Selenium, asegurando que el botón «Buscar» funciona correctamente en todas las etapas de desarrollo. Esto proporciona un feedback continuo y rápido al equipo, facilitando la detección temprana de defectos.
g. Herramientas de colaboración
Durante cada Daily Scrum, el equipo utiliza Slack para discutir un defecto encontrado en la funcionalidad «Buscar paquete». El Tester Automatizador comparte un enlace a los resultados de la prueba automatizada desde Xray y coordina rápidamente con los Developers para priorizar la corrección del defecto. Slack facilita la comunicación en tiempo real, acelerando la resolución de problemas en un equipo ágil.
h. Herramientas que admiten escalabilidad y estandarización de implementación
Docker se utiliza para crear contenedores que replican el entorno de pruebas exacto en diferentes máquinas. Esto asegura que las pruebas automatizadas se ejecuten en entornos idénticos, eliminando los problemas de configuración. En un proyecto Agile, esto permite que el equipo se enfoque más en el desarrollo de nuevas características y menos en la solución de problemas ambientales.
i. Cualquier otra herramienta que ayude en las pruebas
Postman se utiliza para validar las API que alimentan la funcionalidad «Buscar paquete». El Tester Automatizador crea scripts automatizados en Postman para probar diferentes combinaciones de parámetros de búsqueda. Esto asegura que el backend responde correctamente y maneja todas las solicitudes como se espera, independientemente del cliente que haga la solicitud.
Parte conceptual
a. Herramientas de gestión
Estas herramientas ayudan a planificar, monitorear y controlar las actividades de prueba. Facilitan la creación de planes de prueba, la asignación de tareas, el seguimiento del progreso y la gestión de defectos. Para los Agile Testers, herramientas como Jira con Xray integrado permiten una mejor coordinación del equipo y aseguran que todos estén alineados con los objetivos del sprint.
b. Herramientas de pruebas estáticas
Se usan para revisar código, documentos y otros artefactos sin ejecutar el software. Las herramientas como SonarQube ayudan a identificar defectos de manera temprana en el ciclo de desarrollo, permitiendo a los testers puedan detectar problemas potenciales antes de que se conviertan en fallas más críticas, ahorrando tiempo y esfuerzo en los sprints.
c. Herramientas de diseño e implementación de pruebas
Estas herramientas facilitan la creación y mantenimiento de casos de prueba. Herramientas como Xray permiten diseñar pruebas de manera colaborativa, almacenarlas y mantenerlas actualizadas. En Agile, estas herramientas aseguran que los casos de prueba sean fácilmente accesibles y modificables según los cambios en los requisitos.
d. Herramientas de ejecución y cobertura de pruebas
Utilizadas para ejecutar pruebas de manera automatizada y medir la cobertura de código. Herramientas como Selenium, JUnit, y TestNG son esenciales en Agile para realizar pruebas rápidas y frecuentes, asegurando que el código nuevo o modificado no introduzca defectos. La cobertura de pruebas permite asegurar que todas las funcionalidades críticas estén testeadas.
e. Herramientas de pruebas no funcionales
Estas herramientas se enfocan en aspectos como rendimiento, seguridad y usabilidad. Herramientas como JMeter, LoadRunner, o OWASP ZAP ayudan a validar que la aplicación cumpla con los criterios no funcionales definidos. En un entorno Agile, permiten verificar rápidamente que los cambios no afecten negativamente la experiencia del usuario o la seguridad del sistema.
f. Herramientas DevOps
Integran las actividades de prueba en la cadena de desarrollo continuo. Herramientas como Jenkins, GitLab CI/CD, o Bamboo permiten automatizar las pruebas en diferentes etapas del pipeline de integración continua, asegurando un feedback rápido y reduciendo el ciclo de entrega en equipos Agile.
g. Herramientas de colaboración
Facilitan la comunicación y el trabajo conjunto entre los miembros del equipo. Slack, Microsoft Teams, y Confluence son algunas de las herramientas que permiten a los Agile Testers compartir rápidamente información, discutir defectos y colaborar en la creación de pruebas, manteniendo la transparencia y la alineación en el equipo.
h. Herramientas que admiten escalabilidad y estandarización de implementación
Ayudan a gestionar pruebas en entornos complejos con múltiples equipos y proyectos. Herramientas como Kubernetes y Docker facilitan la escalabilidad de las pruebas automatizadas y aseguran que los entornos de prueba sean consistentes y reproducibles, lo que es crucial para la eficiencia en un entorno Agile.
i. Cualquier otra herramienta que ayude en las pruebas
Incluye herramientas que no encajan en las categorías anteriores pero que aportan valor. Esto podría incluir herramientas de generación de datos de prueba, análisis de registros o incluso bots de inteligencia artificial que automatizan tareas repetitivas.
En entornos ágiles, la flexibilidad para utilizar herramientas diversas puede ser clave para adaptarse rápidamente a las necesidades cambiantes del proyecto.
Comentario final
Si te ha servido este contenido basado en el programa de estudios del ISTQB CTFL v4.0, me alegro y mucho. También te cuento que me puedes seguir en LinkedIn e interactuar con otros colegas testers que me siguen y que están interesados en contenidos relacionados con agile testing, inteligencia artificial y OKRs aplicado a testing. Muchas gracias