Casos de prueba en base de datos

Alcance del Testing de Bases de Datos:

El testing de bases de datos abarca la evaluación de diversos aspectos que garantizan el correcto funcionamiento, la seguridad y la integridad de la información almacenada en una base de datos. Este proceso involucra la creación y ejecución de casos de prueba que simulan diferentes escenarios de uso y situaciones límite para detectar errores, fallos o comportamientos inesperados.

Áreas clave del testing de bases de datos:

  • Funcionalidad: Verificar que la base de datos cumple con los requisitos funcionales especificados, incluyendo la correcta ejecución de consultas, actualizaciones, inserciones y eliminaciones de datos.
  • Rendimiento: Evaluar el rendimiento de la base de datos en términos de velocidad de respuesta, tiempo de ejecución de consultas y consumo de recursos bajo diferentes cargas de trabajo.
  • Seguridad: Validar la seguridad de la base de datos frente a accesos no autorizados, ataques cibernéticos e inyecciones de código malicioso.
  • Integridad de datos: Asegurar la consistencia, precisión y confiabilidad de los datos almacenados en la base de datos, previniendo la pérdida, corrupción o alteración de información.
  • Escalabilidad: Evaluar la capacidad de la base de datos para manejar un creciente volumen de datos y usuarios sin afectar su rendimiento ni estabilidad.

Importancia del Diseño de Casos de Prueba en Bases de Datos:

Los casos de prueba bien diseñados son fundamentales para un testing de bases de datos efectivo y eficiente. Estos casos permiten:

  • Identificar errores y fallos: Detectar errores de software, problemas de configuración, inconsistencias en los datos y otros problemas que podrían afectar el funcionamiento de la base de datos.
  • Prevenir problemas en producción: Evitar que errores o fallos pasen desapercibidos durante el desarrollo y lleguen a afectar a los usuarios en el entorno de producción.
  • Garantizar la calidad de los datos: Asegurar la integridad, precisión y confiabilidad de la información almacenada en la base de datos.
  • Mejorar el rendimiento: Identificar cuellos de botella y optimizar el rendimiento de la base de datos para una mejor experiencia de usuario.
  • Reducir costos: Prevenir problemas costosos que podrían surgir en etapas posteriores del desarrollo o en producción.

Casos de Prueba genéricos a tener en cuenta

1. Búsqueda de datos de entrada:

Objetivo: Garantizar la precisión y exhaustividad de los datos utilizados en las pruebas.

Alcance:

  • Verificación de fuentes: Confirmar que los datos provienen de fuentes confiables y actualizadas.
  • Validación de formatos: Asegurar que los datos cumplan con los formatos especificados (ej: fechas, números, códigos).
  • Completitud de datos: Comprobar que no existan valores nulos, vacíos o inconsistentes en los conjuntos de datos.
  • Consistencia de datos: Validar que los datos sean coherentes entre sí y con las reglas de negocio establecidas.
  • Representación de escenarios: Asegurar que los datos de entrada abarquen una amplia gama de escenarios posibles, incluyendo casos límite y valores atípicos.

2. Comprobación de resultados esperados vs obtenidos:

Objetivo: Verificar que la base de datos se comporta según lo esperado frente a las acciones y consultas realizadas.

Alcance:

  • Validación funcional: Confirmar que las funcionalidades del sistema operan correctamente y producen los resultados previstos.
  • Análisis de métricas: Evaluar el rendimiento de la base de datos en términos de velocidad, tiempo de respuesta y consumo de recursos.
  • Comportamiento en escenarios complejos: Verificar el comportamiento del sistema ante situaciones con grandes volúmenes de datos, consultas simultáneas o condiciones de error.
  • Detección de anomalías: Identificar resultados inesperados o comportamientos inconsistentes que podrían indicar errores o problemas en la base de datos.

3. Creación de nuevos sets de datos:

