Testing Files Generator
Română

Cum creezi un fișier de dimensiune exactă

Fiecare sistem are o comandă pentru asta, iar toate trei sunt mai jos. Îți dau un fișier cu exact numărul potrivit de octeți - și pentru multe teste atât îți trebuie. Fiecare comandă de pe această pagină a fost rulată înainte de publicare, pe sistemul căruia îi aparține.

Răspunsul scurt

Windows: fsutil file createnew name 10485760. Linux: dd if=/dev/zero of=name bs=1M count=10. macOS: mkfile 10m name. Dimensiunile sunt în octeți, iar 10 MB numărați cum numără managerul tău de fișiere sunt 10485760.

Windows

fsutil și o variantă PowerShell care nu are nevoie de nimic în plus

fsutil vine cu Windows. Primește dimensiunea în octeți, așa că calculează mai întâi numărul - 10 MB sunt 10485760, 100 MB sunt 104857600, 1 GB este 1073741824.

fsutil file createnew test10mb.bin 10485760

Măsurat pe Windows 11: merge dintr-un prompt obișnuit, fără să ceară unul cu privilegii ridicate, iar fișierul iese de exact 10485760 de octeți.

PowerShell poate face același lucru fără să cheme alt program și înțelege unitățile:

$file = New-Object System.IO.FileStream "test10mb.bin", Create, ReadWrite
$file.SetLength(10MB)
$file.Close()

10MB în PowerShell înseamnă 10485760 de octeți, aceeași numărare în baza 1024 pe care o folosește Explorer, deci cele două comenzi de mai sus produc aceeași dimensiune.

Linux

dd, truncate și fallocate, și diferența care îi prinde pe oameni

dd este cel pe care îl știe toată lumea. Scrie într-adevăr octeții:

dd if=/dev/zero of=test10mb.bin bs=1M count=10

truncate e instantaneu și asta e capcana. Măsurat pe Alpine Linux, fișierul raportează 10485760 de octeți și ocupă zero blocuri - este un fișier rar (sparse). Tot ce îl citește primește zece megaocteți de zerouri, dar discul nu a cedat niciodată spațiul:

truncate -s 10M test10mb.bin

E bine pentru a testa o limită de încărcare și înșelător pentru a testa o cotă de disc. fallocate este cel de folosit când spațiul trebuie să fie real:

fallocate -l 10M test10mb.bin

Și când conținutul trebuie să fie incompresibil, ca un arhivator să nu-l poată strânge la loc:

head -c 10485760 /dev/urandom > test10mb.bin

macOS

mkfile, care nu e rar, și cele două pe care le știi deja

macOS vine cu mkfile. Măsurat pe macOS 26.6.2: 10485760 de octeți și 20480 de blocuri, deci spațiul este alocat cu adevărat, nu doar promis:

mkfile 10m test10mb.bin

dd și truncate sunt și ele acolo și se comportă ca pe Linux:

dd if=/dev/zero of=test10mb.bin bs=1m count=10
truncate -s 10M test10mb.bin

Unde nu mai merge asta

Un fișier de dimensiunea potrivită nu este un fișier de tipul potrivit

Tot ce e mai sus îți dă un bloc de zerouri. Asta ajunge când ce se testează se uită doar la dimensiune - o limită de încărcare, o cotă, un transfer. Nu mai ajunge din clipa în care ceva deschide fișierul.

Măsurat, și merită să încerci singur: fă un fișier de 2 MB cu fsutil, numește-l photo.png și dă-l unei biblioteci de imagini. Pillow răspunde cannot identify image file. Nu e un PNG. N-a fost niciodată - doar numele o spunea.

Contează mai mult decât pare, din cauza direcției în care eșuează testul. Endpointul tău de încărcare respinge fișierul, testul tău devine verde și tragi concluzia că limita de dimensiune funcționează. Nu l-a respins pentru dimensiune. L-a respins pentru că octeții nu erau o imagine, iar regula pe care voiai s-o testezi n-a fost niciodată atinsă.

Cealaltă cale

Un fișier real de acel format, la exact dimensiunea cerută

Asta face Testing Files Generator. Fișierul este unul autentic al formatului său - se deschide în programul căruia îi aparține - și are numărul exact de octeți pe care l-ai cerut, la octet:

tfg generate --format png --size 10mb --out ./fixtures

Cere o dimensiune pe care un format nu o poate atinge și primești o eroare care numește pragul și motivul lui, niciodată un fișier de dimensiune greșită. Pagina de formate listează fiecare format cu cel mai mic fișier pe care îl poate produce.

Iar o limită înseamnă trei cazuri de test, nu unul, așa că instrumentul le construiește pe toate trei:

tfg generate --format pdf --boundary 10mb --out ./edges

Asta îți dă 10485759, 10485760 și 10485761 de octeți și un manifest care spune pe care sistemul tău trebuie să le accepte și pe care să le respingă. Pagina de cazuri de utilizare parcurge asta și alte patru sarcini pentru care a fost făcut.

Gratuit și open source, GPL-3.0. Fără cont. Descărcările pentru Windows și macOS sunt semnate și pornesc fără avertisment.

Deci pe care să-l folosești?

Ambele sunt pe această pagină pentru că ambele au dreptate o parte din timp. Greșeala de evitat este să-l folosești pe primul unde îl trebuie pe al doilea și să citești testul verde drept dovadă.