Conhecendo o K6 para o teste de carga

Daniel Jesus
Comunidade XP
6 min readSep 26, 2021

--

Fala Nerds e fala Coders, neste artigo iremos aprender o uso da ferramenta k6 para a realização de teste de carga.

Iremos abordar os seguintes tópicos:

  • O que é o k6?
  • Casos de uso da ferramenta k6?
  • Implementação do k6 para os testes de carga

O que é o k6?

O k6 é uma ferramenta de teste de carga de código aberto e gratuita, com isso será capaz de detectar regressões de desempenho e problemas mais cedo, permitindo construir sistemas mais resilientes e aplicativos robustos. Portanto o k6 utiliza a linguagem JavaScript para a criação dos cenários de teste

Casos de uso da ferramenta k6?

O k6 é utilizado por desenvolvedores, engenheiros de controle de qualidade e DevOps.

Eles usam a ferramenta com objetivo de testar o desempenho de APIs, microservices e sites. Casos de uso comum da ferramenta k6 são:

  • Teste de carga

O k6 é otimizado para consumo mínimo de recursos do sistema. É uma ferramenta de alto desempenho projetada para executar testes com alta carga ( testes de pico , estresse , absorção ) em ambientes de pré-produção e controle de qualidade.

  • Monitoramento de desempenho

O k6 fornece ótimos primitivos para automação de testes de desempenho . Você pode executar testes com uma pequena quantidade de carga para monitorar continuamente o desempenho de seu ambiente de produção.

Implementação do k6 para os testes de carga

Bom Nerds e Coders, depois de entendermos sobre a ferramenta k6. Agora entraremos no conceito mais técnico para ver na prática como tudo isso funciona.

Pré-requisito:

  • Ter conhecimento da linguagem JavaScript (Js).
  • Instalação do Visual Studio Code

Instalação do K6

No meu caso estou utilizando o sistema operacional Windows e realizei a instalação pelo gerenciador de pacotes Chocolatey pelo seguinte comando abaixo:

Caso o seu sistema operacional seja Mac ou Linux, sugiro entrar no link abaixo para visualizar os procedimentos de instalação sugerido pelo k6:

Criação do projeto

Primeiro, iremos criar uma pasta para nosso projeto novo de k6 em um diretório que você deseja. De acordo com a imagem abaixo criei a pasta chamada “CursoK6”:

Após a criação da pasta do projeto, iremos abrir essa pasta dentro do Visual Studio Code. De acordo com a imagem abaixo:

Clicar na opção Open File
Abrir a pasta criada para o seu projeto

Criação dos cenários de teste de carga

Chegou momento de criarmos nossos cenários de teste de carga, pra isso precisamos de uma API para testar e com isso vou testar uma API que criei usando conceito de arquitetura cebola (Caso você não viu esse post vou deixar nesse link).

API que iremos realizar os testes de carga

Iremos criar uma pasta chamada “scenarios” dentro nosso projeto de acordo com as imagens abaixo:

Após a criação da pasta, iremos incluir um arquivo .js chamado “Get-Customer.js”. De acordo com a imagem abaixo:

Criação do arquivo .js

Esse arquivo será responsável por testar a chamada do endpoint
​”/api​/Customer​/GetCustomer”.

Endpoint GetCustomer

Agora iremos escrever o nosso cenário de teste de carga em JavaScript usando k6. De acordo com imagem abaixo:

Como podemos ver criei alguns contadores de métricas do próprio k6 que são:

  • GetCustomerDuration — variável que representa o tempo em milissegundos para execução do teste
  • GetCustomerFailRate — variável que representa a métrica de porcentagem de falha da requisição.
  • GetCustomerSuccessRate — variável que representa a métrica de porcentagem de sucesso da requisição.
  • GetCustomerReqs — variável que representa a métrica de porcentagem de requisição.

Rate é um objeto para representar uma métrica personalizada que mantém o controle da porcentagem de valores adicionados que não são zero. É uma das quatro métricas personalizadas.

Trend é um objeto para representar uma métrica personalizada que permite o cálculo de diferentes estatísticas sobre os valores adicionados (mínimo, máximo, média ou percentis)

No caso da solicitação de http usamos o código abaixo:

Para concluirmos o nosso cenário de teste de carga, incluímos uma verificação de duração de tempo da requisição do endpoint e com isso colocamos valor máximo que deverá ser executado essa requisição no valor de 4000 ms (convertendo em segundos que equivale a 4 segundos).

Caso passar desse limite máximo de tempo, será enviado uma falha no teste .

Criação do arquivo principal (index.js)

Para finalizar o nosso projeto de teste de carga usando o k6, iremos criar um arquivo principal chamado “index.js” onde iremos rodar todos os cenários de teste de carga. De acordo com imagem abaixo:

Como podemos visualizar no arquivo “index.js” , usei funcionalidade de groups do k6 que permite “agrupar” um grande script de carregamento para ajudar na análise dos resultados dos teste de carga. De acordo com exemplo abaixo:

Executando o teste de carga

Agora chegou momento de realizar o teste de carga em nossa aplicação pra isso iremos abrir o terminal do Visual Studio Code e executar o seguinte comando abaixo:

Como podemos ver estamos rodando o arquivo index.js com 20 usuários virtuais simultâneos (vus)e com uma duração 60 milissegundos (duration). De acordo com a imagem abaixo:

Resultado da execução:

Referências:

Código:

Vídeo:

https://www.youtube.com/watch?v=gqvpco8uF6E

Conclusão

O grande objetivo deste artigo foi mostrar e explicar o funcionamento do k6 para os testes de carga.

Espero que este artigo o ajude a entender claramente como usar o k6 para a criação de teste de carga.

--

--

Comunidade XP
Comunidade XP

Published in Comunidade XP

Aqui você vai encontrar os principais conteúdos de tecnologia, design, dados e produto da XP Inc.

Daniel Jesus
Daniel Jesus

Written by Daniel Jesus

Sênior Software Engineer, Technical Writer and Speaker, Microsoft Certified Professional