Como Realizar Testes de Carga com k6

Lucas Pereira de Souza - Aug 3 - - Dev Community

Image description

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
Enter fullscreen mode Exit fullscreen mode

Linux:

sudo apt-get update
sudo apt-get install k6
Enter fullscreen mode Exit fullscreen mode

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);
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

  1. Instale e configure o Prometheus seguindo a documentação oficial.
  2. Configure o Grafana para obter dados do Prometheus.
  3. 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);
}
Enter fullscreen mode Exit fullscreen mode

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!

. . . . . . . . . . . . . . . . . .