Testing Files Generator
Português (Brasil)

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.

A janela de desktop do Testing Files Generator, pronta para escrever um lote de arquivos de teste
A janela de desktop, pronta para escrever um lote de arquivos. O mesmo motor roda por trás da linha de comando.

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:

É 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
ArquivoBytesSeu sistema devePorque
1mb_under_1b.pdf1048575aceitarestá dentro do limite
1mb_at_limit.pdf1048576aceitaro próprio limite é permitido
1mb_over_1b.pdf1048577rejeitarsize_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.

Todos os presets, e como eles se relacionam com receitas

Início rápido

Três comandos para ver funcionando

  1. Faça um arquivo

    Um PNG, exatamente dois megabytes:

    tfg generate --format png --size 2mb --out ./fixtures
  2. 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
  3. Verifique e depois remova

    verify diz que nada mudou. cleanup remove 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

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.