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.
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
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);
}
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)