Проверка файлов для тестирования - PullRequest
5 голосов
/ 07 августа 2008

Вчера я работал с качеством, проводя формальное тестирование. В ходе своей процедуры они проверяли, что все файлы на тестовой машине были извлечены из выпуска. То, как они проверяли эти файлы, было одинаковым, проверяя размер и отметки даты / времени, установленные на них в проводнике Windows. Это случилось по другой причине, которую я смог выяснить почему.

Является ли этот способ проверки файла одинаковым? Я так не думал и начал спорить, но я здесь моложе, так что подумал, что не стоит слишком далеко продвигаться. Я хотел доказать, что они должны выполнить двоичное сравнение файла, чтобы убедиться, что его содержимое является точным. По моему опыту, метки времени / даты и атрибуты размера не всегда действуют так, как ожидалось. Есть мысли ???

Ответы [ 5 ]

3 голосов
/ 07 августа 2008

Хеширование очень хорошо. Но другая, несколько более низкая техническая альтернатива - запустить инструмент сравнения, такой как WinMerge или TextWrangler, и сравнить две версии каждого файла. Скучно и есть место для человеческой ошибки.

Лучше всего, используйте контроль версий, чтобы убедиться, что файлы, которые вы тестируете, - это файлы, которые вы редактировали и которые вы собираетесь запустить. У нас есть папки извлечения из нашего репо в качестве промежуточного и действующего сайтов, поэтому после того, как вы зафиксировали изменения в своей рабочей копии, вы можете быть на 100% уверены, что файлы, которые вы тестируете, отправляете в промежуточный и затем работаете, совпадают, потому что вы просто запускаете «svn update» в каждом поле и проверяете номер редакции.

О, и если вам нужно откатиться в спешке (это случается со всеми нами когда-нибудь), вы просто снова запускаете svn update с ключом -r и возвращаетесь к предыдущей ревизии практически мгновенно.

3 голосов
/ 07 августа 2008

Единственный 100% способ выяснить, равны ли два файла, - это выполнить двоичное сравнение двух.

Если вы можете жить с риском ложных срабатываний (т. Е. Два файла, которые не на 100% идентичны, но ваш код говорит, что они есть), то алгоритмы дайджеста и контрольной суммы можно использовать для уменьшения работы, особенно если файлы хранятся на двух разных компьютерах с пропускной способностью ниже оптимальной, поэтому двоичное сравнение невозможно.

Все алгоритмы дайджеста и контрольной суммы имеют вероятность ложных срабатываний, но точный шанс зависит от алгоритма. Общее правило состоит в том, что чем больше криптографических данных и чем больше битов, тем меньше вероятность ложного срабатывания.

Даже алгоритм CRC-32 довольно хорош в использовании, и в интернете должно быть легко найти примеры кода, которые его реализуют.

Если вы сравниваете только размер / метку времени, то извиняюсь за то, что это легко обойти и на самом деле не даст вам уверенности в том, что файлы одинаковые или разные.

Однако, если вы знаете, что в вашем мире временные метки сохраняются и изменяются только при изменении файла, вы можете использовать его, в противном случае он не дает никаких гарантий.

1 голос
/ 07 августа 2008

Я бы сделал что-то вроде хеша md5sum для файлов и сравнил бы это с известными хешами из релиза. Они будут более точными, чем просто сравнение даты и времени, и их можно будет автоматизировать больше.

1 голос
/ 07 августа 2008

Обычный способ - вычислить хэш из двух файлов и сравнить их. MD5 и SHA1 являются типичными алгоритмами хеширования. md5sum должен быть установлен по умолчанию на большинстве машин типа unix, а статья Wikipedia md5sum содержит ссылки на некоторые реализации Windows.

0 голосов
/ 07 августа 2008

Вы должны сделать проверку CRC для каждого файла ... из вики:

Проверка циклическим избыточным кодом , тип хэш-функции, используемой для создания контрольной суммы для обнаружения ошибок при передаче или хранении.

Создает практически уникальное значение на основе содержимого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...