Gere arquivos de teste reais no tamanho exato
PDF, PNG, DOCX, ZIP - 26 formatos no total, e cada um é um arquivo real que abre no programa a que pertence, com exatamente o tamanho que você pediu. Cada execução também registra o que sua aplicação deve fazer com cada arquivo. Linha de comando e janela de desktop, gratuito e de código aberto, funcionando inteiramente na sua máquina.
Gratuito e de código aberto, GPL-3.0. Sem cadastro. Os downloads de Windows e macOS são assinados e iniciam sem aviso.
-
26
formatos reais, cada um abre no programa a que pertence
-
1 byte
a precisão de cada tamanho que você pede, nunca arredondado em silêncio
-
0
conexões para lugar nenhum - sem conta, sem telemetria, sem verificação de atualizações
O problema
Fazer um arquivo de teste é fácil. Fazer os mil certos é a parte tediosa
Você está testando um software que aceita arquivos de pessoas. Mais cedo ou mais tarde, você precisa de:
- um PDF de exatamente 10 MB, para descobrir se o limite de upload é real
- os três arquivos dos dois lados desse limite, para pegar erros de um a mais ou a menos
- 10.000 arquivos de log, para ver o que o job noturno faz quando a pasta é grande
- um ZIP que realmente contém 200 documentos, não uma casca com a extensão certa
- um arquivo de 4 GB, sem guardar um arquivo de 4 GB no seu repositório
- as mesmas fixtures no seu notebook e no servidor de build, byte a byte
É isso que isto substitui. Foi feito para engenheiros de QA, automação de testes e qualquer pessoa cujo código tenha atrás um formulário de upload, uma rotina de importação, um parser ou uma cota de armazenamento.
O que o torna diferente
Outros geradores param nos bytes. Este responde ao que o seu teste realmente pergunta
Uma pasta de arquivos ainda deixa você decidindo o que cada um deve provar. Cada execução aqui
escreve um manifest.json ao lado dos arquivos - uma lista simples de tudo que foi
produzido e, para cada entrada, uma expectativa declarada.
Digamos que seu endpoint de upload permita 1 MB. Peça os três arquivos que ficam nessa linha:
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
| Arquivo | Bytes | Seu sistema deve | Porque |
|---|---|---|---|
1mb_under_1b.pdf | 1048575 | aceitar | está dentro do limite |
1mb_at_limit.pdf | 1048576 | aceitar | o próprio limite é permitido |
1mb_over_1b.pdf | 1048577 | rejeitar | size_limit |
Três arquivos, três respostas diferentes, em forma legível por máquina. Seu teste lê o manifesto em vez de você escrever as asserções à mão:
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"]
Onde a resposta depende da sua própria política, o manifesto diz isso
Ele registra unspecified em vez de inventar uma expectativa. Um gerador que adivinha
produz falhas falsas, e uma suíte que dá alarme falso acaba desligada.
Presets
Escolha a pergunta, receba o conjunto inteiro
Um preset é um conjunto de arquivos de teste desenhado em torno de uma pergunta de teste, para que você não precise descobrir quais arquivos provam o quê. Cada um tem uma página dizendo o que costuma encontrar, o que há no conjunto e cada configuração que aceita.
-
Um arquivo válido e tão pequeno quanto o formato permite passa?
empty-and-minimal -
Tratamento de nomes de arquivo
Meu sistema vai guardar, mostrar e devolver um nome de arquivo que ele não esperava?
filename-handling -
Um limite de tamanho é aplicado exatamente onde foi declarado?
size-boundaries -
A minha importação de tabelas sobrevive ao que ferramentas reais exportam?
tabular-import -
Meu leitor sabe em que codificação um arquivo está, ou está adivinhando?
text-encoding -
Meu formulário de upload aceita o que deve e recusa o resto?
upload-validation
Início rápido
Três comandos para ver funcionando
-
Faça um arquivo
Um PNG, exatamente dois megabytes:
tfg generate --format png --size 2mb --out ./fixtures -
Faça muitos arquivos
Dez mil arquivos de log, cada um entre um e oito kilobytes, com os tamanhos sorteados a partir do seed para que amanhã dê o mesmo conjunto. Dê a cada execução o seu próprio diretório - o manifesto é o único registro do que uma execução escreveu, então a ferramenta se recusa a escrever um segundo por cima:
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs -
Verifique e depois remova
verifydiz que nada mudou.cleanupremove exatamente o que foi escrito e mais nada:tfg verify ./logs/manifest.json tfg cleanup ./logs/manifest.json --yes
Os tamanhos contam de 1024 em 1024, como o seu gerenciador de arquivos faz, então 2mb
significa 2097152 bytes. Uma contagem simples de bytes também funciona. A
documentação cobre receitas, o manifesto e os códigos de
saída.
O que você recebe
Feito para uma suíte que roda sem supervisão
-
Tamanho exato, ao byte
Peça 10485761 bytes e receba exatamente isso. Um tamanho que um formato não alcança é um erro com um motivo, nunca um arquivo de tamanho errado.
-
26 formatos reais
Não são zeros de preenchimento com uma extensão. Um PNG gerado abre em um visualizador de imagens, um DOCX abre no Word, um ZIP extrai. Cada um é verificado com leitores independentes antes de ser liberado.
-
Um manifesto que é um oráculo de teste
Caminho, tamanho, SHA-256, formato, seed, versão da ferramenta - e o que seu sistema deve fazer com o arquivo.
-
Reproduzível
Mesma receita e mesmo seed, mesmos bytes, em qualquer máquina. Versione uma pequena receita YAML em vez de fixtures binárias grandes.
-
Duas interfaces, um motor
Uma linha de comando feita para CI e uma janela de desktop para testes exploratórios. Nenhuma é uma versão reduzida da outra, e um teste compara as duas capacidade por capacidade.
-
Totalmente offline
Sem conta, sem nuvem, sem telemetria, sem verificação de atualizações. O binário da linha de comando não tem nenhuma pilha de rede compilada nele.
Download
Escolha a versão para o seu sistema
Descompacte o arquivo e execute. tfg é a linha de comando e tfg-gui é a
janela de desktop. Não há instalador e nada para adicionar à sua máquina.
| Sistema | Linha de comando | Janela de desktop |
|---|---|---|
| Windows | amd64, arm64 |
amd64 |
| Linux | amd64, arm64 |
amd64 |
| macOS | arm64 |
arm64 |
O que é assinado e o que não é
Os downloads de Windows e macOS são assinados, então iniciam sem aviso de desenvolvedor
desconhecido. Os de Linux não são, porque o Linux de desktop não tem equivalente para
assiná-los. Cada arquivo está listado em verify-SHA256SUMS.txt na página de
releases, para que você possa conferir o que baixou.
Gratuito e de código aberto, GPL-3.0. Sem cadastro. Os downloads de Windows e macOS são assinados e iniciam sem aviso.