Conceptos Disparadores para Agile Testing

  • Autor de la entrada:
  • Categoría de la entrada:Agile

¿Te ha pasado que en algún momento del Sprint te das cuenta que faltan diseñar y ejecutar más escenarios de prueba? ¿Te ha pasado que te das cuenta que el testing que has planificado y la estrategia que has orquestado no alcanza? ¿Te ha pasado que para un desarrollo específico del Sprint puede estar aplicando el testing elaborado en un Sprint anterior pero necesitas algún conector? 

Para tener variedad de respuestas a estas preguntas muchas veces es necesario contar con elementos que nos sirvan como disparadores de ideas, y así estar preparados a problemas, identificar prioridades y asegurar que el producto final cumpla con las expectativas. 

Te comparto algunos de estos disparadores con ejemplos prácticos para que puedas tenerlos en cuenta a la hora de necesitar revisar el alcance de tu testing y que puedas así, aplicarlos en tu día a día.

  • Escenarios de Fallo

  • Normativas del Negocio

  • Condiciones del sistema

  • Aspectos de Calidad

  • Contexto de Uso

  • Configuración del Entorno

  • Funcionalidades clave

  • Variaciones

  • Información de prueba

  • Clasificación y categorías de Bugs

  • Referencias de prueba

  • Rutas de operación

  • Interoperabilidad

  • Seguridad y Privacidad

  • Escalabilidad

  • Mantenimiento y Actualizaciones

  • Experiencia de Usuario

  • Accesibilidad

  • Internacionalización y Localización

  • Desempeño bajo condiciones extremas

  • Automatización de Tareas

  • Integridad de Datos

 

Normativas del Negocio

Las normativas del negocio son las directrices que rigen cómo debe comportarse el software según ciertos parámetros definidos por el negocio. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios.

Ejemplos:

  • Asegurarse de que los descuentos aplicables a productos específicos se calculen correctamente.
  • Verificar que los usuarios menores de edad no puedan acceder a contenido restringido.
  • Probar que solo los administradores puedan acceder a ciertas funciones avanzadas.

Funcionalidades clave

Las funcionalidades clave o aptitudes del sistema nos deben asegurar que el software haga lo que se supone que debe hacer. Es básicamente confirmar que las funciones básicas están en su lugar, y ésto debería estar definido en la historia de usuario / criterios de aceptación.

Ejemplos:

  • Verificar que un usuario pueda restablecer su contraseña con éxito.
  • Confirmar que un usuario pueda añadir productos a su carrito de compras.
  • Asegurarse de que el sistema pueda enviar notificaciones por correo electrónico al realizar una compra.

Escenarios de Fallo

Los escenarios de fallo o posibles fallas nos permiten enfocarnos en identificar situaciones donde el software puede fallar o comportarse de manera inesperada. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios.

Ejemplos:

  • ¿Qué sucede si se pierde la conexión a internet durante una transacción?
  • Probar qué ocurre cuando se ingresa un formato de archivo no soportado al cargar un documento.
  • Verificar el comportamiento de la aplicación cuando se intenta registrar un usuario con un email ya existente.

Contexto de Uso

Los contextos de uso nos permiten explorar de qué manera los usuarios interactúan con el software, desde diferentes perspectivas y contextos. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios.

Ejemplos:

  • Simular el proceso de compra de un cliente desde la búsqueda de productos hasta el pago.
  • Probar cómo un administrador gestiona el contenido del sitio web.
  • Verificar cómo un nuevo usuario se registra y personaliza su perfil.

Condiciones del sistema

Las condiciones del sistema nos permiten explorar cómo el software maneja diferentes estados y transiciones. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios. 

Ejemplos:

  • Probar la transición de un pedido desde «pendiente» a «enviado» y luego a «entregado».
  • Verificar cómo el sistema maneja la sesión de un usuario después de un período de inactividad.

Asegurarse de que los cambios de estado en los tickets de soporte se reflejen correctamente en la interfaz.

Configuración del Entorno

La configuración del entorno nos permite verificar cómo el software se comporta en diferentes entornos o configuraciones. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios.

Ejemplos:

  • Probar la aplicación en diferentes navegadores web y versiones.
  • Verificar el comportamiento de la aplicación en dispositivos móviles con distintos sistemas operativos.
  • Asegurarse de que el software funcione correctamente con diferentes versiones de un software de terceros integrado.

Aspectos de Calidad

Los aspectos de calidad son aquellos que representan los factores clave definidos y que el software debe cumplir, como su funcionalidad, seguridad, rendimiento, y usabilidad, entre otros. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios.

Ejemplos:

  • Probar la velocidad de carga de una página bajo una conexión de baja velocidad.
  • Verificar que las contraseñas almacenadas estén encriptadas.
  • Asegurarse de que la interfaz de usuario sea accesible para personas con discapacidades.

Variaciones

