Testing Files Generator
Bahasa Indonesia

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

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.