Este repositório demonstra, de ponta a ponta, como testar APIs de forma funcional (contrato) e como medir desempenho (carga/estresse) reutilizando os mesmos cenários.
- Funcional/Contrato: testes em Java (Rest Assured) e JavaScript (Jest + Supertest)
- Performance: plano JMeter que consome os mesmos cenários via CSV e gera relatório HTML
- Automação simples: scripts para executar tudo por linha de comando
- Endpoint: URL de um recurso (ex.:
GET https://reqres.in/api/users?page=2) - Contrato: o que esperamos receber (status code, campos, tipos)
- Idempotência: requisições que podem ser repetidas com o mesmo resultado
- Teste funcional: valida o contrato sem concorrência pesada
- Teste de performance: mede latências (P95/P99), throughput e erros sob carga
- Pilar 1 – Contrato: Rest Assured (Java) e Jest/Supertest (JS)
- Pilar 2 – Fluxos: encadeiam endpoints (ex.: criar → consultar)
- Pilar 3 – Performance: JMeter aplica concorrência e mede métricas
- Fonte única:
tests/specs/endpoints.csvetests/specs/bodies/*.json
apache-jmeter-5.3/: distribuição do JMeterscripts/: utilitários para executar testestests/specs/endpoints.csv: lista de cenários (método, URL, body, status)tests/specs/bodies/: payloads JSONtests/rest-assured/: testes Java (Maven/JUnit5/Rest Assured)tests/js/: testes JS (Jest/Supertest)tests/jmeter/reqres.jmx: plano JMeter (CSV/JSON)results/ereports/: saídas geradas (gitignored)
- Java 11+ (ou 8+) no PATH
- Maven (para os testes Java)
- Node.js 18+ (para os testes JS)
Windows (PowerShell):
./scripts/run-functional.ps1Linux/macOS:
bash scripts/run-functional.shEsse passo executa Java/Rest Assured (tests/rest-assured) e JS/Jest (tests/js).
Windows (PowerShell):
./scripts/run.ps1 -Test ./tests/jmeter/reqres.jmxLinux/macOS:
bash scripts/run.sh -t tests/jmeter/reqres.jmxSaídas geradas:
.jtlemresults/AAAAmmdd-HHMMSS.jtl- HTML em
reports/AAAAmmdd-HHMMSS/index.html
Abra o relatório para analisar P50/P90/P95/P99, throughput e taxa de erro.
Arquivo: tests/specs/endpoints.csv
name,method,url,bodyFile,expectedStatus
list_users,GET,https://reqres.in/api/users?page=2,,200
create_user,POST,https://reqres.in/api/users,create_user.json,201
user_details,GET,https://reqres.in/api/users/2,,200bodyFileaponta para JSONs emtests/specs/bodies/- Rest Assured, Jest e JMeter usam esse mesmo CSV/JSON
-
Crie (se necessário) o payload em
tests/specs/bodies/novo.json -
Adicione a linha no
endpoints.csv -
Rode os testes funcionais; se passar, rode o JMeter
- Idempotência e isolamento de dados
- Parametrização por ambiente (URLs, tokens)
- Validação de contrato (schema) quando fizer sentido
- SLAs claros (ex.: erro < 1%, P95 < 500 ms)
PowerShell bloqueou scripts? Rode:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassFalta Maven/Node? Verifique:
mvn -v
node -v
npm -vEste repositório é material de estudo e referência prática sobre testes de API e performance.
Feedbacks e contribuições são muito bem‑vindos!
- Abra um issue com dúvidas, ideias ou problemas
- Envie um PR com melhorias, novos cenários, correções ou docs
- Siga (se possível) Conventional Commits (
docs:,test:,feat:,fix:,chore:) - Antes do PR, rode os testes funcionais e gere o relatório do JMeter
- 2025-08: Estrutura unificada de testes (Java/JS) e carga (JMeter) com CSV compartilhado; guia em português; scripts de execução.
- 2025-08: Limpeza de submódulos antigos e organização do repositório.
- 2023–2024: Uso do JMeter 5.3 como base de experimentos e estudos (exemplos e templates).