¿Te has preguntado qué diferencia hay entre error, defecto y falla? ¿Cómo ayuda el testing a mejorar la calidad del software? Hay ciertas cuestiones que debemos conocer para nuestro día a día dentro del Sprint, como ser:
- Saber desde el punto de vista conceptual y práctico, la diferencia entre error, defecto, falla y causa raíz, para analizar las diversas situaciones que se nos pueden presentar en los distintos productos de trabajo que gestionamos.
- Saber cómo el testing ayuda a detectar y prevenir errores y defectos por medio de ciertos productos de trabajo que gestionamos.️
- Saber cuál es la importancia de identificar la causa raíz de un problema para explorar junto con el desarrollador regresiones y automatizaciones, entre algunas de las prácticas que podemos aplicar.
Exploré un poco el tema para profundizar en algunos aspectos que pueden servirte, incluyendo ejemplos como para aterrizar más aún los conceptos.
Este contenido le puede ser a:
- Testers que quieren profundizar en sus conocimientos.
- Desarrolladores que quieren comprender mejor el proceso de testing.
- Cualquier persona interesada en la calidad del software.
¿Comenzamos?
Empecemos por diferenciar los principales conceptos:
- Error: una equivocación humana que puede generar un defecto.
- Defecto: una imperfección en un artefacto (código, documentación, etc.)
- Falla: el comportamiento inesperado del software al ejecutar un defecto.
- Causa raíz: la razón fundamental detrás de un error o defecto.
¿Cómo contribuye el testing?
El testing es super importante para detectar y prevenir errores, defectos y fallas. ️ A través de diferentes técnicas, como pruebas unitarias, pruebas funcionales, prueba no funcionales, pruebas de confirmación, pruebas de regresión, pruebas de integración, pruebas de sistemas y pruebas de aceptación, podemos:
- Encontrar defectos: identificar las imperfecciones en el software.
- Prevenir errores: detectar posibles errores antes de que se manifiesten.
- Mejorar la calidad: asegurar que el software cumpla con los requisitos y sea confiable.
Y además, no mencioné y también debemos considerar otras prácticas como pruebas automatizadas, pruebas de performance, pruebas de usabilidad y accesibilidad, pruebas de seguridad, pruebas en aplicaciones móviles, y otros tipos de pruebas puntuales pre y post despliegue a los diferentes ambientes sobre los cuales actuamos en cada sprint.
Algunos ejemplos prácticos
Sitio de comercio electrónico:
- Un desarrollador introduce un error en el código al calcular el precio total de un pedido.
- El código contiene un defecto que causa un precio incorrecto.
- Al realizar un pedido, el usuario observa un precio total diferente al esperado.
- Causa raíz: El desarrollador no comprendió completamente los requisitos de cálculo del precio.
¿Lo podemos prevenir?
Por ejemplo, implementando pruebas automatizadas para verificar el cálculo del precio total.
Debemos recordar que:
- Errores y defectos no siempre generan fallas.
- El testing es una herramienta vital para la detección y prevención de errores, defectos y fallas.
- Identificar la causa raíz es fundamental para evitar problemas similares en el futuro.
Sitio web de venta de paquetes turísticos:
Ejemplo 1:
- Un usuario introduce una fecha de viaje inválida en el formulario de búsqueda.
- El código no valida correctamente la fecha de viaje, permitiendo que se envíen solicitudes con fechas incorrectas.
- El sitio web no muestra resultados de búsqueda y el usuario recibe un mensaje de error genérico.
- Causa raíz: El desarrollador no implementa la lógica de validación de fechas según los requisitos.
Solución: Implementar la validación de fechas en el formulario de búsqueda y mostrar mensajes de error específicos al usuario.
Ejemplo 2:
- Un error en el servidor provoca que la página de pago no funcione correctamente.
- Un fallo en el código del servidor genera un error al procesar el pago.
- El usuario no puede completar la compra del paquete turístico y recibe un mensaje de error.
- Causa raíz: Un error en la configuración del servidor o en la comunicación con la pasarela de pagos.
Solución: Depurar el código del servidor y corregir la configuración o la integración con la pasarela de pagos.
Sitio de reserva hotelera
- Defectos que siempre fallan:
- Un error en el código hace que la página de reserva siempre muestre un precio incorrecto.
- Imposible reservar una habitación a un precio correcto, frustrando al cliente.
- Solución: ¡Priorizar la detección y corrección de este tipo de errores!
- Defectos que fallan en ciertas condiciones:
- La página de búsqueda no funciona correctamente cuando se usan fechas específicas.
- El usuario no puede encontrar la habitación que busca solo en algunos casos.
- Solución: Identificar las condiciones que provocan el fallo y corregir el código.
- Defectos que nunca fallan:
- El código del sitio web tiene una mala organización, lo que dificulta su mantenimiento.
- No afecta la experiencia del usuario final, pero dificulta el trabajo de los desarrolladores.
- Solución: Implementar buenas prácticas de codificación para mejorar la legibilidad y mantenibilidad del código.
Historias de Usuario y Casos de Prueba para un Sitio Web de Reservas Hoteleras
Historia de Usuario 1:
Como cliente, quiero ver el precio correcto de una habitación para poder tomar una decisión informada sobre mi reserva.
Criterios de Aceptación:
- El precio mostrado en la página de reserva debe coincidir con el precio real de la habitación.
- El precio debe actualizarse en tiempo real si hay cambios en la disponibilidad o las tarifas.
- El precio debe mostrarse en la moneda local del usuario.
Casos de Prueba:
Escenario 1:
Dado que el usuario selecciona una habitación en una fecha específica
Entonces el sistema muestra el precio correcto de la habitación
Y el precio se muestra en la moneda local del usuario
Escenario 2:
Dado que la disponibilidad de la habitación cambia
Entonces el sistema actualiza el precio de la habitación en tiempo real
Escenario 3:
Dado que el usuario cambia la fecha de la reserva
Entonces el sistema actualiza el precio de la habitación en función de la nueva fecha
Historia de Usuario 2:
Como cliente, quiero poder buscar habitaciones por fechas específicas para poder encontrar la habitación que mejor se adapte a mis necesidades.
Criterios de Aceptación:
El sitio web debe proporcionar un campo de búsqueda para que los usuarios puedan ingresar las fechas de su viaje.
El sistema debe mostrar una lista de habitaciones disponibles para las fechas seleccionadas.
La lista de habitaciones debe incluir información sobre el tipo de habitación, el precio y la disponibilidad.
Casos de Prueba:
Escenario 1:
Dado que el usuario ingresa fechas válidas en el campo de búsqueda
Entonces el sistema muestra una lista de habitaciones disponibles para esas fechas
Escenario 2:
Dado que el usuario ingresa fechas no válidas en el campo de búsqueda
Entonces el sistema muestra un mensaje de error
Escenario 3:
Dado que el usuario selecciona una fecha con disponibilidad limitada
Entonces el sistema muestra la información de disponibilidad en la lista de habitaciones
Escenario 4:
Dado que el usuario ordena la lista de habitaciones por precio
Entonces el sistema muestra la lista de habitaciones ordenadas de menor a mayor precio
Fuente de inspiración: ISTQB CTFL v4.0 (ref 1.2.3. errores, defectos, fallas y causas raíz)