Teste de carga OpenAPI
É uma cilada,
Bino!
Aponte para um contrato OpenAPI, ajuste o
.cilada.toml e o Cilada já sai na estrada: gera os
cenários, manda a carga com o Locust e te entrega um relatório
completo. Tudo sem escrever um caso de teste.
Tipagem estrita, sintaxe moderna e zero gambiarras de compatibilidade.
O contrato OpenAPI é a fonte da verdade. Você não escreve caso nenhum.
Engine de carga battle-tested, sem camada extra de abstração no meio do caminho.
Código aberto, sem dependências proprietárias e livre para usar em qualquer projeto.
Por que o Cilada?
Montar uma suíte de carga do zero leva tempo. O Cilada lê o contrato, entende os endpoints e gera os cenários pra você. É só ajustar o TOML e apertar o gatilho.
Contrato como fonte da verdade
Lê o OpenAPI online e gera os casos com exemplos, defaults, enums e valores de limite. Atualizou o contrato? Na próxima execução os casos já refletem as mudanças.
Seleção granular de endpoints
include_paths e exclude_paths aceitam padrões glob como
/patients/*. Controle explícito dos verbos HTTP via enabled_methods.
Modo dry-run
Valide o contrato, a seleção e os casos gerados sem mandar um único byte de carga real. Perfeito para rodar no CI antes do disparo de verdade.
Segredos por variável de ambiente
Use ${CILADA_TOKEN} no TOML e injete via CI ou cofre de secrets. Headers sensíveis usam
entrada oculta no modo interativo.
Resumo consolidado ao final
Sempre que o teste termina, você vê o total de requisições, falhas, tempos mín/méd/máx e o breakdown por método e código HTTP.
Modo não-interativo
--non-interactive não solicita valores de headers, mas pede confirmação antes de executar
sem headers obrigatórios.
Relatórios que prestam
Depois da carga, o Cilada entrega dois formatos de relatório prontos para você analisar, compartilhar ou jogar num dashboard.
Relatório HTML interativo HTML
O Locust gera um relatório visual completo com gráficos de
requisições por segundo, tempo de resposta ao longo do tempo e
tabela de estatísticas por endpoint. Configure o caminho com
html_report no TOML e ele fica salvo automaticamente.
Estatísticas em CSV CSV
Quatro arquivos CSV: estatísticas por endpoint, histórico por
janela de tempo, falhas e exceções. Configure csv_prefix
no TOML para persistir os arquivos no diretório que quiser, ou
deixe em branco e o Cilada usa um diretório temporário e limpa
tudo ao fim.
Como funciona
Do contrato ao relatório em quatro etapas. Sem configuração elaborada, sem servidor de métricas extra.
Lê o contrato
Busca o OpenAPI da URL configurada, valida a estrutura e resolve a base URL antes de qualquer outra coisa.
Gera os cenários
Cria variações de payload usando exemplos, defaults, enums e limites. Campos opcionais são removidos em algumas variações.
Manda a carga
Passa os cenários ao Locust. Cada requisição sorteia aleatoriamente um caso. A tabela nativa do Locust exibe o andamento.
Entrega os relatórios
Resumo no console, relatório HTML interativo e CSVs com todas as estatísticas, por endpoint e por janela de tempo.
Configuração simples, controle total
Um único arquivo .cilada.toml controla tudo: URL do
OpenAPI, headers de autenticação, verbos habilitados, paths
incluídos e excluídos, parâmetros do Locust e caminhos dos
relatórios.
Segredos nunca vão para o arquivo. Use
${NOME_DA_VARIAVEL} e injete via CI ou cofre de
secrets do pipeline.
# .cilada.toml [api] openapi_url = "https://api.exemplo.com/static/swagger.json" verify_tls = true timeout_seconds = 30.0 [api.headers] Authorization = "Bearer ${CILADA_TOKEN}" [test] enabled_methods = ["GET", "HEAD", "OPTIONS"] exclude_paths = ["/health", "/metrics"] cases_per_operation = 3 [locust] users = 20 spawn_rate = 5.0 run_time = "1m" headless = true csv_prefix = "reports/cilada" html_report = "reports/cilada.html"
Segurança operacional primeiro
O exemplo padrão habilita só GET, HEAD e
OPTIONS. Verbos destrutivos como POST,
PUT, PATCH e DELETE devem ser
ativados só em ambientes isolados, com dados descartáveis e
autorização explícita. Nunca versione tokens no TOML. Use
${NOME_DA_VARIAVEL} e injete pelo cofre do pipeline.
Início rápido
Três passos para sair do zero ao primeiro relatório de carga.
Prepare o ambiente
python3 -m venv .venv source .venv/bin/activate pip3 install cilada
Requer Python 3.11+. Funciona em qualquer virtualenv.
Configure o TOML
cilada config init
Crie a configuração inicial e ajuste a URL do OpenAPI, os headers e os segredos conforme necessário.
Execute
# validação sem carga real cilada run --dry-run # disparo de carga cilada run
Comece com o dry-run para validar o contrato e os cenários antes de mandar carga de verdade para o servidor.