DEV Community

Marlo Henrique
Marlo Henrique

Posted on • Edited on

4

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:

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay