Os testes de carga são essenciais para garantir que suas aplicações web possam lidar com um grande número de usuários simultâneos sem comprometer o desempenho. Uma das ferramentas mais populares para isso é o k6, uma solução open-source desenvolvida para ser eficiente, simples e extensível. Neste post, vamos explorar como utilizar o k6 para realizar testes de carga.
1. Instalando o k6
Antes de começar, você precisa instalar o k6. Abaixo estão os passos para diferentes sistemas operacionais:
Windows:
Baixe o instalador a partir do site oficial e siga as instruções.
macOS:
brew install k6
Linux:
sudo apt-get update
sudo apt-get install k6
2. Escrevendo um Teste de Carga Básico
Um script básico de teste de carga com o k6 é escrito em JavaScript. Vamos criar um script simples que testa a resposta de uma API.
Crie um arquivo chamado test.js
com o seguinte conteúdo:
import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
stages: [
{ duration: '30s', target: 20 }, // Simula 20 usuários por 30 segundos
{ duration: '1m', target: 50 }, // Aumenta para 50 usuários por 1 minuto
{ duration: '10s', target: 0 }, // Reduz gradualmente para 0 usuários
],
};
export default function () {
let res = http.get('https://jsonplaceholder.typicode.com/posts/1');
check(res, { 'status was 200': (r) => r.status == 200 });
sleep(1);
}
3. Executando o Teste de Carga
Para executar o teste, abra um terminal na pasta onde seu script está salvo e execute:
k6 run test.js
Você verá a saída no terminal mostrando o progresso do teste, incluindo métricas como o número de requisições por segundo, o tempo de resposta, e se houve falhas.
4. Analisando os Resultados
Depois de executar o teste, o k6 fornece um resumo das métricas coletadas. Aqui estão algumas das métricas mais importantes:
-
http_reqs
: O número total de requisições HTTP feitas. -
http_req_duration
: O tempo que levou para cada requisição ser concluída. -
vus
: O número de usuários virtuais ativos durante o teste.
Você pode configurar o k6 para exportar os resultados para formatos diferentes, como JSON, para uma análise mais detalhada. Por exemplo, para exportar os resultados para um arquivo JSON:
k6 run --out json=results.json test.js
5. Integrando com o Grafana e Prometheus
Para uma visualização mais avançada e em tempo real, você pode integrar o k6 com o Grafana e o Prometheus. Isso permite criar dashboards que mostram métricas de desempenho ao vivo.
- Instale e configure o Prometheus seguindo a documentação oficial.
- Configure o Grafana para obter dados do Prometheus.
- No script de teste do k6, adicione o seguinte para enviar métricas para o Prometheus:
import { Counter, Trend, Rate } from 'k6/metrics';
export let ErrorRate = new Rate('errors');
export let Duration = new Trend('duration');
export let RPS = new Counter('rps');
export default function () {
let res = http.get('https://jsonplaceholder.typicode.com/posts/1');
let checkRes = check(res, { 'status was 200': (r) => r.status == 200 });
ErrorRate.add(!checkRes);
Duration.add(res.timings.duration);
RPS.add(1);
sleep(1);
}
Conclusão
Os testes de carga com o k6 são uma maneira poderosa e flexível de garantir que sua aplicação pode lidar com o tráfego esperado. Com uma instalação simples, scripts de teste em JavaScript e integração com ferramentas como Grafana e Prometheus, você pode obter uma visão detalhada do desempenho da sua aplicação e garantir que está preparada para o sucesso.
Experimente criar seus próprios testes de carga e veja como o k6 pode ajudar a melhorar a performance das suas aplicações!