Las variaciones de prueba o pruebas de combinación son importantes que las tengamos en cuenta para conocer cómo interactúan entre sí diferentes variables o combinaciones de datos. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios. 

Ejemplos:

  • Probar combinaciones de distintos métodos de pago y monedas.
  • Verificar el comportamiento del sistema al usar distintas configuraciones de idioma y región.
  • Probar cómo se comporta la búsqueda de productos con diferentes filtros aplicados.

Información de prueba

La información de prueba nos permite reconocer los diferentes conjuntos de datos propios del software que se deben tener en cuenta. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios. 

Ejemplos:

  • Probar con datos válidos y no válidos al registrarse en la plataforma.
  • Verificar cómo el sistema maneja datos en diferentes formatos (ej., JSON, XML).
  • Asegurarse de que las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) funcionen correctamente con diferentes tipos de datos.

Clasificación y categorías de Bugs

La clasificación y categorización de bugs nos permiten identificar y/o reconocer las pistas sobre dónde pueden surgir nuevos problemas. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios. 

 Ejemplos:

  • Revisar errores comunes en la gestión de sesiones de usuario.
  • Identificar errores pasados relacionados con la carga de archivos para anticiparse a problemas similares.
  • Examinar problemas recurrentes en las actualizaciones de software para considerar pruebas de regresiones.

Referencias de prueba

Las referencias de prueba nos permiten determinar si un resultado es correcto o no. En este caso, gran parte de nuestros artefactos de prueba nos facilitan el trabajo de contar con dichas referencias.

Ejemplos:

  • Comparar los resultados de la aplicación con la documentación oficial.
  • Consultar a un experto en negocio para validar que el comportamiento de la aplicación sea el esperado.
  • Utilizar datos históricos para verificar que las estadísticas generadas por la aplicación sean correctas.

Rutas de operación

Las rutas de operación o secuencia de acciones nos permiten reconocer todo lo que puede afectar el resultado final, por lo que es importante probar diferentes secuencias. La historia de usuario y criterios de aceptación nos debería poder proporcionar este tipo de escenarios. 

Ejemplos:

  • Verificar que se puedan crear, actualizar y eliminar perfiles de usuario en diferentes órdenes.
  • Probar el flujo de checkout en un orden no convencional (por ejemplo, seleccionando el método de pago antes de añadir productos al carrito).
  • Asegurarse de que los datos se guarden correctamente cuando se realizan cambios en configuraciones avanzadas antes de completar la configuración básica.

Interoperabilidad

La interoperabilidad permite que evaluemos la capacidad del sistema para interactuar y funcionar junto con otros sistemas, aplicaciones o dispositivos, garantizando que la comunicación y el intercambio de datos sean eficientes y efectivos.

Ejemplos: 

  • Verificar la integración con APIs externas o comprobar la compatibilidad con diferentes bases de datos.
  • Integración con Servicios de Terceros: Verificar que el sistema pueda interactuar sin problemas con servicios de pago externos, como PayPal.
  • Conectividad con Dispositivos IoT: Asegurar que el sistema pueda comunicarse y gestionar datos provenientes de dispositivos del Internet de las Cosas (IoT), como sensores de temperatura o cámaras de seguridad.

Seguridad y Privacidad

La seguridad y privacidad nos permite enfocarnos en la protección de datos sensibles y la información del usuario, asegurando que se cumplan las políticas de privacidad y que el sistema sea resistente a amenazas y ataques.

Ejemplos: 

  • Probar la gestión de acceso y permisos o evaluar la respuesta del sistema a ataques comunes como inyecciones de SQL.
  • Protección contra Ataques de Phishing: Probar la capacidad del sistema para detectar y prevenir intentos de phishing y garantizar la seguridad de los datos del usuario.
  • Encriptación de Datos en Tránsito: Verificar que todos los datos transmitidos entre el cliente y el servidor estén encriptados para prevenir interceptaciones.

Escalabilidad

La escalabilidad nos permite considerar la habilidad del sistema para manejar un aumento en la carga de trabajo, usuarios o transacciones, manteniendo el rendimiento y la funcionalidad bajo condiciones de crecimiento.

Ejemplos: 

  • Probar la capacidad del sistema para soportar un gran número de conexiones simultáneas o evaluar el rendimiento bajo carga pesada.
  • Distribución de Carga: Evaluar cómo el sistema maneja la distribución de carga entre múltiples servidores para evitar sobrecargas y garantizar un rendimiento constante.
  • Escalabilidad Horizontal: Probar la capacidad del sistema para agregar más nodos o instancias de servidor en respuesta a un aumento en la demanda de usuarios.

Mantenimiento y Actualizaciones

El mantenimiento y actualización nos permite evaluar la facilidad y eficacia con que se pueden realizar tareas de mantenimiento y aplicar actualizaciones al sistema, asegurando que estos procesos no interrumpan las operaciones normales.

