Сведения о вопросе

ЧОВИД

16:03, 1st July, 2020

Теги

windows   testing    

Проверка файлов для тестирования

Просмотров: 371   Ответов: 5

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

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



  Сведения об ответе

ASER

18:03, 1st July, 2020

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

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

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

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

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

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


  Сведения об ответе

screen

18:03, 1st July, 2020

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

Лучше всего использовать контроль версий, чтобы убедиться, что файлы, которые вы тестируете, являются файлами, которые вы редактировали, и теми, которые вы собираетесь запустить. У нас есть папки checkout из нашего РЕПО в качестве промежуточных и живых сайтов, поэтому, как только вы зафиксировали изменения из своей рабочей копии, вы можете быть уверены, что файлы, которые вы тестируете, нажимаете на staging, а затем живете, одинаковы, потому что вы просто запускаете "svn update" на каждом поле и проверяете номер версии.

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


  Сведения об ответе

lool

18:03, 1st July, 2020

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


  Сведения об ответе

ASER

18:03, 1st July, 2020

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


  Сведения об ответе

DAAA

18:03, 1st July, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться