Pregunta

Ayer estuve trabajando con calidad haciendo algunas pruebas formales.En su procedimiento, verificaron que todos los archivos en la máquina de prueba fueran extraídos de la versión.La forma en que verificaron que estos archivos fueran iguales fue verificando el tamaño y la marca de fecha y hora que las ventanas colocaron en el Explorador de Windows.Estos estaban desactivados por otra razón y pude descubrir por qué.

¿Es esta una forma válida de verificar que un archivo sea el mismo?No lo pensé y comencé a discutir, pero aquí soy más joven así que pensé que no debería llevar las cosas demasiado lejos.Quería argumentar que deberían hacer una comparación binaria del archivo para verificar que su contenido sea exacto.En mi experiencia, las marcas de hora/fecha y los atributos de tamaño no siempre actúan como se esperaba.¿¿¿Alguna idea???

¿Fue útil?

Solución

La única forma 100% de saber si dos archivos son iguales es hacer una comparación binaria de los dos.

Si puede vivir con el riesgo de falsos positivos (es decir,dos archivos que no son 100% idénticos pero su código dice que lo son), entonces los algoritmos de resumen y suma de verificación se pueden usar para reducir el trabajo, particularmente si los archivos se encuentran en dos máquinas diferentes con un ancho de banda inferior al óptimo, de modo que una comparación binaria es inviable.

Todos los algoritmos de resumen y suma de verificación tienen posibilidades de producir falsos positivos, pero la probabilidad exacta varía según el algoritmo.La regla general es que cuanto más criptográfico esté y cuantos más bits produzca, menos posibilidades habrá de un falso positivo.

Incluso el algoritmo CRC-32 es bastante bueno de usar y debería ser fácil encontrar ejemplos de código en Internet que lo implementen.

Si solo hace una comparación de tamaño/marca de tiempo, lamento decir que esto es fácil de eludir y en realidad no le dará mucha certeza de que los archivos sean iguales o diferentes.

Sin embargo, depende, si sabes que en tu mundo las marcas de tiempo se mantienen y solo se cambian cuando se modifica el archivo, entonces puedes usarlo; de lo contrario, no hay garantía.

Otros consejos

El hash es muy bueno.Pero la otra alternativa tecnológica, ligeramente inferior, es ejecutar una herramienta de diferencias como WinMerge o TextWrangler y comparar las dos versiones de cada archivo.Aburrido y hay margen para el error humano.

Lo mejor de todo es que utilice el control de versiones para asegurarse de que los archivos que está probando sean los archivos que editó y los que va a iniciar.Tenemos carpetas de pago de nuestro repositorio como sitios de prueba y en vivo, por lo que una vez que haya confirmado los cambios de su copia de trabajo, puede estar 100% seguro de que los archivos que prueba, envía a prueba y luego activa son los mismos, porque simplemente ejecute "svn update" en cada casilla y verifique el número de revisión.

Ah, y si necesita retroceder rápidamente (nos sucede a todos en algún momento), simplemente ejecute svn update nuevamente con el parámetro -r y regrese a una revisión anterior prácticamente al instante.

Haría algo como un hash md5sum en los archivos y lo compararía con los hashes conocidos de la versión.Serán más precisas que las simples comparaciones de fecha y hora y deberían poder automatizarse más.

La forma normal es calcular un picadillo de los dos archivos y comparar eso.MD5 y SHA1 son algoritmos hash típicos.md5sum debería instalarse de forma predeterminada en la mayoría de las máquinas tipo Unix, y Wikipedia suma md5 El artículo tiene enlaces a algunas implementaciones de Windows.

Deberías hacer una verificación CRC en cada archivo...de la wiki:

Verificación de redundancia cíclica, un tipo de función hash que se utiliza para producir una suma de verificación, con el fin de detectar errores en la transmisión o el almacenamiento.

Produce un valor casi único basado en el contenido del archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top