DEV Community

Cover image for Como Realizar Testes de Carga com k6
Lucas Pereira de Souza
Lucas Pereira de Souza

Posted on

Como Realizar Testes de Carga com k6

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!

Top comments (0)