Question

Je travaillais avec la qualité hier en faisant des tests formels.Dans leur procédure, ils vérifiaient que tous les fichiers de la machine de test avaient été extraits de la version.La façon dont ils vérifiaient que ces fichiers étaient les mêmes consistait à vérifier la taille et les fenêtres d'horodatage placées sur eux dans l'Explorateur Windows.Ceux-ci étaient éteints pour une autre raison que j'ai pu découvrir.

Est-ce un moyen valable de vérifier qu'un fichier est identique ?Je ne le pensais pas et j'ai commencé à discuter, mais je suis plus jeune ici, alors j'ai pensé que je ne devrais pas pousser trop loin.Je voulais dire qu'ils devraient faire une comparaison binaire sur le fichier pour vérifier que son contenu est exact.D'après mon expérience, les horodatages et les attributs de taille n'agissent pas toujours comme prévu.Des pensées???

Était-ce utile?

La solution

La seule façon à 100 % de déterminer si deux fichiers sont égaux est de faire une comparaison binaire des deux.

Si vous pouvez vivre avec le risque de faux positifs (c.-à-d.deux fichiers qui ne sont pas identiques à 100 % mais votre code indique qu'ils le sont), alors les algorithmes de résumé et de somme de contrôle peuvent être utilisés pour réduire le travail, en particulier si les fichiers se trouvent sur deux machines différentes avec une bande passante moins qu'optimale, de sorte qu'une comparaison binaire est infaisable.

Les algorithmes de résumé et de somme de contrôle ont tous des risques de faux positifs, mais le risque exact varie selon l'algorithme.La règle générale est que plus il est crypté et plus il génère de bits, moins il y a de risque de faux positif.

Même l'algorithme CRC-32 est assez simple à utiliser et il devrait être facile de trouver sur Internet des exemples de code qui l'implémentent.

Si vous effectuez uniquement une comparaison taille/horodatage, je suis désolé de dire que cela est facile à contourner et ne vous donnera pas vraiment la certitude que les fichiers sont identiques ou différents.

Cela dépend cependant, si vous savez que dans votre monde, les horodatages sont conservés et modifiés uniquement lorsque le fichier est modifié, alors vous pouvez l'utiliser, sinon cela n'offre aucune garantie.

Autres conseils

Le hachage est très bon.Mais l'autre alternative technologique légèrement inférieure consiste à exécuter un outil de comparaison comme WinMerge ou TextWrangler et à comparer les deux versions de chaque fichier.C'est ennuyeux et il y a place à l'erreur humaine.

Mieux encore, utilisez le contrôle de version pour vous assurer que les fichiers que vous testez sont bien les fichiers que vous avez modifiés et ceux que vous allez lancer.Nous avons des dossiers d'extraction de notre référentiel en tant que sites de préparation et en direct, donc une fois que vous avez validé les modifications de votre copie de travail, vous pouvez être sûr à 100 % que les fichiers que vous testez, transférez vers la préparation puis en direct sont les mêmes, car il vous suffit d'exécuter "svn update" sur chaque case et de vérifier le numéro de révision.

Oh, et si vous avez besoin de revenir en arrière rapidement (cela nous arrive à tous un jour ou l'autre), il vous suffit de réexécuter svn update avec le commutateur -r et de revenir pratiquement instantanément à une révision précédente.

Je ferais quelque chose comme un hachage md5sum sur les fichiers et je comparerais cela aux hachages connus de la version.Ils seront plus précis que de simples comparaisons date/heure et devraient pouvoir être davantage automatisés.

La manière normale est de calculer un hacher des deux fichiers et comparez cela.MD5 et SHA1 sont des algorithmes de hachage typiques.md5sum devrait être installé par défaut sur la plupart des machines de type Unix et sur Wikipédia. somme md5 l'article contient des liens vers certaines implémentations de Windows.

Vous devriez faire une vérification CRC sur chaque fichier...du wiki :

Contrôle de redondance cyclique, un type de fonction de hachage utilisé pour produire une somme de contrôle, afin de détecter des erreurs de transmission ou de stockage.

Il produit une valeur presque unique basée sur le contenu du fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top