Untuk apa orang memakainya
Lima pekerjaan yang muncul di hampir setiap proyek yang menerima file dari orang, dan perintah yang melakukan masing-masing. Setiap contoh di bawah berjalan sebagaimana tertulis.
Batas unggahan
Menguji apakah batas ukuran file ditegakkan di tempat yang dinyatakan
Sebuah batas adalah tiga kasus uji, bukan satu: tepat di bawah, tepat pada, dan tepat di atas. Mendapatkannya secara manual berarti menghitung jumlah byte dan berharap tidak salah selisih satu. Mintalah setnya:
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
Anda mendapat tiga PDF asli berukuran 1048575, 1048576, dan 1048577 byte, serta manifes yang
menyatakan dua yang pertama harus diterima dan yang ketiga ditolak karena
size_limit. Pengujian Anda membaca ekspektasi alih-alih Anda menulis tiga asersi
secara manual - dan bila batas berubah, Anda mengganti satu angka dan menjalankan ulang.
Hal yang sama berfungsi tanpa preset bila Anda menginginkan satu set batas inline:
tfg generate --format png --boundary 5mb --out ./png-edges
Integrasi berkelanjutan
Menjaga fixture di luar repositori tanpa kehilangannya
Fixture biner besar membuat repositori lambat di-clone dan sulit di-review, dan tak seorang pun tahu apa yang berubah saat satu diganti. Resep adalah beberapa ratus karakter YAML yang membangun ulang file identik - byte demi byte, di mesin mana pun - karena setiap file diturunkan dari seed run.
- name: build the fixtures
run: tfg generate fixtures.yaml --out ./fixtures
- name: run the tests
run: pytest tests/
- name: nothing moved
run: tfg verify ./fixtures/manifest.json
Setiap akhir punya kode keluarnya sendiri, sehingga pipeline dapat membedakan resep yang buruk dari disk penuh dan dari ketidakcocokan verifikasi. Run yang gagal tidak mencetak apa pun di keluaran standar, sehingga parser log tidak membaca galat sebagai data.
Skala
Mencari tahu apa yang terjadi saat folder besar
Rutinitas impor, job malam, dan daftar direktori berperilaku berbeda pada sepuluh ribu file dibanding sepuluh. Ukuran yang diundi dari suatu rentang membuat set tampak seperti lalu lintas nyata alih-alih sepuluh ribu file identik, dan undiannya berasal dari seed, sehingga set itu sama besok.
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./fixtures
Periksa berapa biaya sebuah run sebelum menulis apa pun, yang penting bila totalnya diukur dalam gigabyte:
tfg generate --format log --size-range 1kb-8kb --count 10000 --dry-run
Run yang lebih besar dari ruang kosong di disk ditolak sebelum byte pertama ditulis, alih-alih memenuhi disk dan gagal di tengah jalan.
Arsip
Menguji pengekstrak dengan arsip yang benar-benar berisi file
Arsip kosong dengan ekstensi yang tepat tidak membuktikan apa pun tentang kode yang membukanya dan menelusuri isinya. Nyatakan isinya dan arsip benar-benar memuatnya:
targets:
- id: bundle
format: zip
contains:
- format: txt
count: 200
size: 4kb
Kedalaman bersarang, jumlah entri, dan ukuran isinya adalah hal-hal yang dipersoalkan rutinitas impor, dan begitulah cara Anda mengetahui apa persoalan itu.
Parser dan penampil
Memeriksa bahwa kode Anda sendiri membaca format seperti perangkat lunak sungguhan
Setiap format di sini diperiksa dengan pembaca independen sebelum dirilis - PNG dibuka dan pikselnya dibandingkan, DOCX dibaca kembali oleh pustaka terpisah, arsip diekstrak. Artinya file yang ditolak parser Anda adalah temuan tentang parser Anda, bukan tentang generator.
tfg generate --format docx --size 300kb --set paragraphs=120 --out ./documents
tfg generate --format xlsx --size 2mb --set rows=400 --set columns=6 --out ./sheets
Halaman format mencantumkan pengaturan yang diterima tiap format dan file terkecil yang dapat dibuat tiap format.
Panduan
Dua di antaranya lebih rinci
- File uji yang rusak - file yang sengaja dirusak, berukuran tepat, dengan apa yang harus terjadi padanya tertulis di manifes.
- File uji di CI - workflow GitHub Actions, job GitLab, dan kode keluar yang menggagalkan build.
Untuk siapa ini
Insinyur QA, otomasi pengujian, dan siapa pun yang kodenya memiliki formulir unggah, rutinitas impor, parser, atau kuota penyimpanan di baliknya. Berjalan di mesin tanpa jaringan sama sekali, yang penting di lingkungan korporat tertutup di mana generator berbasis browser bukan pilihan.
Gratis dan open source, GPL-3.0. Tanpa pendaftaran. Unduhan Windows dan macOS sudah ditandatangani dan berjalan tanpa peringatan.