Testing Files Generator

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ć.

Okno programu Testing Files Generator przygotowane do zapisania wsadu plików testowych
Okno programu przygotowane do zapisania wsadu plików. Za wierszem poleceń stoi ten sam silnik.

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:

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
PlikBajtówSystem powinienBo
1mb_under_1b.pdf1048575przyjąćmieści się w limicie
1mb_at_limit.pdf1048576przyjąćsam limit jest dozwolony
1mb_over_1b.pdf1048577odrzucić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

  1. Zrób plik

    Jeden PNG, dokładnie dwa megabajty:

    tfg generate --format png --size 2mb --out ./fixtures
  2. 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
  3. Sprawdź je, a potem usuń

    verify mówi, że nic się nie ruszyło. cleanup usuwa 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

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.