Verificarea fișierelor pentru testare

Lucram cu calitatea de ieri făcând niște teste formale. În procedura lor verificau că toate fișierele de pe mașina de testat au fost scoase din eliberare. Modul în care aceștia verificau acele fișiere au fost aceleași, prin verificarea mărimii și a ferestrelor de ștampilare date / oră pe care le-au pus în Windows Explorer. Acestea s-au întâmplat să fie dezactivate dintr-un alt motiv pe care l-am putut afla de ce.

Este o modalitate validă de a verifica dacă un fișier este același? Nu m-am gândit și am început să mă cert, dar eu sunt mai tânăr aici, așa că nu cred că ar trebui să o împing prea departe. Am vrut să susțin că ar trebui să facă o comparație binară asupra fișierului pentru a verifica conținutul său exact. În experiența mea, timbrele de timp / dată și atributele de mărime nu acționează întotdeauna așa cum era de așteptat. Orice ganduri ???

0
fr hi bn

5 răspunsuri

Hashing-ul este foarte bun. Dar cealaltă alternativă tehnică puțin mai mică este de a rula un instrument de difuzare precum WinMerge sau TextWrangler și comparați cele două versiuni ale fiecărui fișier. Plictisitor și există loc pentru eroare umană.

Cel mai bine, folosiți controlul versiunii pentru a vă asigura că fișierele pe care le testați sunt fișierele pe care le-ați editat și cele pe care le lansați. Dispunem de foldere de cecuri din repo ca site-uri de staționare și live, astfel că odată ce ați făcut schimbările din copia de lucru, puteți fi 100% siguri că fișierele pe care le testați, împingeți la staționare și apoi trăiți sunt aceleași, deoarece trebuie doar să rulați "svn update" pe fiecare casetă și să verificați numărul de revizie.

Oh, și dacă aveți nevoie să vă întoarceți repede într-o grabă (se întâmplă cu noi toți cândva sau alta), purtați doar noul update svn cu comutatorul -r și reveniți la o revizie anterioară practic instantaneu.

0
adăugat

Ar trebui să faceți o verificare CRC pe fiecare fișier ... din wiki:

Cyclic redundancy check, a type of hash function used to produce a checksum, in order to detect errors in transmission or storage.

Produce o valoare aproape unică bazată pe conținutul fișierului.

0
adăugat
CRC-32 are distanțe bune pentru hamamuri pentru fișiere destul de mici (<128K) peste această dimensiune, care nu au entropie suficientă pentru a fi utilizate în mod fiabil pentru compararea fișierelor.
adăugat autor Epsilon, sursa

Aș face ceva ca un hash de md5sum pe fișiere și o comparați cu cele cunoscute de hashes de la lansare. Acestea vor fi mai precise decât comparațiile de dată / oră și ar trebui să poată fi automatizate mai mult.

0
adăugat

Modul normal este de a calcula un hash al celor două fișiere și de a compara acest lucru. MD5 și SHA1 sunt algoritmi de tip hash tipic. md5sum ar trebui instalat în mod implicit pe majoritatea mașinilor de tip unix, iar articolul md5sum al Wikipedia are legături către unele implementări de Windows.

0
adăugat

Singurul mod de a determina dacă două fișiere sunt egale este de a face o comparație binară a celor două.

Dacă puteți trăi cu riscul de fals pozitiv (de exemplu, două fișiere care nu sunt identice cu 100%, dar codul dvs. spune că acestea sunt), algoritmii digest și checksum pot fi utilizați pentru a diminua munca, în special dacă fișierele trăiesc două mașini diferite cu o lățime de bandă mai mică decât cea optimă, astfel încât o comparație binară să fie imposibilă.

Algoritmii digest și algoritmul de control au șanse de fals pozitive, însă șansa exactă variază în funcție de algoritm. Regula generală este că, cu cât este mai criptată, și cu cât mai multe biți emite, cu atât mai puține sunt șansele unui fals pozitiv.

Chiar și algoritmul CRC-32 este destul de bun de utilizat și ar trebui să fie ușor să găsiți exemple de coduri pe internet care o implementează.

Dacă faceți doar o comparație dimensiune / timestamp, atunci îmi pare rău să spun că acest lucru este ușor de ocolit și nu vă va da prea multă siguranță că fișierele sunt identice sau diferite.

Depinde, totuși, dacă știți că în lumea voastră, timestampurile sunt păstrate și modificate numai atunci când fișierul este modificat, atunci îl puteți folosi, altfel nu are nicio garanție.

0
adăugat