Historia de la pregunta:
La automatización de pruebas está íntimamente relacionada con la necesidad de crear y mantener datos de prueba predecibles y reproducibles. Las pruebas manuales pueden usar datos arbitrarios, pero los escenarios automatizados requieren un control preciso del estado de los datos en la base de datos o el entorno. La escala de las aplicaciones, el trabajo con microservicios y los requisitos de privacidad han hecho que la tarea de gestionar datos de prueba sea aún más complicada.
Problema:
Sin datos de prueba gestionados, las pruebas se vuelven inestables y sus resultados no son representativos. A menudo se presentan situaciones en las que:
Además, el uso de datos reales puede violar la seguridad o la política de privacidad.
Solución:
Los enfoques modernos incluyen:
Características clave:
¿Se pueden usar datos reales del entorno de producción para pruebas automatizadas?
No. Esto puede llevar a fugas de datos, violaciones de regulaciones, así como a la inestabilidad de las pruebas debido a cambios constantes en el sistema de producción.
¿Ayudará simplemente limpiar todos los datos entre pruebas a garantizar la estabilidad de las pruebas?
No. Es importante no solo limpiar los datos, sino también prepararlos adecuadamente para el estado requerido. Además, la limpieza masiva puede afectar pruebas o servicios que se están ejecutando en paralelo.
¿Es suficiente tener un solo entorno de prueba para todos los equipos?
No, este es el camino hacia colisiones y conflictos entre pruebas de diferentes equipos. Lo óptimo son entornos aislados o contenedorización (Docker test suites, ephemeral environments).
El equipo de testers usaba una única base de prueba, donde trabajaban tanto pruebas automatizadas como manuales. A menudo, las pruebas automatizadas fallaban debido a la eliminación o modificación manual de datos, lo que llevaba a largas depuraciones y pérdidas de tiempo.
Ventajas:
Desventajas:
La empresa implementó una infraestructura de entornos efímeros: cada prueba se ejecutaba en una copia separada de la base de datos, desplegada a través de Docker. Los fixtures se cargaban automáticamente a través de scripts de migración.
Ventajas:
Desventajas: