Cara membuat file dengan ukuran tepat
Setiap sistem punya perintah untuk itu, dan ketiganya ada di bawah. Perintah-perintah itu memberi Anda file dengan jumlah byte yang tepat - dan untuk banyak pengujian itu sudah cukup. Setiap perintah di halaman ini dijalankan sebelum dipublikasikan, di sistem tempat perintah itu berada.
Jawaban singkat
Windows: fsutil file createnew name 10485760. Linux: dd if=/dev/zero of=name
bs=1M count=10. macOS: mkfile 10m name. Ukuran dalam byte, dan 10 MB yang
dihitung seperti pengelola file Anda menghitung adalah 10485760.
Windows
fsutil, dan versi PowerShell yang tidak memerlukan tambahan apa pun
fsutil disertakan dengan Windows. Perintah ini menerima ukuran dalam
byte, jadi hitung dulu angkanya - 10 MB adalah 10485760, 100 MB adalah 104857600, 1 GB
adalah 1073741824.
fsutil file createnew test10mb.bin 10485760
Diukur di Windows 11: berjalan dari prompt biasa dan tidak memerlukan prompt dengan hak istimewa, dan file keluar tepat 10485760 byte.
PowerShell dapat melakukan hal yang sama tanpa memanggil program lain, dan memahami satuan:
$file = New-Object System.IO.FileStream "test10mb.bin", Create, ReadWrite
$file.SetLength(10MB)
$file.Close()
10MB di PowerShell berarti 10485760 byte, hitungan berbasis 1024 yang sama dengan yang
dipakai Explorer, sehingga kedua perintah di atas menghasilkan ukuran yang sama.
Linux
dd, truncate, dan fallocate, dan perbedaan yang menjebak orang
dd adalah yang dikenal semua orang. Perintah ini benar-benar menulis byte:
dd if=/dev/zero of=test10mb.bin bs=1M count=10
truncate instan, dan di situlah jebakannya. Diukur di Alpine Linux, file melaporkan
10485760 byte dan menempati nol blok - ini adalah sparse file.
Apa pun yang membacanya mendapat sepuluh megabyte nol, tetapi disk tidak pernah menyerahkan
ruangnya:
truncate -s 10M test10mb.bin
Itu baik untuk menguji batas unggahan dan menyesatkan untuk menguji kuota disk.
fallocate adalah yang dipakai bila ruangnya harus nyata:
fallocate -l 10M test10mb.bin
Dan bila isinya harus tak dapat dikompres, agar pengarsip tidak bisa memadatkannya kembali:
head -c 10485760 /dev/urandom > test10mb.bin
macOS
mkfile, yang bukan sparse, dan dua yang sudah Anda kenal
macOS menyertakan mkfile. Diukur di macOS 26.6.2: 10485760 byte dan 20480 blok,
sehingga ruangnya benar-benar dialokasikan, bukan dijanjikan:
mkfile 10m test10mb.bin
dd dan truncate juga ada dan berperilaku seperti di Linux:
dd if=/dev/zero of=test10mb.bin bs=1m count=10
truncate -s 10M test10mb.bin
Di mana ini berhenti berfungsi
File dengan ukuran yang benar bukan file dengan jenis yang benar
Semua di atas memberi Anda blok nol. Itu cukup bila yang diuji hanya melihat ukuran - batas unggahan, kuota, transfer. Itu berhenti cukup begitu ada yang membuka file itu.
Diukur, dan layak Anda coba sendiri: buat file 2 MB dengan fsutil, namai
photo.png, dan serahkan ke pustaka gambar. Pillow menjawab cannot identify
image file. Itu bukan PNG. Tidak pernah - hanya namanya yang berkata begitu.
Itu lebih penting daripada kedengarannya, karena arah kegagalan pengujian itu kemudian. Endpoint unggah Anda menolak file, pengujian Anda hijau, dan Anda menyimpulkan batas ukuran berfungsi. Endpoint itu tidak menolaknya karena ukuran. Ia menolaknya karena byte-nya bukan gambar, dan aturan yang ingin Anda uji tidak pernah tercapai.
- parser menolaknya sebelum aturan ukuran apa pun diperiksa
- langkah thumbnail gagal dan galat yang Anda baca adalah tentang thumbnail
- antivirus atau pemeriksaan konten menolaknya karena alasan ketiga
- penampil tidak menampilkan apa pun, dan tak seorang pun tahu apakah itu bug-nya
Jalan lainnya
File asli dari format itu, dengan ukuran persis seperti yang Anda minta
Inilah yang dilakukan Testing Files Generator. File itu adalah file asli dari formatnya - terbuka di aplikasi yang memilikinya - dan berjumlah byte persis seperti yang Anda minta, sampai ke byte:
tfg generate --format png --size 10mb --out ./fixtures
Minta ukuran yang tidak dapat dicapai suatu format dan Anda mendapat galat yang menyebut batas bawah dan alasannya, tidak pernah file berukuran salah. Halaman format mencantumkan setiap format beserta file terkecil yang dapat dibuatnya.
Dan sebuah batas adalah tiga kasus uji, bukan satu, jadi alat ini membuat ketiganya:
tfg generate --format pdf --boundary 10mb --out ./edges
Itu memberi Anda 10485759, 10485760, dan 10485761 byte, dan manifes yang menyatakan mana yang harus diterima sistem Anda dan mana yang harus ditolak. Halaman kasus penggunaan membahas itu dan empat pekerjaan lain yang untuknya alat ini dibuat.
Gratis dan open source, GPL-3.0. Tanpa pendaftaran. Unduhan Windows dan macOS sudah ditandatangani dan berjalan tanpa peringatan.
Jadi mana yang sebaiknya dipakai?
-
Pakai perintah sistem
Bila tidak ada yang membuka file. Menguji batas ukuran pada endpoint yang memeriksa ukuran lebih dulu, transfer, kuota, disk penuh. Hanya satu baris dan sudah terpasang.
-
Pakai generator sungguhan
Bila ada yang mem-parsing, merender, mengimpor, atau mengekstrak file - dan bila Anda memerlukan fixture yang sama besok, di mesin lain, byte demi byte.
Keduanya ada di halaman ini karena keduanya benar sebagian waktu. Kesalahan yang perlu dihindari adalah memakai yang pertama di tempat yang kedua dibutuhkan dan membaca pengujian hijau sebagai bukti.