Objetivo: Expandir la cobertura de pruebas con nuevos conjuntos de datos que representen escenarios diversos y relevantes.

Alcance:

  • Diseño de escenarios: Generar nuevos conjuntos de datos que simulen situaciones reales de uso y casos límite.
  • Variación de parámetros: Modificar variables y condiciones dentro de los sets de datos para evaluar el comportamiento del sistema en diferentes contextos.
  • Integración con datos reales: Combinar datos ficticios con datos reales provenientes de otras fuentes para aumentar el realismo de las pruebas.
  • Automatización de la creación de datos: Implementar herramientas o scripts para la generación automatizada de sets de datos a gran escala.

4. Gestión de casos de pruebas por datos incongruentes, nulos o inexistentes:

Objetivo: Identificar y manejar adecuadamente los casos de prueba que presentan datos incompletos o erróneos.

Alcance:

  • Detección y registro: Identificar los casos de prueba afectados por datos inconsistentes o faltantes.
  • Análisis de la causa raíz: Investigar las causas que originan los problemas de datos (ej: errores de entrada, corrupción de datos, problemas de integración).
  • Priorización de casos de prueba: Priorizar la ejecución de casos de prueba en función del impacto potencial de los datos erróneos en el sistema.
  • Adaptación de casos de prueba: Adaptar o crear nuevos casos de prueba que consideren la ausencia o inconsistencias en los datos.

5. Validación de homologación de ambientes:

Objetivo: Garantizar que los entornos de prueba sean consistentes con los entornos de producción en términos de configuración, datos y funcionalidad.

Alcance:

  • Comparación de configuraciones: Verificar que la configuración de la base de datos, aplicaciones y sistemas operativos sea idéntica en ambos entornos.
  • Validación de datos: Confirmar que los datos utilizados en las pruebas sean copias exactas o conjuntos de datos de prueba específicos para el entorno de homologación.
  • Pruebas de funcionalidad cruzada: Ejecutar las mismas pruebas en ambos entornos para detectar diferencias en el comportamiento del sistema.
  • Monitoreo del rendimiento: Comparar el rendimiento de la base de datos en ambos entornos para identificar cuellos de botella o problemas de escalabilidad.

6. Resguardo/Restauración de datos para nuevas pruebas:

Objetivo: Proteger los datos de prueba y permitir su restauración a un estado conocido antes de realizar nuevas pruebas.

Alcance:

  • Implementación de estrategias de respaldo: Establecer mecanismos regulares para realizar copias de seguridad de los datos de prueba.
  • Validación de las copias de seguridad: Verificar que las copias de seguridad sean completas, consistentes y recuperables.
  • Definición de puntos de restauración: Identificar puntos específicos en el tiempo a los que se puedan restaurar los datos de prueba (ej: antes de realizar cambios en el código o la configuración).
  • Automatización del proceso: Implementar scripts o herramientas para automatizar el proceso de respaldo y restauración de datos.


Algunos ejemplos

1. Búsqueda de datos de entrada:

Ejemplo 1: Validación de formato de fechas
Escenario: Se busca un usuario en la base de datos utilizando una fecha de nacimiento con formato incorrecto.

Gherkin

Característica: Gestión de usuarios

Escenario: Búsqueda de usuario con fecha de nacimiento inválida
Dado que tengo un usuario registrado en la base de datos con fecha de nacimiento «2023-02-29»
Y quiero buscar al usuario por su fecha de nacimiento
Cuando ingreso la fecha de nacimiento en formato «29/02/2023»
Entonces el sistema debe mostrar un mensaje de error indicando que el formato de fecha es inválido

Ejemplo 2: Búsqueda de usuario con nombre incompleto
Escenario: Se busca un usuario en la base de datos utilizando un nombre incompleto.

Gherkin
Característica: Gestión de usuarios

