Generuj pliki testowe o zadanym rozmiarze
PDF, PNG, DOCX, ZIP - razem 20 formatów, a każdy to prawdziwy plik, który otwiera się w programie, do którego należy, i ma dokładnie taki rozmiar, o jaki poprosisz. Każdy przebieg zapisuje też, co Twoja aplikacja ma z każdym plikiem zrobić. Wiersz poleceń i okno, darmowe i otwarte, działające wyłącznie na Twojej maszynie.
Darmowe i otwarte, GPL-3.0. Bez zakładania konta. Binarki nie są jeszcze podpisane, więc system ostrzeże przy pierwszym uruchomieniu - nota wydania mówi dokładnie, czego się spodziewać.
-
20
prawdziwych formatów, każdy otwiera się w programie, do którego należy
-
1 bajt
dokładność każdego zamówionego rozmiaru, nigdy zaokrąglona po cichu
-
0
połączeń z siecią - bez konta, bez telemetrii, bez sprawdzania aktualizacji
Problem
Zrobić jeden plik testowy jest łatwo. Zrobić właściwy tysiąc to już robota
Testujesz oprogramowanie, które przyjmuje pliki od ludzi. Prędzej czy później potrzebujesz:
- PDF-a o rozmiarze dokładnie 10 MB, żeby sprawdzić, czy limit uploadu naprawdę działa
- trzech plików po obu stronach tego limitu, żeby złapać błąd o jeden
- 10 000 plików logów, żeby zobaczyć, co nocne zadanie zrobi z dużym katalogiem
- ZIP-a, który naprawdę zawiera 200 dokumentów, a nie zaślepki z właściwym rozszerzeniem
- pliku 4 GB, bez trzymania pliku 4 GB w repozytorium
- tych samych danych testowych na laptopie i na serwerze budującym, co do bajta
To właśnie zastępuje. Powstało dla inżynierów QA, automatyzacji testów i każdego, kogo kod ma za sobą formularz uploadu, import danych, parser albo limit miejsca.
Czym to się wyróżnia
Inne generatory kończą na bajtach. Ten odpowiada na pytanie, które naprawdę zadaje test
Katalog plików zostawia Cię z decyzją, co każdy z nich ma właściwie udowodnić. Tutaj każdy przebieg
zapisuje obok plików manifest.json - zwykłą listę wszystkiego, co powstało, a przy
każdej pozycji zadeklarowane oczekiwanie.
Załóżmy, że Twój endpoint przyjmuje 1 MB. Poproś o trzy pliki leżące na tej granicy:
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
| Plik | Bajtów | System powinien | Bo |
|---|---|---|---|
1mb_under_1b.pdf | 1048575 | przyjąć | mieści się w limicie |
1mb_at_limit.pdf | 1048576 | przyjąć | sam limit jest dozwolony |
1mb_over_1b.pdf | 1048577 | odrzucić | size_limit |
Trzy pliki, trzy różne odpowiedzi, w postaci czytelnej dla maszyny. Test czyta manifest, zamiast żebyś pisał asercje ręcznie:
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"]
Tam, gdzie odpowiedź zależy od Twojej własnej polityki, manifest to mówi
Zapisuje unspecified, zamiast wymyślać oczekiwanie. Generator, który zgaduje,
produkuje fałszywe błędy, a zestaw testów, który krzyczy bez powodu, zostaje wyłączony.
Szybki start
Trzy polecenia, żeby zobaczyć, jak to działa
-
Zrób plik
Jeden PNG, dokładnie dwa megabajty:
tfg generate --format png --size 2mb --out ./fixtures -
Zrób dużo plików
Dziesięć tysięcy plików logów, każdy od jednego do ośmiu kilobajtów, z rozmiarami losowanymi z ziarna, więc jutro dostaniesz ten sam zestaw. Każdy przebieg dostaje własny katalog - manifest jest jedynym zapisem tego, co przebieg zapisał, więc narzędzie odmawia nadpisania go drugim:
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs -
Sprawdź je, a potem usuń
verifymówi, że nic się nie ruszyło.cleanupusuwa dokładnie to, co zostało zapisane, i nic poza tym:tfg verify ./logs/manifest.json tfg cleanup ./logs/manifest.json --yes
Rozmiary liczą się po 1024, tak jak pokazuje je menedżer plików, więc 2mb znaczy
2097152 bajty. Zwykła liczba bajtów też zadziała. Dokumentacja
opisuje przepisy, manifest i kody wyjścia.
Co dostajesz
Zbudowane pod zestaw, który chodzi bez nadzoru
-
Dokładny rozmiar, co do bajta
Poproś o 10485761 bajtów i tyle dostaniesz. Rozmiar nieosiągalny dla formatu to błąd z powodem, nigdy plik o innym rozmiarze.
-
20 prawdziwych formatów
Nie zera z doklejonym rozszerzeniem. Wygenerowany PNG otwiera się w przeglądarce obrazów, DOCX w Wordzie, a ZIP się rozpakowuje. Każdy format jest sprawdzany niezależnym czytnikiem, zanim trafi do wydania.
-
Manifest, który jest wyrocznią testu
Ścieżka, rozmiar, SHA-256, format, ziarno, wersja narzędzia - i to, co system ma z plikiem zrobić.
-
Powtarzalność
Ten sam przepis i ziarno dają te same bajty na każdej maszynie. Commituj mały przepis YAML zamiast dużych plików binarnych.
-
Dwie powierzchnie, jeden silnik
Wiersz poleceń zrobiony pod CI i okno do testów eksploracyjnych. Żadne nie jest okrojoną wersją drugiego, a test porównuje je możliwość po możliwości.
-
Całkowicie offline
Bez konta, bez chmury, bez telemetrii, bez sprawdzania aktualizacji. Binarka wiersza poleceń nie ma w ogóle wkompilowanej obsługi sieci.
Pobieranie
Wybierz wersję dla swojego systemu
Rozpakuj archiwum i uruchom. tfg to wiersz poleceń, a tfg-gui to okno.
Nie ma instalatora i nie trzeba niczego dokładać do systemu.
| System | Wiersz poleceń | Okno |
|---|---|---|
| Windows | amd64, arm64 |
amd64 |
| Linux | amd64, arm64 |
amd64 |
| macOS | arm64 |
arm64 |
Binarki nie są podpisane
System ostrzeże przy pierwszym uruchomieniu. Nota wydania mówi dokładnie, co pokaże każdy system
i dlaczego. Każde archiwum jest wypisane w pliku SHA256SUMS.txt na stronie wydania,
więc możesz sprawdzić, co pobrałeś.
Darmowe i otwarte, GPL-3.0. Bez zakładania konta. Binarki nie są jeszcze podpisane, więc system ostrzeże przy pierwszym uruchomieniu - nota wydania mówi dokładnie, czego się spodziewać.
Uczciwy zakres
Gdzie to dziś jest
Wersja 0.1.0. Narzędzie, które się przechwala, kosztuje popołudnie, więc oto stan faktyczny.
Działa od początku do końca: 20 formatów, przepisy, presety,
okno, generate, validate, verify, cleanup,
zestawy graniczne, zawartość archiwów, zakresy rozmiarów, ustawienia formatów, manifesty i wszystkie
kody wyjścia.
Czego jeszcze nie ma: pięciu zaplanowanych formatów - 7z,
tiff, webp, mp3 i mp4. Katalog presetów ma na
razie jedną pozycję. Część kluczy przepisu jest rozpoznawana i odrzucana komunikatem, że nie ma ich
w tej wersji, zamiast być po cichu ignorowana. Binarki nie są podpisane.
Znalazłeś błąd albo potrzebujesz formatu? Zgłoszenia są otwarte, tak samo jak dyskusja o tym, co powstanie następne.