DEV Community

Marlo Henrique
Marlo Henrique

Posted on • Edited on

Entendendo as métricas do K6 - Parte 1

Um dos principais objetivos quando realizamos um teste de performance é obter indicadores e métricas que permitam avaliarmos o desempenho de nossa aplicação.

No entanto, muito além de obter as métricas, precisamos entender as métricas geradas e reportadas pela CLI ou outra ferramenta de visualização.

Nesse artigo entenderemos na pratica o significado de cada uma das métricas default geradas pelo K6.

Image description

Tipo de métricas coletadas📋

O K6 realiza a coleta de métricas em diferentes camadas, sempre respeitando as chamadas métricas integradas padrões, que por default sempre são coletadas pela ferramenta, e agregando novas métricas conforme pontos como: protocolo utilizado, camada da aplicação analisada.

Importante sempre salientar que todas as métricas coletadas pelo k6, se enquadram em 4 tipo de métricas:

  • Contadores/Counters: somam valores.
  • Medidores/Gauges: rastreiam os valores menores, maiores e mais recentes.
  • Taxas/Rates: rastreiam a frequência com que um valor diferente de zero ocorre.
  • Tendência: calcula estatísticas para vários valores como: média, moda ou percentil.

          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: .\parte_1.js
     output: -

  scenarios: (100.00%) 1 scenario, 5 max VUs, 40s max duration (incl. graceful stop):
           * default: 5 looping VUs for 10s (gracefulStop: 30s)


     data_received........: 0 B 0 B/s
     data_sent............: 0 B 0 B/s
     iteration_duration...: avg=1s min=1s med=1s max=1.01s p(90)=1s p(95)=1.01s
     iterations...........: 50  4.961148/s
     vus..................: 5   min=5      max=5
     vus_max..............: 5   min=5      max=5
Enter fullscreen mode Exit fullscreen mode

Métricas integradas padrão📊

Independente do protocolo que seja utilizado para o teste, o K6 sempre coletara as seguintes métricas padrões:

Métrica Tipo Descrição
vus_max Medidor Número máximo possível de usuários virtuais
iteration Contador O número agregado de vezes que as VUs executaram o script JS
iteration_duration Tendência O tempo para completar uma iteração completa, incluindo o tempo gasto nas etapas de configuração e desmontagem
dropped_iterations Contador O número de iterações que não foram iniciadas devido à falta de VUs ou falta de tempo
data_received Contador A quantidade de dados recebidos durante as iterações
data_sent Contador A quantidade de dados enviados
checks Contador A taxa de verificações bem-sucedidas

Entre as métrica citadas acima, uma das principais duvidas costuma ser em relação as iteraçãos.

Basicamente, uma iteração corresponde a cada execução do seu script, e sempre é executada por um usuário virtual(VU). Uma iteração pode produzir resultados diferentes e levar um tempo diferente dependendo do desempenho do script que foi criado.

Observe o script abaixo:

import {sleep} from 'k6';

export const options = {
    vus:5,
    duration: '10s',
    preAllocatedVUs: 5,
}

export default function(){
    const BASE_URL = 'https://test-api.k6.io/public/crocodiles';
    sleep(1);
}
Enter fullscreen mode Exit fullscreen mode

Quando examinamos a fase de configuração, podemos observar que nosso script tem uma duração máxima de 10 segundos e é executado por 5 VUs.

Ao controlar o intervalo entre as execuções de cada VU com um intervalo de sleep de 1 segundo e assegurar que todas as VUs estejam devidamente alocadas e disponíveis, podemos chegar a um resultado simplificado:

momento vus tempo iterações
0 0 0s 0
1 5 1s 5
2 5 2s 10
3 5 3s 15
4 5 4s 20
5 5 5s 25
6 5 6s 30
7 5 7s 35
8 5 8s 40
9 5 9s 45
10 5 10s 50

Vale destacar um ponto sobre as iterações, Você pode controlar a quantidade de requisições que serão realizadas na fase de execução utilizando a propriedade iterations no escopo de configuração. Por exemplo, se deseja que seu teste seja encerrado após 25 iterações, você pode definir a propriedade iterations: 25.

Conclusão💖

Como podemos observar o K6 já nos fornece uma serie de métricas default extremamente relevantes para o cotidiano.

Está é uma serie de publicações buscando trazer para vocês as principais métricas do K6. Na sequência, abordaremos as métricas HTTP que são geradas pelo k6.

Gostou do conteúdo e quer saber mais sobre testes de performance com K6? Então não deixe de conferir meu curso na Udemy:

Top comments (0)