DEV Community

Marlo Henrique
Marlo Henrique

Posted on • Updated on

Realizando requisições com query params com K6

Uma das formas mais comuns de realização de requisições HTTP para consulta de dados é utilizando parâmetros de consulta, também conhecidos como query params.

Essa é uma forma simples e eficiente de passar dados para uma página da Web ou API por meio da URL.

Nesse artigo veremos como podemos utilizar query params em testes de performance com K6.

Image description

Mão na massa👩‍💻

Pré-requisitos📑

Conhecendo a lib URL🧐

O K6 oferece uma variedade de bibliotecas oficiais otimizadas para realizar testes de desempenho usando a jslib k6. Um desses módulos é o URL.

Esse módulo permite construir URLs com várias informações, incluindo query params.

Script de exemplo📚

Vamos modificar o script a seguir para que a nossa URL seja criada contendo parâmetros de consulta:

import http from 'k6/http';

export default function () {
  const base_url = https://k6.io';

  const res = http.get(base_url);
}
Enter fullscreen mode Exit fullscreen mode

Nesse script de exemplo teremos apenas as fases de inicialização e execução.

Modificando nosso script🔨

O ponto de partida é adicionarmos o módulo URL a fase de inicialização do script. Para fazer isso, você pode simplesmente incluir a seguinte linha ao seu script:

import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js';
Enter fullscreen mode Exit fullscreen mode

Uma vez que o modulo URL foi adicionado na fase de inicialização, podemos realizar as modificações no script na fase de execução.

Agora, vamos criar nossa base_url utilizando o módulo URL. Para fazer isso, você pode realizar a seguinte modificação no seu script:

const base_url = new URL('https://k6.io');
Enter fullscreen mode Exit fullscreen mode

Como nossa base_url é uma constante do tipo URL, podemos aproveitar todas as funções disponibilizadas pelo módulo, incluindo a searchParams, que nos permite buscar e manipular os parâmetros presentes na base_url. Além disso, podemos adicionar novos parâmetros facilmente usando o a função base_url.searchParams.append('chave', 'valor').

Parâmetros de consulta são anexados ao final de uma URL após um (?), e consistem em pares chave-valor separados por um (&).

Vamos adicionar alguns parâmetros de consulta a nossa base_url, sendo eles os seguintes:

  url.searchParams.append('utm_medium', 'organic');
  url.searchParams.append('utm_source', 'test');
  url.searchParams.append('multiple', ['foo', 'bar']);
Enter fullscreen mode Exit fullscreen mode

Por fim, só precisamos fazer uma pequena modificação na url fornecida no http.get. Atualmente, estamos passando o objeto URL diretamente, mas para corrigir isso, basta acessar a propriedade toString() da seguinte forma:

const res = http.get(base_url.toString());
Enter fullscreen mode Exit fullscreen mode

E então a base_url informada seria a seguinte:

https://k6.io?utm_medium=organic&utm_source=test&multiple=foo%2Cbar
Enter fullscreen mode Exit fullscreen mode

Script pós modificações📋

Nosso script de exemplos após a modificações para a inclusão de parâmetros de consulta ficou da seguinte forma:

import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js';
import http from 'k6/http';

export default function () {
  const base_url = new URL('https://k6.io');

  url.searchParams.append('utm_medium', 'organic');
  url.searchParams.append('utm_source', 'test');
  url.searchParams.append('multiple', ['foo', 'bar']);

  const res = http.get(base_url.toString());
}

Enter fullscreen mode Exit fullscreen mode

Conclusão💖

A jslib k6 oferece uma ampla gama de soluções que ajudam os testadores a conceber suas soluções de testes de desempenho de forma ideal. 😎

Os query params foram apenas um dos aspectos abordados, no entanto, o módulo é bastante robusto, permitindo a personalização de vários outros elementos da URL, como hash, host, porta, protocolo e muito mais. Esses pontos são detalhadamente explicados na documentação oficial do módulo URL.😄

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)