Escenario: Búsqueda de usuario con nombre incompleto
Dado que tengo un usuario registrado en la base de datos con nombre «Juan Pérez»
Y quiero buscar al usuario por su nombre
Cuando ingreso el nombre «Juan»
Entonces el sistema debe mostrar una lista de usuarios que coincidan con el nombre parcial ingresado

2. Comprobación de resultados esperados vs obtenidos:

Ejemplo 1: Validación de cálculo de total de ventas
Escenario: Se realiza una compra y se verifica que el total calculado en el sistema coincida con el total esperado.

Gherkin
Característica: Gestión de ventas

Escenario: Cálculo de total de venta correcto
Dado que tengo un carrito de compras con los siguientes productos:
– Producto 1: $100 (cantidad 2)
– Producto 2: $50 (cantidad 1)
Y proceso la compra
Entonces el sistema debe mostrar un total de venta de $200

Ejemplo 2: Validación de tiempo de respuesta de consultas
Escenario: Se ejecuta una consulta compleja en la base de datos y se verifica que el tiempo de respuesta sea menor al umbral establecido.

Gherkin
Característica: Rendimiento de la base de datos

Escenario: Tiempo de respuesta de consulta dentro del rango esperado
Dado que tengo una base de datos con una gran cantidad de datos
Cuando ejecuto la consulta «SELECT * FROM clientes WHERE ciudad = ‘Buenos Aires'»
Entonces el sistema debe responder la consulta en un tiempo menor a 5 segundos

3. Creación de nuevos sets de datos:

Ejemplo 1: Generación de datos de prueba para usuarios
Escenario: Se genera un conjunto de datos de prueba para usuarios con diferentes perfiles y características.

Gherkin
Característica: Datos de prueba para usuarios

Escenario: Generar datos de prueba para usuarios
Dado que necesito datos de prueba para usuarios
Cuando ejecuto el script de generación de datos
Entonces se debe crear un conjunto de datos con 100 usuarios con perfiles aleatorios (administrador, cliente, vendedor) y características demográficas variadas (edades, géneros, ubicaciones)


Ejemplo 2: Creación de datos de prueba para productos
Escenario: Se genera un conjunto de datos de prueba para productos con diferentes categorías, precios y características.

Gherkin
Característica: Datos de prueba para productos

Escenario: Generar datos de prueba para productos
Dado que necesito datos de prueba para productos
Cuando ejecuto el script de generación de datos
Entonces se debe crear un conjunto de datos con 50 productos con categorías aleatorias (electrónica, ropa, libros), precios variados y descripciones detalladas

4. Gestión de casos de prueba por datos incongruentes, nulos o inexistentes:

Ejemplo 1: Detección de dato nulo en campo obligatorio
Escenario: Se intenta crear un nuevo usuario sin especificar un nombre.

Gherkin
Característica: Gestión de usuarios

Escenario: Intento crear usuario sin nombre
Dado que estoy en el formulario de creación de usuario
Cuando dejo el campo «Nombre» vacío
Y hago clic en el botón «Crear usuario»
Entonces el sistema debe mostrar un mensaje de error indicando que el nombre es obligatorio

Ejemplo 2: Manejo de dato inconsistente en consulta
Escenario: Se ejecuta una consulta en la base de datos utilizando un ID de usuario inexistente.

Gherkin
Característica: Consultas a la base de datos

Escenario: Consulta con ID de usuario inexistente
Dado que tengo una base de datos con usuarios
Cuando ejecuto la

Riesgos de Producto

También debemos tener en cuenta ciertos riesgos de producto

1. Búsqueda de datos de entrada:

  • Datos erróneos o incompletos: La base de datos podría contener datos erróneos o incompletos, lo que podría generar resultados de búsqueda incorrectos o incompletos.
  • Formatos de datos no válidos: Los datos de entrada podrían tener formatos no válidos, lo que podría provocar errores en el procesamiento de las consultas.
  • Datos no actualizados: Los datos de la base de datos podrían no estar actualizados, lo que podría generar resultados de búsqueda obsoletos o inexactos.
  • Inyección de datos maliciosos: Los datos de entrada podrían ser utilizados para inyectar código malicioso en el sistema, lo que podría comprometer la seguridad de la base de datos.

