Este projeto demonstra uma arquitetura de testes de performance completa, utilizando K6 para execução, Prometheus para coleta de métricas e Grafana para visualização, tudo orquestrado por uma pipeline Jenkins em um ambiente Docker.
|
Francinaldo Batista |
Marcos Castro |
Nathália Teixeira |
Vitória Cabral |
- 🔧 Binários xK6 Utilizados
- 📦 Início Rápido com Docker
- ⚙️ Configurando o Jenkins
- 🚦 Preparando o Ambiente de Teste
- 📊 Configurando o Dashboard no Grafana
- 🚀 Executando e Verificando
- 📁 Estrutura do Projeto
- ⚡ Maneiras de executar os testes
Para estender as funcionalidades do K6, o projeto utiliza os seguintes binários customizados:
- xK6 Faker: Para gerar dados de teste dinamicamente.
- xK6 Prometheus: Para enviar métricas de performance para o Prometheus.
Siga estes passos para configurar e executar o ambiente de testes.
- Construa a imagem customizada do Jenkins e inicie a stack de monitoramento (Prometheus + Grafana):
docker compose up -d
Acesse a interface do Jenkins em http://localhost:8080.
- Login Inicial: Siga as instruções para realizar o primeiro login. A senha de administrador inicial pode ser encontrada nos logs do seu contêiner Jenkins.
- Criar a Pipeline: No Jenkins, crie um novo item do tipo Pipeline.
- Nome:
k6-smoke - URL do Repositório:
https://github.com/Batissta/k6-performance-testing.git - Caminho do Jenkinsfile:
ci/smoke/Jenkinsfile
- Nome:
Para que os testes se conectem à sua aplicação (sem alterar nada no código), é necessário que sua API esteja em execução no endereço http://localhost:3333.
- A pipeline do Jenkins foi configurada para passar a variável de ambiente
--env BASE_URI=http://host.docker.internal:3333, direcionando o tráfego do contêiner de testes para a sua máquina local. - Se sua API não estiver em execução localmente, altere a
BASE_URIno arquivo de configuração do seu projeto para o endereço correto.
Acesse o Grafana em http://localhost:3000 para visualizar as métricas.
-
Adicione a Fonte de Dados Prometheus:
- Clique em "Connections" e depois em "Add new data source".
- Procure e selecione
Prometheus. - No campo nome, coloque
Prometheus. - No campo URL, adicione:
http://prometheus:9090 - Salve e teste a conexão.
-
Importe um Dashboard:
- Busque por templates no site oficial do Grafana (preferencialmente modelos para Prometheus + K6).
- Copie o ID do dashboard escolhido.
- No menu lateral do Grafana, navegue para "Dashboards" e clique em "Import".
Como alternativa, deixei um dashboard configurado para copiar e colar no caminho:
util/grafana-dashboard.json.
Nessa nova página, clique para criar um novo dashboard e clique em importar um dashboard.
Você deve se encontrar nesta página

O id do seu dashboard, deve ser colocado nesse campo

Agora, clique em Load, selecione o data source que você criou anteriormente e importe o dashboard.
-
Execute a Pipeline: No Jenkins, vá para a pipeline
k6-smokee clique em "Build Now".

-
Verifique os Dados: Após a execução, os dados começarão a aparecer no seu dashboard do Grafana em
http://localhost:3000.
└── batissta-k6-performance-testing/
├── readme.md
├── docker-compose.yml
├── Dockerfile
├── prometheus.yml
├── ci/
│ ├── endurance/
│ │ └── Jenkinsfile
│ ├── load/
│ │ └── Jenkinsfile
│ ├── smoke/
│ │ └── Jenkinsfile
│ └── stress/
│ └── Jenkinsfile
├── config/
│ ├── login/
│ │ └── .gitkeep
│ └── signUp/
│ ├── signUp.js
│ └── signUpGrafana.js
├── data/
│ ├── dynamic/
│ │ └── signUpDatapool.js
│ └── static/
│ └── .gitkeep
├── simulation/
│ └── signUp.js
├── support/
│ ├── base/
│ │ ├── checks.js
│ │ ├── constants.js
│ │ ├── environment.js
│ │ ├── imports.js
│ │ └── metrics.js
│ ├── libs/
│ │ └── .gitkeep
│ └── services/
│ ├── baseRest.js
│ └── requests/
│ ├── loginRequest.js
│ └── signUpRequest.js
└── tests/
├── enduranceTests.js
├── loadTests.js
├── smokeTests.js
└── stressTests.js
- Maneira básica, utilizada para debug na automação dos testes. Com um terminal aberto na raiz do repositório (a api para testes deve estar configurada), execute:
k6 run tests/smokeTests.js- Segunda forma de execução para um debug mais detalhado e com uma maior visibilidade. Com um terminal aberto na raiz do repositório (a api para testes deve estar configurada), execute:
K6_CLOUD_TOKEN=<SEU_TOKEN_GRAFANA> k6 cloud run --local-execution tests/smokeTests.js- A última forma prevista nessa documentação, serve para executar os testes de maneira mais profissional, com integração
CI/CDcom Jenkins e monitoramento, através de containers, comPrometheus e Grafana.
Essa maneira foi documentada acima no 📦 Início Rápido com Docker.
Documentação criada por Francinaldo Batista.
