En una situación típica de desarrollo de software, las pruebas se utilizan en dos puntos: durante el desarrollo y antes de mover el producto a lo largo de la cadena de desarrollo.
La primera situación, ejecutar pruebas durante el desarrollo, cumple objetivos a corto plazo: definir tareas (como en TDD: escribir una prueba fallida, luego hacerla pasar), evitar regresiones, asegurarse de que sus cambios no rompan nada más, etc. las pruebas deben ser extremadamente rápidas: idealmente, todo su conjunto de pruebas se ejecuta en menos de 5 segundos, y puede ejecutarlo en un bucle junto a su IDE o editor de texto mientras codifica. Cualquier regresión que introduzca aparecerá en cuestión de segundos. Las pruebas rápidas son más importantes en esta fase que detectar el 100% de las regresiones y errores, y dado que no es práctico (o absolutamente imposible) desarrollar copias exactas de los sistemas de producción, el esfuerzo requerido para lograr pruebas perfectas aquí no vale la pena. eso. El uso de bases de datos en memoria es una compensación: no son copias exactas del sistema de producción, pero ayudan a mantener las pruebas por debajo del límite de 5 segundos; si la elección es entre una configuración de base de datos ligeramente diferente para mis pruebas relacionadas con la base de datos, y ninguna prueba en absoluto, sé lo que elijo.
La segunda situación, mover el código a lo largo de la cadena de desarrollo, sin embargo, hace requerir pruebas exhaustivas. Dado que podemos (y deberíamos) automatizar esta parte del proceso de desarrollo, podemos permitirnos pruebas mucho más lentas, incluso si una prueba completa lleva horas, programar una compilación nocturna significa que siempre tenemos una imagen precisa de la base de código de ayer. Ahora es importante simular el entorno de producción con la mayor precisión posible, pero nos lo podemos permitir. Por lo tanto, no hacemos la compensación en la base de datos en memoria: instalamos la misma versión exacta del mismo DBMS que los sistemas de producción y, si es posible, la llenamos con datos de producción reales antes de que comience la prueba.