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)