Entendendo as métricas do K6 - Parte 3
Tags: testing, go, performance, k6
Published: 2023-12-17 20:23:06


Durante esta série de publicações em que exploramos as métricas geradas pelo K6, tivemos a oportunidade de aprofundar nosso entendimento sobre métricas em diferentes protocolos, assim como compreender os conceitos fundamentais associados a cada indicador.

Na [parte 1](https://dev.to/marlo2222/entendendo-as-metricas-do-k6-parte-1-4kig), discutimos as métricas padrão geradas pelo K6 e esclarecemos um dos conceitos mais cruciais da ferramenta: as iterações.

Já na [parte 2](https://dev.to/marlo2222/entendendo-as-metricas-do-k6-parte-2-3053), abordamos as métricas dos principais protocolos de rede atualmente suportados pela ferramenta, incluindo HTTP, gRPC e WebSockets.

Nesse ultimo artigo exploraremos as métricas geradas pelo [K6 Browser](https://k6.io/docs/using-k6-browser/overview/), modulo para a realização de testes de performance na camada web.

## Métricas web💻

O módulo K6 browser gera métricas baseadas nos [Core Web Vitals](https://web.dev/explore/learn-core-web-vitals?hl=pt-br), uma iniciativa que busca oferecer diretrizes unificadas sobre os principais indicadores de qualidade para garantir uma experiência ideal do usuário na Web.

O conjunto atual da Core web vitals se concentra nos seguintes aspectos da experiência do usuário (carregamento, interatividade e estabilidade visual) e as seguinte métricas.

- Maior exibição de conteúdo (LCP): Avalia o tempo de carregamento. Para uma boa experiência do usuário, é crucial que o LCP ocorra em até 2,5 segundos após o início do carregamento da página.
- Latência na primeira entrada (FID): Mensura a interatividade. Para uma experiência satisfatória do usuário, as páginas devem ter um FID de 100 milissegundos ou menos, garantindo uma resposta rápida às interações.
- Mudança de layout cumulativa (CLS): Avalia a estabilidade visual. Uma boa experiência do usuário é alcançada quando as páginas mantêm um CLS de 0.1 ou menos, evitando movimentos inesperados ou desconcertantes na interface.

Dentre as métricas web primárias produzidas pelo K6, algumas das principais são:
<table>
  <tr>
    <th>Métrica</th>
    <th>Descrição</th>
  </tr>
  <tr>
    <td>browser_web_vital_lcp</td>
    <td>informa o tempo de renderização da maior imagem ou bloco de texto visível na janela de visualização em relação ao momento em que a página começou a ser carregada.</td>
  </tr>
 <tr>
    <td>browser_web_vital_fid</td>
    <td>mede o tempo entre a primeira interação do usuário com uma página, até o momento em que o navegador consegue começar a processar manipuladores de eventos em resposta a essa interação.</td>
  </tr>
  <tr>
    <td>browser_web_vital_cls</td>
    <td>medida do maior burst de pontuações de troca de layout para cada mudança inesperada que ocorre durante toda a vida útil de uma página.</td>
  </tr>
<tr>
    <td>browser_web_vital_ttfb</td>
    <td>mede o tempo entre a solicitação de um recurso e quando o primeiro byte de uma resposta começa a chegar.</td>
</tr>
<tr>
    <td>browser_web_vital_fcp</td>
    <td>mede o tempo entre o início do carregamento da página e o momento em que qualquer parte do conteúdo dela é renderizada na tela.</td>
</tr>
<tr>
    <td>browser_web_vital_inp</td>
    <td>avalia a capacidade de resposta geral de uma página às interações do usuário observando a latência de todas as interações de clique, toque e teclado que ocorrem durante a vida útil de uma visita do usuário a uma página.</td>
</tr>
</table>

Como mencionado anteriormente, algumas das métricas web do K6 estão relacionadas aos Core Web Vitals, especificamente os indicadores: _browser_web_vital_lcp, browser_web_vital_fid e browser_web_vital_cls_. Para alcançar resultados positivos nessas métricas, é recomendável visar o percentil P(75) para os valores esperados de LCP, FID e CLS.

| Métrica                          | Bom           | Ruim         | Percentil |
|----------------------------------|---------------|--------------|------------|
| (LCP) | ≤ 2.500 ms    | > 4.000 ms   | 75         |
| (FID)| ≤ 100 ms    | > 300 ms     | 75         |
| (CLS)| ≤ 0,1      | > 0,25       | 75         |


Além dos Core Web Vitals, as métricas web do K6 também trazem resultados para outros pontos vitais como: [browser_web_vital_inp](https://web.dev/articles/inp?hl=pt-br), [browser_web_vital_fcp](https://web.dev/articles/fcp?hl=pt-br) e [browser_web_vital_ttfb](https://web.dev/articles/ttfb?hl=pt-br).

> Vale ressaltar que, como as métricas mencionadas não são classificadas como Core Web Vitals, não é estritamente obrigatório que os sites atinjam o nível 'bom' nessas métricas, contanto que isso não influencie negativamente a pontuação das métricas fundamentais para a experiência do usuário(LCP, FID, CLS).

## Conclusão💖
Atualmente, o K6 se destaca como uma ferramenta versátil para realizar testes de desempenho tanto na camada web quanto na camada de backend, proporcionando a flexibilidade de estratégias híbridas.

O módulo web do K6 oferece análises detalhadas sobre o desempenho de nossa aplicação web, permitindo identificar gargalos críticos que podem afetar a experiência do usuário.

A pagina do [Core Web Vitals](https://web.dev/explore/learn-core-web-vitals?hl=pt-br), traz uma serie de recomendações de otimizações para: 

- [Otimizar a mudança de layout cumulativa](https://web.dev/articles/optimize-cls?hl=pt-br)
- [Otimizar a maior exibição de conteúdo](https://web.dev/articles/optimize-lcp?hl=pt-br)
- [Otimizar a latência na primeira entrada](https://web.dev/articles/optimize-fid?hl=pt-br)

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:

- [Teste de performance com K6](https://www.udemy.com/course/teste-de-performance-com-k6/?referralCode=95CCD8BC9F22A2A96BDA) ✨