2. Comprobación de resultados esperados vs obtenidos:

  • Errores lógicos en el código: El código del sistema podría contener errores lógicos que generen resultados incorrectos.
  • Algoritmos ineficientes: Los algoritmos utilizados para procesar las consultas podrían ser ineficientes, lo que podría afectar el rendimiento del sistema.
  • Problemas de concurrencia: Múltiples usuarios que acceden a la base de datos simultáneamente podrían generar resultados inconsistentes.
  • Dependencias externas no confiables: El sistema podría depender de componentes externos no confiables, lo que podría afectar la disponibilidad o la integridad de los datos.

3. Creación de nuevos sets de datos:

  • Datos no representativos: Los nuevos conjuntos de datos podrían no ser representativos de los datos reales, lo que podría afectar la cobertura de las pruebas.
  • Inconsistencias en los datos: Los nuevos conjuntos de datos podrían contener inconsistencias o errores, lo que podría generar resultados de prueba incorrectos.
  • Falta de diversidad en los datos: Los nuevos conjuntos de datos podrían no tener la suficiente diversidad para cubrir una amplia gama de escenarios de prueba.
  • Sesgos en los datos: Los nuevos conjuntos de datos podrían estar sesgados hacia ciertos resultados o valores, lo que podría afectar la objetividad de las pruebas.

4. Gestión de casos de prueba por datos incongruentes, nulos o inexistentes:

  • Casos de prueba no identificados: No todos los casos de prueba que se ven afectados por datos incongruentes, nulos o inexistentes podrían ser identificados.
  • Estrategias de manejo inadecuadas: Las estrategias implementadas para manejar datos incongruentes, nulos o inexistentes podrían ser inadecuadas o no estar bien documentadas.
  • Impacto no evaluado: El impacto potencial de los datos incongruentes, nulos o inexistentes en el sistema podría no ser evaluado adecuadamente.
  • Falta de mecanismos de monitoreo: No se implementan mecanismos para monitorear la aparición de datos incongruentes, nulos o inexistentes en el sistema.

5. Validación de homologación de ambientes:

  • Diferencias de configuración: Los entornos de prueba y producción podrían tener configuraciones diferentes, lo que podría generar resultados inconsistentes entre ambos entornos.
  • Datos inconsistentes: Los datos en los entornos de prueba y producción podrían ser inconsistentes, lo que podría afectar la validez de las pruebas.
  • Comportamiento del sistema no predecible: El comportamiento del sistema en producción podría ser diferente al observado en el entorno de prueba, lo que podría generar problemas una vez que el sistema se implementa en producción.
  • Falta de procesos de cambio: No se implementan procesos adecuados para gestionar los cambios en la configuración o los datos entre los entornos de prueba y producción.

6. Resguardo/Restauración de datos para nuevas pruebas:

  • Pérdida de datos: Los datos de prueba podrían perderse debido a fallas en el sistema, errores humanos o ataques cibernéticos.
  • Copias de seguridad incompletas o corruptas: Las copias de seguridad de los datos de prueba podrían ser incompletas o corruptas, lo que imposibilitaría su restauración.
  • Procesos de restauración lentos o ineficientes: Los procesos de restauración de datos podrían ser lentos o ineficientes, lo que podría retrasar las pruebas.
  • Falta de mecanismos de verificación: No se implementan mecanismos para verificar la integridad y la recuperabilidad de las copias de seguridad de los datos.

En resumen, el testing de bases de datos con casos de prueba bien diseñados es esencial para garantizar la calidad, confiabilidad y seguridad de la información almacenada en una base de datos, contribuyendo al éxito general del proyecto.

Gus Terrera

Apasionado por el agile testing y la ia.