Estoy escribiendo un código de prueba para una función que procesa archivos PDF. La idea básica detrás de las pruebas es que las apunto a algunos archivos PDF que he seleccionado especialmente, los procesan y compruebo que el resultado es lo que espero.
Mi pregunta es: ¿dónde debería almacenar estos archivos PDF de gran tamaño? ¿Debo registrarlos en el control de versiones junto con el código? O ponerlos en otro lugar? Obviamente, el código de prueba es inútil sin los PDF (o incluso con diferentes PDF) pero aún así, ponerlos en nuestro repositorio se siente mal.
testing
version-control
data
Swiftheart
fuente
fuente
Tests != Test Data
Respuestas:
Su sistema de control de versiones debe contener todo lo que necesita para construir, compilar, probar y empaquetar una aplicación para distribución (por ejemplo, MSI, RPM). También argumentaría que las configuraciones de compilación y otros scripts también deberían estar en el control de versiones.
Debería poder revisar un proyecto y tener un entorno completo de compilación, compilación y prueba.
Hay dos enfoques para verificar los datos de prueba. Primero, puede verificar los datos de prueba en sí (PDF en este caso). En segundo lugar, puede registrar los datos de origen que se pueden usar para generar datos de prueba (si corresponde). Esto podría ser una secuencia de comandos SQL cargada en una base de datos en blanco que contiene datos de prueba, o tal vez un archivo basado en texto que se puede compilar en un PDF u otro archivo.
Otros pueden estar en desacuerdo con la verificación todo en el control de versiones, pero en mi experiencia profesional he descubierto que es fundamental para garantizar que un entorno completo pueda reconstruirse desde cero.
fuente
Si las pruebas son inútiles sin los archivos de configuración que ha preparado, entonces tiene sentido incluir los archivos en su VCS junto con el código de prueba.
Si bien los archivos utilizados en la prueba no son código, puede verlos como una dependencia en la que se basa el código. Así que hay mérito en mantener todo junto.
Como contrapunto, algunos VCS no manejan bien los archivos binarios grandes, y otros tienen una fuerte oposición a incluir cualquier tipo de archivo binario en un VCS. Si alguno de esos casos se aplica a usted, entonces también tendría sentido almacenar los archivos de prueba en una ubicación conocida a la que se pueda acceder fácilmente.
También consideraría poner un comentario en el código de prueba que diga "depende
foo.pdf
para ejecutar todas las pruebas".fuente
Si se trata de datos estáticos, sí, póngalo en control de versiones. Esos archivos realmente no cambiarán una vez que estén registrados; se eliminarán si ya no se necesita esa funcionalidad o se agregarán nuevos archivos de prueba. De cualquier manera, no necesita preocuparse por las diferencias binarias pobres que ocupan espacio.
Si está generando datos de prueba, por ejemplo. al azar, debe guardarlo automáticamente cuando falla una prueba, pero descartarlo de lo contrario. Cualquier dato guardado de esta manera debe convertirse en pruebas de regresión regulares, de modo que esos casos límite se prueben definitivamente en el futuro en lugar de depender de la suerte del sorteo.
fuente
Definitivamente incluya esos datos con sus pruebas y su código de aplicación principal. Ayuda a tener un conjunto de pruebas realmente bien organizado, por lo que si está probando la extracción de PDF (y tiene ese código bien encapsulado), entonces debería poder construir una ruta a sus datos de prueba, en función de la ruta al código de la aplicación - Eso siempre funcionó para mí.
Con git puede configurar un .gitignore para evitar que cualquier salida temporal o registro de prueba contamine su repositorio.
fuente