Tecnología de DevOps: Administración de datos de prueba

Las pruebas automatizadas son un componente clave de las prácticas modernas de entrega de software. La capacidad de ejecutar un conjunto completo de pruebas de unidades, integraciones y sistemas es esencial para verificar que tu app o servicio se comporten como se espera y que se puedan implementar en producción de forma segura. Para garantizar que tus pruebas validen situaciones realistas, es fundamental que proporciones datos realistas.

Los datos de prueba son importantes porque son necesarios para todo tipo de pruebas de tu conjunto de prueba, incluidas las pruebas manuales y automatizadas. Los datos de prueba de buena calidad te permiten validar recorridos de usuarios comunes o de alto valor, probar casos extremos, reproducir defectos y simular errores.

Sin embargo, es difícil usar y administrar los datos de prueba de manera eficaz. La dependencia excesiva en los datos definidos fuera del alcance de la prueba puede hacer que tus pruebas sean frágiles y que se aumenten los costos de mantenimiento. Las dependencias en las fuentes de datos externas pueden generar retrasos y afectar el rendimiento de las pruebas. Además, copiar datos de producción genera riesgos porque pueden contener información sensible. Para abordar estos desafíos, debes administrar tus datos de prueba con cuidado y de manera estratégica.

Cómo implementar la administración de datos de prueba

El análisis realizado por DevOps Research and Assessment (DORA) muestra que los equipos exitosos abordan la administración de datos de prueba con los siguientes principios básicos:

  • Existen datos de prueba adecuados disponibles para ejecutar paquetes de prueba automatizados completos.
  • Los datos de prueba para paquetes de prueba automatizados se pueden adquirir según demanda.
  • Los datos de prueba no limitan las pruebas automatizadas que los equipos pueden ejecutar.

Para mejorar los procesos de administración de datos de prueba, esfuérzate por cumplir con cada una de estas condiciones en todos tus equipos de desarrollo. Estas prácticas también pueden contribuir de manera positiva a tus capacidades generales de integración continua y automatización de pruebas

Problemas comunes en la administración de datos de prueba

Administrar los datos de prueba puede ser una tarea difícil. Las siguientes dificultades son comunes en la administración de datos de prueba:

  • Hay una dependencia excesiva en los datos de las pruebas. En particular, las pruebas de unidades no deben depender de datos o estados externos a la prueba.
  • Se usa una copia completa de la base de datos de producción, en lugar de identificar partes relevantes o importantes.
  • No se enmascaran los datos sensibles ni se generan valores hash con ellos.
  • Hay una dependencia en datos que están desactualizados o que ya no son relevantes.

Formas de mejorar la administración de datos de prueba

Las siguientes prácticas pueden ayudarte a usar los datos de prueba de manera más eficaz y eficiente:

  1. Prioriza las pruebas de unidades. Las pruebas de unidades deben ser independientes entre sí y de cualquier otra parte del sistema, excepto el código que se está probando. Las pruebas de unidades no deben depender de datos externos. Como se define en la pirámide de automatización de pruebas, las pruebas de unidades deben conformar la mayoría de las pruebas. Las pruebas de unidades bien escritas que se ejecutan en una base de código bien diseñada son mucho más fáciles de clasificar y más económicas de mantener que las pruebas de nivel superior. Aumentar la cobertura de las pruebas de unidades puede ayudar a minimizar la dependencia en las pruebas de nivel superior que consumen datos externos.

    Pirámide de automatización de pruebas

  2. Minimiza la dependencia en los datos de prueba. Los datos de prueba requieren un mantenimiento cuidadoso y continuo. A medida que evolucionan las API y las interfaces, debes actualizar los datos de prueba relacionados o volver a crearlos. Este proceso representa un costo que puede tener un impacto negativo en la velocidad del equipo. Por lo tanto, se recomienda minimizar la cantidad de datos de prueba necesarios para ejecutar pruebas automatizadas.

  3. Aísla tus datos de prueba. Ejecuta tus pruebas en entornos bien definidos con entradas controladas y salidas previstas que se puedan comparar con las salidas reales. Asegúrate de que los datos consumidos por una prueba en particular estén asociados de forma explícita a esa prueba y no se vean modificados por otras pruebas o procesos. Siempre que sea posible, tus pruebas deben crear el estado necesario como parte de la configuración mediante las API de la aplicación. El aislamiento de los datos de prueba también es un requisito para que las pruebas se ejecuten en paralelo.

  4. Minimiza la dependencia en los datos de prueba almacenados en bases de datos. Mantener los datos de prueba almacenados en bases de datos puede ser muy difícil por las siguientes razones:

    1. Aislamiento de prueba deficiente. Las bases de datos almacenan datos de forma duradera. Cualquier cambio en los datos persistirá en todas las pruebas, a menos que se restablezca de forma explícita. Las entradas de prueba menos confiables hacen que el aislamiento de prueba sea más complicado y pueden evitar la paralelización.
    2. Impacto en el rendimiento. La velocidad de ejecución es un requisito clave para las pruebas automatizadas. Interactuar con una base de datos suele ser más lento y más complejo que interactuar con los datos almacenados de manera local. Cuando sea necesario, prioriza las bases de datos en la memoria.
  5. Haz que los datos de prueba estén disponibles. La ejecución de pruebas en una copia de una base de datos de producción completa genera riesgos. Actualizar los datos puede ser difícil y lento. Como resultado, los datos pueden quedar desactualizados. Los datos de producción también pueden contener información sensible. En su lugar, identifica las secciones de datos relevantes que requieren las pruebas. Exporta estas secciones con regularidad y haz que estén disponibles para las pruebas.

Cómo medir la administración de datos de prueba

A medida que evoluciona tu enfoque para probar la administración de datos, es importante medir tu progreso en función de los principios básicos descritos con anterioridad.

  1. Existen datos de prueba adecuados disponibles para ejecutar paquetes de prueba automatizados completos. Para medir esto, puedes realizar un seguimiento del tiempo que los desarrolladores y verificadores dedican a administrar y manipular datos a fin de usarlos en conjuntos de prueba. También puedes capturar esto mediante medidas perceptivas (es decir, encuestas). Puedes preguntar a los equipos si tienen los datos adecuados para realizar su trabajo o si sienten que es una limitación para ellos.
  2. Los datos de prueba para paquetes de prueba automatizados se pueden adquirir según demanda. Puedes medir esto como el porcentaje de los conjuntos de datos clave disponibles, con qué frecuencia se accede a ellos y con qué frecuencia se actualizan.
  3. Los datos de prueba no limitan las pruebas automatizadas que los equipos pueden ejecutar. Puedes medir esto como la cantidad de pruebas automatizadas que se pueden ejecutar sin la necesidad de adquirir datos de prueba adicionales. También puede capturar esto con medidas perceptivas (es decir, encuestas). Puedes preguntar a los equipos si consideran que los datos de prueba limitan las actividades de prueba automatizadas.

¿Qué sigue?