Introducción a las Técnicas de Prueba
La sección 4.1. Descripción General de las Técnicas de Prueba, trata acerca de las técnicas de prueba, cuál es su alcance y para que sirven, hace referencia al estándar ISO/IEC/IEEE 29119-4, además de mostrar de manera sintética su clasificación.
En mi opinión, las debemos tomar como herramientas esenciales, especialmente para aquellos que se están formando en ISTQB CTFL v4.0 con la intención de rendir el exámen o bien, para saber más acerca de nuestra práctica.
Estas técnicas ayudan a los testers ágiles a definir qué probar (análisis de la prueba) y cómo hacerlo (diseño de la prueba), permitiendo desarrollar un conjunto de casos de prueba eficaz y manejable. Por lo tanto, las técnicas de prueba permiten contar con una cobertura de prueba más efectiva, asegurando que se cubran los aspectos más críticos del software con un esfuerzo óptimo.
Clasificación de las Técnicas de Prueba
En el programa de estudios de ISTQB CTFL v4.0, las técnicas de prueba se clasifican en tres categorías principales:
- Técnicas de Prueba de Caja Negra (Basadas en Especificaciones)
- Técnicas de Prueba de Caja Blanca (Basadas en la Estructura)
- Técnicas de Prueba Basadas en la Experiencia
Cada una de estas técnicas tiene un enfoque y una aplicación específica que complementa a las demás, proporcionando una cobertura más completa y profunda del proceso de prueba.
1. Técnicas de Prueba de Caja Negra
Las técnicas de prueba de caja negra, conocidas como técnicas basadas en especificaciones, se centran en el comportamiento externo del software sin tener en cuenta su estructura interna. Es decir, los testers ágiles diseñan casos de prueba basados en los requisitos y especificaciones del sistema, sin preocuparse por cómo se implementa internamente.
- ¿Cómo funcionan las técnicas?
Analiza las entradas y salidas del software. Por ejemplo, si estás probando una funcionalidad de «Buscar paquete» en una aplicación de viajes*, las pruebas de caja negra pueden estar validando que al ingresar «París» como destino y «Octubre» como mes, permitan mostrar los resultados correctos, sin importar cómo se haya codificado esa lógica en el backend.
*(Nota: La aplicación de viajes es un proyecto modelo que uso a modo de ejemplo para complementar los contenidos que voy elaborando)
Momento para reflexionar: ¿Las historias de usuario en tu proyecto te permiten analizar de manera correcta la funcionalidad requerida y aplicar técnicas de Caja Negra? ¿Piensas que puede estar influyendo en tu estimación de testing?
- ¿Cuáles son las ventajas de las técnicas?:
Permite validar la funcionalidad requerida desde la perspectiva del usuario final, asegurando que el software cumpla con los requisitos especificados. También son útiles cuando el tester ágil no tiene acceso al código fuente o no necesita conocer su implementación.
Momento para reflexionar: ¿Las historias de usuario en tu proyecto tienen esa visión desde el punto de vista del usuario final o son demasiado técnicas? ¿Cómo manejar este tema con requerimientos que se deben conducir por backend?
- ¿Cuáles son los tipos de técnicas más comunes?:
Pruebas de equivalencia de particiones, análisis del valor límite, pruebas de transición de estado, y pruebas de tablas de decisión. Estas técnicas ayudan a reducir el número de casos de prueba necesarios para una cobertura efectiva al enfocarse en las áreas más críticas del software.
Momento para reflexionar: ¿Aplicas alguna de estas técnicas en tu proyecto? ¿Cuál te resulta más complicada y/o difícil de implementar? ¿Que te impide aplicarla?
2. Técnicas de Prueba de Caja Blanca
Las técnicas de prueba de caja blanca, o técnicas basadas en la estructura, se basan en el análisis de la estructura interna del software. A diferencia de las técnicas de caja negra, las pruebas de caja blanca requieren conocimiento del código fuente y se centran en validar cómo se implementan las funciones internamente.
- ¿Cómo funcionan las técnicas?
Estas pruebas evalúan el flujo de datos, el flujo de control, los caminos de ejecución y las condiciones lógicas dentro del código. Por ejemplo, en la funcionalidad de «Buscar paquete», una prueba de caja blanca podría validar que todas las condiciones lógicas (como las validaciones de los campos «¿Adónde quieres viajar?» y «¿En qué mes quieres ir?») se implementan correctamente.
Momento para reflexionar: ¿Has podido aplicarla en conjunto con algún desarrollador?
- ¿Cuáles son las ventajas de las técnicas?
Permiten identificar y corregir defectos relacionados con la implementación, como errores lógicos, loops incorrectos o condiciones no manejadas adecuadamente. Son especialmente útiles para asegurar la calidad del código y optimizar su rendimiento.
- ¿Cuáles son los tipos de técnicas más comunes?
Pruebas de cobertura de sentencias, cobertura de decisiones, cobertura de condiciones, y pruebas de flujo de datos. Estas pruebas aseguran que cada camino posible en el código se pruebe al menos una vez.
Momento para reflexionar: ¿Aplicas alguna de estas técnicas en tu proyecto? ¿Cuál te resulta más complicada y/o difícil de implementar? ¿Que te impide aplicarla?
3. Técnicas de Prueba Basadas en la Experiencia
Las técnicas de prueba basadas en la experiencia aprovechan el conocimiento y la intuición de los testers ágiles. A diferencia de las técnicas de caja negra y caja blanca, que son más sistemáticas, estas técnicas dependen en gran medida de la habilidad del tester ágil para diseñar casos de prueba efectivos basados en su experiencia previa y conocimiento del sistema.
- ¿Cómo funcionan las técnicas?
Los testers ágiles utilizan su experiencia para identificar áreas del software que son más propensas a tener defectos. Por ejemplo, en el proyecto de la aplicación de viajes, un tester ágil experimentado podría enfocar sus pruebas en la integración entre la funcionalidad de «Buscar paquete» y el motor de reserva, anticipando problemas comunes como errores en la integración de la API o fallos en la lógica de negocio compleja.
- ¿Cuáles son las ventajas de las técnicas?
Estas técnicas son especialmente útiles cuando hay poca documentación o cuando el equipo necesita realizar pruebas rápidas y adaptativas en ciclos cortos. Son excelentes para encontrar defectos inesperados que las pruebas más sistemáticas podrían pasar por alto.
- ¿Cuáles son los tipos de técnicas más comunes?
Pruebas exploratorias, pruebas de error guessing (adivinación de errores), y pruebas basadas en checklists. Estas técnicas son complementarias y pueden ser muy efectivas cuando se combinan con técnicas más estructuradas.
Momento para reflexionar: ¿Aplicas alguna de estas técnicas en tu proyecto? ¿Cuál te resulta más complicada y/o difícil de implementar? ¿Que te impide aplicarla?
Integración de las Técnicas de Prueba en el Entorno Ágil
Para los Testers Ágiles, integrar estas técnicas de prueba en el proceso de desarrollo ágil es esencial para asegurar la calidad continua del software. Aquí algunos consejos prácticos:
- Combinación de técnicas:
Se puede utilizar una combinación de pruebas de caja negra, caja blanca y basadas en la experiencia para una cobertura más completa. Por ejemplo, mientras las pruebas de caja negra validan la funcionalidad según las especificaciones del cliente, las pruebas de caja blanca aseguran que el código subyacente sea sólido y eficiente, y las pruebas basadas en la experiencia abordan las áreas de mayor riesgo.
- Automatización de Pruebas:
Se pueden implementar pruebas automatizadas, especialmente para técnicas de caja blanca y caja negra, para asegurar que cada cambio en el código sea probado rápidamente. Esto es fundamental en un entorno ágil, donde los cambios son frecuentes y el tiempo es limitado. Aquí candidatos pueden ser las pruebas de regresión y las pruebas de humo.
- Revisión Continua:
Se puede adoptar un enfoque iterativo para la prueba, donde los casos de prueba se revisan y ajustan constantemente con base en el feedback de cada sprint. Esto permite a los testers ágiles adaptarse rápidamente a los cambios en los requisitos o en el diseño del software.
- Colaboración Cercana:
Se puede trabajar de cerca con desarrolladores y stakeholders para definir claramente las expectativas de prueba y los criterios de aceptación desde el principio. Esto asegura que todos los casos de prueba sean relevantes y alineados con los objetivos del proyecto.
Ejemplos Aplicados al Proyecto de la Aplicación Web para Paquetes Turísticos
- Caja Negra:
Para la funcionalidad «Buscar paquete», realizar pruebas de caja negra asegura de que, al ingresar diferentes combinaciones de destinos y fechas, la aplicación responda correctamente mostrando solo los paquetes disponibles que cumplen con los criterios de búsqueda.
- Caja Blanca:
Usar pruebas de caja blanca para verificar que el algoritmo de búsqueda de paquetes sea eficiente y maneje correctamente todas las posibles condiciones de entrada, como entradas vacías o valores fuera del rango.
- Basadas en la Experiencia:
Realizar pruebas exploratorias para buscar posibles fallos en la interfaz de usuario responsive en diferentes dispositivos. Un tester ágil experimentado podría identificar problemas en cómo se renderizan los resultados de búsqueda en pantallas pequeñas o en navegadores menos comunes.
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