K6Facil é um framework que simplifica a criação e execução de testes de performance usando k6. Ele permite que você defina seus testes de carga usando arquivos JSON simples, sem precisar escrever código JavaScript diretamente.
- Node.js (versão 16 ou superior)
- K6 instalado no sistema
Linux (usando Homebrew):
brew install k6
Windows (usando Chocolatey):
choco install k6
Outras opções de instalação: Documentação oficial do K6
- Clone o repositório:
git clone https://github.com/shardqa/k6facil.git
cd k6facil
- Instale as dependências:
npm install
- Faça o link do comando global:
npm link
k6facil/
├── bin/
├── src/
│ ├── configs/
│ ├── lib/
│ ├── scripts/
│ └── tests/
│ ├── examples/ # Exemplos de testes para referência
│ └── user-tests/ # Testes do usuário (ignorado pelo git)
├── .gitignore
├── package.json
└── README.md
- Crie seu arquivo JSON de teste na pasta
src/tests/user-tests/
. Exemplo (src/tests/user-tests/teste.json
):
{
"endpoint": {
"url": "https://api.exemplo.com/endpoint",
"method": "GET",
"headers": {
"Content-Type": "application/json",
"Accept": "*/*"
}
},
"loadTest": {
"startVUs": 1,
"maxVUs": 5,
"stages": [
{ "duration": "30s", "target": 5 }
],
"thresholds": {
"http_req_duration": ["p(95)<500"],
"http_req_failed": ["rate<0.01"]
}
}
}
- Execute o teste usando o caminho completo:
k6facil src/tests/user-tests/teste.json
Nota: A pasta src/tests/user-tests/
está no .gitignore
para evitar que tokens e credenciais sejam acidentalmente commitados.
-
endpoint: Configurações da API a ser testada
url
: URL completa do endpointmethod
: Método HTTP (GET, POST, PUT, DELETE)headers
: Headers da requisiçãobody
: Corpo da requisição (para POST/PUT)
-
loadTest: Configurações do teste de carga
startVUs
: Número inicial de usuários virtuaismaxVUs
: Número máximo de usuários virtuaisstages
: Configuração das etapas do testethresholds
: Critérios de sucesso do teste
{
"endpoint": {
"url": "https://api.exemplo.com/users",
"method": "GET",
"headers": {
"Accept": "*/*"
}
},
"loadTest": {
"startVUs": 1,
"maxVUs": 5,
"stages": [
{ "duration": "30s", "target": 5 }
],
"thresholds": {
"http_req_duration": ["p(95)<500"]
}
}
}
{
"endpoint": {
"url": "https://api.exemplo.com/users",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer seu-token-aqui"
},
"body": {
"name": "Usuario Teste",
"email": "usuario@teste.com"
}
},
"loadTest": {
"startVUs": 1,
"maxVUs": 3,
"stages": [
{ "duration": "1m", "target": 3 }
],
"thresholds": {
"http_req_duration": ["p(95)<500"],
"http_req_failed": ["rate<0.01"]
}
}
}
Os thresholds definem os critérios de sucesso do seu teste:
http_req_duration
: Tempo de resposta das requisições- Exemplo:
"p(95)<500"
- 95% das requisições devem responder em menos de 500ms
- Exemplo:
http_req_failed
: Taxa de falha aceitável- Exemplo:
"rate<0.01"
- menos de 1% das requisições podem falhar
- Exemplo:
Após a execução, o k6facil mostrará:
- Estatísticas de execução
- Status dos thresholds
- Métricas de performance
O teste será considerado bem-sucedido se todos os thresholds forem atendidos.
- Fork o projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request