Ejemplos: 

  • Probar la actualización del sistema sin pérdida de datos o verificar que las configuraciones personalizadas se mantengan después de una actualización.
  • Actualización Sin Tiempo de Inactividad: Verificar que el sistema pueda actualizarse a nuevas versiones sin necesidad de desconectar a los usuarios o detener el servicio.
  • Gestión de Parches de Seguridad: Asegurar que el sistema pueda aplicar parches de seguridad de manera eficiente y sin afectar las operaciones normales.

Experiencia de Usuario (UX)

La experiencia de usuario nos permite analizar cómo los usuarios interactúan con el sistema, evaluando la usabilidad, accesibilidad y satisfacción del usuario, para garantizar una experiencia positiva y efectiva.

Ejemplos: 

  • Realizar pruebas de usabilidad con usuarios reales o evaluar la consistencia y claridad de la interfaz de usuario.
  • Consistencia de Diseño: Probar que todos los elementos de la interfaz de usuario mantengan un diseño consistente y familiar, facilitando la navegación para el usuario.
  • Tiempo de Respuesta: Evaluar cómo el sistema responde a las interacciones del usuario, asegurando tiempos de carga rápidos y una experiencia fluida.

Accesibilidad

La accesibilidad nos permite asegurar que el sistema sea utilizable por todas las personas, incluyendo aquellas con discapacidades, cumpliendo con los estándares y normativas de accesibilidad.

Ejemplos: 

  • Probar con lectores de pantalla o verificar el contraste de colores en la interfaz para personas con problemas de visión.
  • Compatibilidad con Teclado: Probar que todas las funciones del sistema puedan ser accesibles mediante el uso del teclado, facilitando el acceso a personas con dificultades para usar un ratón.
  • Transcripciones de Audio y Video: Asegurar que todo el contenido de audio y video tenga transcripciones disponibles para usuarios con discapacidades auditivas.

Internacionalización y Localización

La internacionalización y localización nos permite garantizar que el sistema pueda adaptarse a diferentes idiomas, culturas y regiones, ajustando contenido, formatos y funcionalidades para una audiencia global.

Ejemplos: 

  • Probar la correcta traducción de contenido o verificar que las configuraciones de fecha y hora se adapten a diferentes regiones.
  • Soporte Multilingüe: Verificar que el sistema pueda manejar múltiples idiomas, incluyendo caracteres especiales y direcciones de texto de derecha a izquierda.
  • Ajustes Culturales: Asegurar que el sistema pueda adaptarse a las normas culturales locales, como formatos de fecha, moneda y unidades de medida.

Desempeño bajo condiciones extremas

El desempeño bajo condiciones extremas nos permite examinar cómo el sistema se comporta y mantiene su funcionalidad bajo condiciones adversas, como baja conectividad, hardware limitado o entornos estresantes.

Ejemplos: 

  • Probar la aplicación en dispositivos de gama baja o evaluar el rendimiento con una conexión a internet lenta.
  • Operación en Baja Conectividad: Probar el rendimiento del sistema cuando la conexión a internet es inestable o lenta, asegurando que siga siendo utilizable.
  • Compatibilidad con Hardware de Bajo Rendimiento: Evaluar cómo el sistema se desempeña en dispositivos con hardware limitado, como smartphones antiguos o computadoras de baja gama.

Automatización de Tareas

La automatización de tareas nos permite enfocarnos en la capacidad del sistema para automatizar tareas repetitivas o complejas, mejorando la eficiencia operativa y reduciendo el riesgo de errores humanos.

Ejemplos: 

  • Verificar la correcta ejecución de scripts automatizados o evaluar la integración de bots para realizar tareas repetitivas.
  • Automatización de Pruebas de Regresión: Implementar scripts que automaticen las pruebas de regresión para verificar que nuevas actualizaciones no rompan funcionalidades existentes.
  • Bots de Soporte al Cliente: Desarrollar bots que puedan responder automáticamente a preguntas frecuentes de los usuarios, mejorando la eficiencia del soporte.

Integridad de Datos

La integridad de datos nos permite verificar que los datos del sistema sean consistentes, completos y precisos, asegurando que no se pierdan ni sufran alguna corrupción durante el almacenamiento, procesamiento o transmisión.

Ejemplos: 

  • Probar la integridad de datos en transacciones o verificar la correcta sincronización de datos entre diferentes sistemas.
  • Detección de Datos Duplicados: Implementar verificaciones para identificar y manejar datos duplicados en el sistema, asegurando la precisión y consistencia de la información.
  • Sincronización de Bases de Datos: Verificar que los datos sean sincronizados correctamente entre diferentes bases de datos o sistemas de almacenamiento, evitando discrepancias y pérdida de datos.

Estos conceptos disparadores son esenciales para diseñar pruebas exhaustivas y asegurar la calidad del software. Al aplicar estos conceptos, podremos identificar y mitigar riesgos potenciales antes de que lleguen a producción, garantizando un producto robusto y confiable para nuestros usuarios.

Gus Terrera

Apasionado por el agile testing y la ia.