DEV Community

Cover image for Utilizando módulos do xk6 com k6
Marlo Henrique
Marlo Henrique

Posted on • Edited on

2

Utilizando módulos do xk6 com k6

O K6 é uma ferramenta que oferece uma série de módulos oficiais de alto desempenho. Esses módulos foram cuidadosamente analisados pela equipe responsável pelo desenvolvimento da ferramenta, garantindo sua qualidade e confiabilidade.

Esses módulos são frequentemente nativos do K6 e podem ser facilmente acessados usando importações como k6/http e k6/data, entre outros exemplos.

Nesse artigo veremos como podemos utilizar o xk6, ferramenta de linha de comando que permite adicionar módulos personalizados a ferramenta.

Entendendo o xk6📚

Até algumas versões atras, o K6 permitia o uso apenas de módulos oficiais nativos da ferramenta e também módulos JS remotos. No entanto, em certas situações, pode ser necessário utilizar um módulo JS não otimizado da biblioteca jslib.k6, o que pode resultar em alguns problemas graves, tais como:

  • Falta de suporte para APIs do sistema em JavaScript.
  • Quedas de desempenho devido ao tempo de execução do JavaScript.

Módulos oficiais superam as limitações acima, pois se beneficiam de excelente desempenho e da flexibilidade de usar bibliotecas do Go.

O xk6 é uma estrutura que possibilita a extensão do binário do K6, oferecendo oportunidades cruciais para ferramentas de código aberto, como:

  • Permitir que a comunidade crie seus próprios módulos personalizados.
  • Facilitação na contribuição da comunidade para o desenvolvimento de novos módulos.

Essa flexibilidade proporcionado pelo XK6, promove a colaboração e o crescimento contínuo do ecossistema do K6, permitindo que os usuários estendam e personalizem as funcionalidades da ferramenta.

Dois exemplos práticos de módulos que nasceram de iniciativas independentes e hoje fazem parte do código do K6 são os módulos k6/experimental/browser e k6/experimental/websockets.

Pré-requisitos📑

Instalando o XK6🔨

Primeiramente, vamos nos certificar que o Go está instalado corretamente. Em qualquer ferramenta de linha de comando de sua preferencia utilize o comando go version para verificar a versão do Go instalada:

go version go1.19.5 windows/amd64
Enter fullscreen mode Exit fullscreen mode

Esse tutorial será feito em maquina com sistema windows, utilizando o git bash.

Para adicionar o xk6 binário ao seu Go path, utilize o seguinte comando:

go install go.k6.io/xk6/cmd/xk6@latest
Enter fullscreen mode Exit fullscreen mode

Caso você esteja enfrentando problemas relacionados à desativação de módulos pelo GO111MODULE, você pode resolver executando o seguinte comando: go env -w GO111MODULE=on. Isso irá ativar os módulos Go e permitir o correto funcionamento do gerenciamento de dependências.

O comando acima instalará o binário xk6 em $GOPATH/bin. É importante garantir que o GOPATH esteja configurado corretamente. Caso deseje configurar o GOPATH, você pode utilizar o seguinte comando ao iniciar o seu shell: export PATH=$(go env GOPATH)/bin:$PATH.

Para obter mais informações sobre o GOPATH, consulte o seguinte material: gopath.

Utilizando o xk6😁

Com o xk6 instalado, temos duas oportunidades à nossa disposição: a criação de plugins personalizados para o K6 ou a utilização de plugins customizados desenvolvidos pela comunidade. Neste tutorial, seguiremos o segundo caminho e utilizaremos um plugin alternativo de dashboard de relatórios.

Para instalação do plugin xk6-dashboard podemos utilizar o seguinte comando:

xk6 build --with github.com/szkiba/xk6-dashboard@latest
Enter fullscreen mode Exit fullscreen mode

Agora que o plugin está instalado, temos uma nova e poderosa opção para gerar relatórios.

vamos utilizar o seguinte script de exemplo para execução e visualização desse relatório:

import http from 'k6/http';
import { check } from 'k6';

export const options = {
    vus: 5,
    duration: '10s',
    thresholds: {
        http_req_failed: ['rate < 0.05'],
    }
}

export default function(){
    const BASE_URL = 'https://test-api.k6.io/public/crocodiles/';

    const res = http.get(BASE_URL);

    check(res, {
        'status code 200': (r) => r.status === 200
    });
}

Enter fullscreen mode Exit fullscreen mode

Para construir e disponibilizar o dashboard utilizando o plugin xk6-dashboard em uma interface web, podemos utilizar o seguinte comando para execução:

k6 run --out dashboard=open test.js
Enter fullscreen mode Exit fullscreen mode

Observe que estamos passando um flag de saída --out, informando que nossa métricas devem estar disponíveis no xk6-dashboard.

Em seguida, uma nova guia será aberta em seu navegador, permitindo que você acompanhe em tempo real uma série de indicadores da execução atual:

Image description

Image description

Image description

Conclusão💖

O xk6 permite que a comunidade contribua para o amadurecimento e crescimento do K6 com a disponibilização de novos módulos para a ferramenta.

Podemos ver que o xk6-dashboard nos proporciona uma outra visão de nossas métricas.

Outros módulos xk6 valem a pena serem estudados, entre eles:

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 Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

👋 Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay