Generează fișiere de test reale la dimensiunea exactă
PDF, PNG, DOCX, ZIP - 26 formate în total, și fiecare este un fișier real care se deschide în programul căruia îi aparține, la exact dimensiunea pe care ai cerut-o. Fiecare rulare notează și ce trebuie să facă aplicația ta cu fiecare fișier. Linie de comandă și fereastră desktop, gratuit și open source, funcționând în întregime pe mașina ta.
Gratuit și open source, GPL-3.0. Fără cont. Descărcările pentru Windows și macOS sunt semnate și pornesc fără avertisment.
-
26
formate reale, fiecare se deschide în programul căruia îi aparține
-
1 octet
precizia fiecărei dimensiuni cerute, niciodată rotunjită pe tăcute
-
0
conexiuni către orice loc - fără cont, fără telemetrie, fără verificare de actualizări
Problema
Să faci un fișier de test e ușor. Să faci cele o mie potrivite e partea plictisitoare
Testezi software care primește fișiere de la oameni. Mai devreme sau mai târziu ai nevoie de:
- un PDF de exact 10 MB, ca să afli dacă limita de încărcare e reală
- cele trei fișiere de o parte și de alta a acelei limite, ca să prinzi erorile de unu
- 10.000 de fișiere de jurnal, ca să vezi ce face jobul de noapte când folderul e mare
- un ZIP care chiar conține 200 de documente, nu o carcasă goală cu extensia potrivită
- un fișier de 4 GB, fără să ții un fișier de 4 GB în repository
- aceleași fixture-uri pe laptopul tău și pe serverul de build, octet cu octet
Asta înlocuiește acesta. Este construit pentru ingineri QA, automatizarea testelor și oricine are în spatele codului un formular de încărcare, o rutină de import, un parser sau o cotă de stocare.
Ce îl face diferit
Alte generatoare se opresc la octeți. Acesta răspunde la ce întreabă de fapt testul tău
Un folder de fișiere te lasă tot pe tine să hotărăști ce trebuie să demonstreze fiecare. Fiecare
rulare scrie aici un manifest.json lângă fișiere - o listă simplă a tot ce s-a
produs și, pentru fiecare intrare, o așteptare declarată.
Să zicem că endpointul tău de încărcare permite 1 MB. Cere cele trei fișiere de pe acea linie:
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
| Fișier | Octeți | Sistemul tău trebuie să | Pentru că |
|---|---|---|---|
1mb_under_1b.pdf | 1048575 | accepte | e în interiorul limitei |
1mb_at_limit.pdf | 1048576 | accepte | limita însăși este permisă |
1mb_over_1b.pdf | 1048577 | respingă | size_limit |
Trei fișiere, trei răspunsuri diferite, în formă citibilă de mașină. Testul tău citește manifestul în loc să scrii tu asertările de mână:
import json, os
directory = "edges"
manifest = json.load(open(os.path.join(directory, "manifest.json")))
for entry in manifest["files"]:
response = upload(os.path.join(directory, entry["path"]))
outcome = entry["expected"]["outcome"]
if outcome == "accept":
assert response.ok, entry["path"]
elif outcome == "reject":
assert not response.ok, entry["path"]
Acolo unde răspunsul depinde de propria ta politică, manifestul spune asta
Înregistrează unspecified în loc să inventeze o așteptare. Un generator care ghicește
produce eșecuri false, iar o suită care dă alarme false ajunge oprită.
Presetări
Alege întrebarea, primești setul întreg
O presetare este un set de fișiere de test conceput în jurul unei întrebări de test, ca să nu fie nevoie să afli tu ce fișiere dovedesc ce. Fiecare are o pagină care spune ce găsește de obicei, ce este în set și fiecare setare pe care o acceptă.
-
Trece un fișier valid, cât de mic permite formatul?
empty-and-minimal -
Gestionarea numelor de fișiere
Va stoca, va afișa și va returna sistemul meu un nume de fișier la care nu se aștepta?
filename-handling -
Este o limită de dimensiune aplicată exact acolo unde este declarată?
size-boundaries -
Supraviețuiește importul meu de tabele la ce exportă instrumentele reale?
tabular-import -
Știe cititorul meu în ce codare este un fișier sau doar ghicește?
text-encoding -
Acceptă formularul meu de încărcare ce trebuie și respinge restul?
upload-validation
Pornire rapidă
Trei comenzi ca să-l vezi funcționând
-
Fă un fișier
Un PNG, exact doi megaocteți:
tfg generate --format png --size 2mb --out ./fixtures -
Fă multe fișiere
Zece mii de fișiere de jurnal, fiecare între unu și opt kiloocteți, cu dimensiunile extrase din seed ca mâine să dea același set. Dă fiecărei rulări propriul director - manifestul este singura evidență a ce a scris o rulare, așa că instrumentul refuză să scrie un al doilea peste el:
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs -
Verifică-le, apoi șterge-le
verifyîți spune că nimic nu s-a mișcat.cleanupșterge exact ce s-a scris și nimic altceva:tfg verify ./logs/manifest.json tfg cleanup ./logs/manifest.json --yes
Dimensiunile se numără din 1024 în 1024, cum o face managerul tău de fișiere, deci 2mb
înseamnă 2097152 octeți. Merge și un simplu număr de octeți.
Documentația acoperă rețetele, manifestul și codurile de ieșire.
Ce primești
Construit pentru o suită care rulează nesupravegheată
-
Dimensiune exactă, la octet
Cere 10485761 de octeți și primești exact atât. O dimensiune pe care un format nu o poate atinge este o eroare cu un motiv, niciodată un fișier de dimensiune greșită.
-
26 formate reale
Nu zerouri de umplutură cu o extensie. Un PNG generat se deschide într-un vizualizator de imagini, un DOCX se deschide în Word, un ZIP se extrage. Fiecare este verificat cu cititori independenți înainte de livrare.
-
Un manifest care este un oracol de test
Cale, dimensiune, SHA-256, format, seed, versiunea instrumentului - și ce trebuie să facă sistemul tău cu fișierul.
-
Reproductibil
Aceeași rețetă și același seed, aceiași octeți, pe orice mașină. Comite o rețetă YAML mică în loc de fixture-uri binare mari.
-
Două interfețe, un singur motor
O linie de comandă făcută pentru CI și o fereastră desktop pentru testarea exploratorie. Niciuna nu e o versiune redusă a celeilalte, iar un test le compară capacitate cu capacitate.
-
Complet offline
Fără cont, fără cloud, fără telemetrie, fără verificare de actualizări. Binarul liniei de comandă nu are compilat în el niciun stack de rețea.
Descărcare
Alege versiunea pentru sistemul tău
Dezarhivează arhiva și rulează-o. tfg este linia de comandă și tfg-gui
este fereastra desktop. Nu există instalator și nimic de adăugat pe mașina ta.
| Sistem | Linie de comandă | Fereastră desktop |
|---|---|---|
| Windows | amd64, arm64 |
amd64 |
| Linux | amd64, arm64 |
amd64 |
| macOS | arm64 |
arm64 |
Ce este semnat și ce nu
Descărcările pentru Windows și macOS sunt semnate, așa că pornesc fără avertisment despre un
dezvoltator necunoscut. Cele pentru Linux nu sunt, pentru că Linux pe desktop nu are un
echivalent cu care să le semnezi. Fiecare arhivă este listată în
verify-SHA256SUMS.txt pe pagina de versiuni, ca să poți verifica ce ai descărcat.
Gratuit și open source, GPL-3.0. Fără cont. Descărcările pentru Windows și macOS sunt semnate și pornesc fără avertisment.