Introdução
Testes de carga são essenciais para validar o desempenho de aplicações web e garantir que elas possam lidar com o tráfego esperado sem comprometer a experiência do usuário. O K6 é uma ferramenta poderosa, simples de usar e muito popular para realizar esse tipo de teste, permitindo simular milhares de usuários interagindo com sua aplicação de forma simultânea.
Por Que Realizar Testes de Carga?
Antes de mergulharmos na instalação e no uso do K6, é importante entender a importância dos testes de carga:
• Identificação de Gargalos de Desempenho: Encontrar pontos de falha antes que eles afetem seus usuários.
• Validação de Escalabilidade: Verificar se o sistema pode crescer sem comprometer a performance.
• Aperfeiçoamento de Recursos: Identificar quais recursos consomem mais CPU, memória ou tempo de resposta.
• Apoio ao Dimensionamento: Ajudar na escolha do tipo de infraestrutura necessária para sustentar a carga.
Instalação do K6
Para MacOS
Se você está usando MacOS, a maneira mais rápida de instalar o K6 é via Homebrew:
brew install k6
Para Linux
Se você usa Linux (Ubuntu, por exemplo), execute os seguintes comandos:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
Para Windows
Se você utiliza Windows e possui o Chocolatey instalado, execute:
choco install k6
Executando um Teste de Carga Simples
Agora que o K6 está instalado, vamos configurar um teste simples de carga. Crie um arquivo chamado loadTest.js com o seguinte conteúdo:
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
stages: [
{ duration: '1m', target: 100 }, // Sobe para 100 usuários em 1 minuto
{ duration: '5m', target: 100 }, // Mantém 100 usuários por 5 minutos
{ duration: '1m', target: 0 }, // Reduz para 0 usuários
],
};
export default function () {
http.get('https://suaapi.com/endpoint');
sleep(1);
}
Explicação do Código:
• stages: Define o comportamento de usuários ao longo do tempo. No exemplo, começamos com 0 usuários e aumentamos gradualmente até 100, mantendo esse número por 5 minutos antes de reduzir a 0 novamente.
• http.get: Realiza uma requisição GET ao endpoint da sua API.
• sleep(1): Pausa de 1 segundo entre as requisições, imitando o comportamento de usuários reais.
Para rodar o teste, use o seguinte comando:
k6 run loadTest.js
Analisando os Resultados
O K6 oferece uma saída detalhada no terminal após a execução do teste. Ela inclui informações como:
• Total de requisições realizadas.
• Taxa de sucesso ou falha das requisições.
• Tempo médio de resposta.
• Utilização de recursos (CPU, memória).
Cenários de Teste Avançados
Agora que você está familiarizado com um teste básico de carga, vamos explorar alguns cenários mais avançados:
- Teste com Diversas URLs
Você pode testar múltiplos endpoints ao mesmo tempo para verificar como sua aplicação se comporta sob diferentes cargas:
export default function () {
http.get('https://suaapi.com/endpoint1');
http.get('https://suaapi.com/endpoint2');
sleep(1);
}
- Teste de Autenticação
Em muitos cenários, você precisa simular usuários autenticados. Para isso, você pode usar o Bearer Token ou cookies:
export default function () {
let authHeaders = { headers: { Authorization: `Bearer ${TOKEN}` } };
http.get('https://suaapi.com/endpoint', authHeaders);
sleep(1);
}
- Teste com Load Testing Variável
O K6 permite alterar dinamicamente o número de usuários de acordo com a situação, o que é útil para simulações mais realistas. Um exemplo disso seria um cenário de pico de tráfego.
export let options = {
stages: [
{ duration: '1m', target: 50 }, // Aumenta para 50 usuários rapidamente
{ duration: '10m', target: 500 }, // Aumenta para 500 usuários por 10 minutos
{ duration: '1m', target: 0 }, // Reduz para 0 rapidamente
],
};
Dicas de Boas Práticas
• Simule Cenários Reais: Evite usar números irrealistas de usuários. Um tráfego realista traz resultados mais confiáveis.
• Mantenha o Monitoramento: Testes de carga podem sobrecarregar sua infraestrutura, então, é importante monitorar os servidores enquanto os testes estão sendo executados.
• Automatize os Testes: Execute testes de carga periodicamente para garantir que sua aplicação continue performando bem conforme o crescimento do tráfego.
• Ajuste as Configurações de stages: Use diferentes fases para simular o comportamento real dos usuários.
Conclusão
O K6 é uma ferramenta robusta e de fácil implementação para realizar testes de carga. Ela ajuda a identificar problemas de desempenho antes que eles se tornem um problema real para os usuários. Ao simular tráfego realista e coletar dados precisos, você pode otimizar sua aplicação e garantir que ela seja capaz de lidar com grandes volumes de acessos simultâneos.
Top comments (0)