Générez de vrais fichiers de test à la taille exacte
PDF, PNG, DOCX, ZIP - 26 formats au total, et chacun est un vrai fichier qui s'ouvre dans le logiciel qui lui correspond, à la taille exacte que vous avez demandée. Chaque exécution note aussi ce que votre application doit faire de chaque fichier. Ligne de commande et fenêtre de bureau, gratuit et open source, entièrement sur votre machine.
Gratuit et open source, GPL-3.0. Aucune inscription. Les téléchargements Windows et macOS sont signés et démarrent sans avertissement.
-
26
vrais formats, chacun s'ouvrant dans le logiciel qui lui correspond
-
1 octet
la précision de chaque taille demandée, jamais arrondie en silence
-
0
connexions vers où que ce soit - pas de compte, pas de télémétrie, pas de vérification de mises à jour
Le problème
Fabriquer un fichier de test est facile. Fabriquer les mille bons est la partie fastidieuse
Vous testez un logiciel qui reçoit des fichiers de la part de personnes. Tôt ou tard, il vous faut :
- un PDF de exactement 10 Mo, pour savoir si la limite d'envoi est réelle
- les trois fichiers de part et d'autre de cette limite, pour attraper les erreurs d'un
- 10 000 fichiers journaux, pour voir ce que fait la tâche de nuit quand le dossier est gros
- un ZIP qui contient vraiment 200 documents, pas une coquille vide avec la bonne extension
- un fichier de 4 Go, sans garder un fichier de 4 Go dans votre dépôt
- les mêmes fixtures sur votre portable et sur le serveur de build, à l'octet près
C'est ce que cela remplace. C'est conçu pour les ingénieurs QA, l'automatisation de tests et tous ceux dont le code a derrière lui un formulaire d'envoi, une routine d'import, un analyseur ou un quota de stockage.
Ce qui le distingue
Les autres générateurs s'arrêtent aux octets. Celui-ci répond à ce que votre test demande vraiment
Un dossier de fichiers vous laisse encore décider ce que chacun est censé prouver. Chaque exécution
écrit ici un manifest.json à côté des fichiers - une simple liste de tout ce qui a
été produit et, pour chaque entrée, une attente déclarée.
Admettons que votre point d'envoi accepte 1 Mo. Demandez les trois fichiers situés sur cette ligne :
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
| Fichier | Octets | Votre système doit | Parce que |
|---|---|---|---|
1mb_under_1b.pdf | 1048575 | accepter | il est dans la limite |
1mb_at_limit.pdf | 1048576 | accepter | la limite elle-même est permise |
1mb_over_1b.pdf | 1048577 | refuser | size_limit |
Trois fichiers, trois réponses différentes, sous forme lisible par machine. Votre test lit le manifeste au lieu que vous écriviez les assertions à la main :
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"]
Quand la réponse dépend de votre propre politique, le manifeste le dit
Il consigne unspecified plutôt que d'inventer une attente. Un générateur qui devine
produit de faux échecs, et une suite qui crie au loup finit par être désactivée.
Préréglages
Choisissez la question, obtenez tout le jeu
Un préréglage est un jeu de fichiers de test conçu autour d'une question de test, pour que vous n'ayez pas à chercher quels fichiers prouvent quoi. Chacun a une page qui dit ce qu'il trouve d'habitude, ce que contient le jeu et chaque réglage qu'il accepte.
-
Un fichier valide et aussi petit que le format le permet passe-t-il ?
empty-and-minimal -
Mon système va-t-il stocker, afficher et restituer un nom de fichier auquel il ne s'attendait pas ?
filename-handling -
Une limite de taille est-elle appliquée exactement là où elle est déclarée ?
size-boundaries -
Mon import de tableaux résiste-t-il à ce qu'exportent les vrais outils ?
tabular-import -
Mon lecteur sait-il dans quel encodage est un fichier, ou devine-t-il ?
text-encoding -
Mon formulaire d'envoi accepte-t-il ce qu'il doit et refuse-t-il le reste ?
upload-validation
Démarrage rapide
Trois commandes pour le voir fonctionner
-
Créer un fichier
Un PNG, exactement deux mégaoctets :
tfg generate --format png --size 2mb --out ./fixtures -
Créer beaucoup de fichiers
Dix mille fichiers journaux, chacun entre un et huit kilooctets, avec des tailles tirées de la graine pour que demain donne le même jeu. Donnez à chaque exécution son propre répertoire - le manifeste est la seule trace de ce qu'une exécution a écrit, donc l'outil refuse d'en écrire un second par-dessus :
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs -
Les vérifier, puis les supprimer
verifyvous dit que rien n'a bougé.cleanupsupprime exactement ce qui a été écrit et rien d'autre :tfg verify ./logs/manifest.json tfg cleanup ./logs/manifest.json --yes
Les tailles se comptent par 1024, comme le fait votre gestionnaire de fichiers, donc
2mb signifie 2097152 octets. Un nombre d'octets brut fonctionne aussi. La
documentation couvre les recettes, le manifeste et les codes de
sortie.
Ce que vous obtenez
Conçu pour une suite qui tourne sans surveillance
-
Taille exacte, à l'octet près
Demandez 10485761 octets et obtenez exactement cela. Une taille qu'un format ne peut pas atteindre est une erreur avec une raison, jamais un fichier de mauvaise taille.
-
26 vrais formats
Pas des zéros de remplissage avec une extension. Un PNG généré s'ouvre dans une visionneuse d'images, un DOCX s'ouvre dans Word, un ZIP se décompresse. Chacun est vérifié avec des lecteurs indépendants avant d'être livré.
-
Un manifeste qui fait office d'oracle de test
Chemin, taille, SHA-256, format, graine, version de l'outil - et ce que votre système doit faire du fichier.
-
Reproductible
Même recette et même graine, mêmes octets, sur n'importe quelle machine. Commitez une petite recette YAML plutôt que de gros fixtures binaires.
-
Deux interfaces, un seul moteur
Une ligne de commande conçue pour la CI et une fenêtre de bureau pour les tests exploratoires. Aucune n'est une version amputée de l'autre, et un test les compare fonctionnalité par fonctionnalité.
-
Entièrement hors ligne
Pas de compte, pas de cloud, pas de télémétrie, pas de vérification de mises à jour. Le binaire en ligne de commande n'a aucune pile réseau compilée dedans.
Téléchargement
Choisissez la version pour votre système
Décompressez l'archive et lancez-la. tfg est la ligne de commande et
tfg-gui est la fenêtre de bureau. Il n'y a pas d'installateur et rien à ajouter à
votre machine.
| Système | Ligne de commande | Fenêtre de bureau |
|---|---|---|
| Windows | amd64, arm64 |
amd64 |
| Linux | amd64, arm64 |
amd64 |
| macOS | arm64 |
arm64 |
Ce qui est signé, et ce qui ne l'est pas
Les téléchargements Windows et macOS sont signés, ils démarrent donc sans avertissement sur un
développeur inconnu. Ceux de Linux ne le sont pas, car Linux de bureau n'a pas d'équivalent
pour les signer. Chaque archive est listée dans verify-SHA256SUMS.txt sur la page
des versions, pour que vous puissiez vérifier ce que vous avez téléchargé.
Gratuit et open source, GPL-3.0. Aucune inscription. Les téléchargements Windows et macOS sont signés et démarrent sans avertissement.