Feather Background Waves Background
Ir para o conteúdo principal
Feather Background Waves Background
Feather Background Waves Background
  1. JMeter em Português/

Funções Nativas de JMeter (Parte 1)

·6 minutos
intermediário - This article is part of a series.

functions1

I decidiu deixar a tradução literária nesse caso porque acredito que a ideia original permanece intacta. No entanto, em algumas partes, adicionei mais informações que eu obtive desde que este artigo foi publicado quase um ano atrás. Aqui você pode ver versão original do post no inglês.

A alguns tempos atrás, quando eu estava começando com o JMeter, pensei que deveria escrever minhas próprias funções para todos os recursos necessários para desenvolver em meus scripts. Eu encontrava-me desenvolvendo funções Beanshell para cada desafio enfrentado, porque as funções do JMeter não eram tão populares ou “bons” para tarefas básicas. Mas versão após versão, essas funções cresceram em número e capacidade, se tornando soluções compreensíveis para uma ampla variedade de requisitos de teste.

Estas dias, eu não posso criar um script JMeter sem usar pelo menos algumas funções nativas. São tão populares que também são usadas em perguntas de emprego ou entrevistas técnicas. Neste post, espero poder descrever alguns dos seus principais usos e como aproveitar ao máximo.

O que é uma função do JMeter?>

O que é uma função do JMeter? #

Uma função do JMeter é um cálculo que retorna um valor ou resultado. Essas funções podem abranger várias necessidades, como informações de teste, lógica, variáveis e/ou propriedades, entre outras.

Quais são as funções de JMeter?>

Quais são as funções de JMeter? #

As funções de JMeter podem ser usadas em qualquer componente do plano de teste, que segue a ordem de execução execução da ordem. Ou seja, a ordem de execução de JMeter deve passar por aquele componente para executar a função.

Primeiro, precisamos agrupar as funções por tipo de função ou funcionalidade. Isso nos dará uma ideia melhor de onde usá-las. Também forneceremos alguns exemplos que revelarão como usar essas funções e complementar sua aprendizagem.

Aqui estão os funções do JMeter que abordaremos neste post:

functions2

1.- Funções de Informação>

1.- Funções de Informação #

As funções de informação são particularmente úteis para identificar dados sobre o thread em execução ou grupo de threads, o endereço IP do gerador de carga ou seu nome da máquina, ou obter a hora local em múltiplas formatos. Eu diria que essas funções são a lei quando se debuga um script. Por exemplo, a função log permite enviar dados de qualquer nível de detalhes para o arquivo jmeter.log via mensagens.

Os dados retornados por muitas funções são obtidos diretamente do serviço de contexto JMeter, que é como uma API contendo todos os testes e informações sobre as threads. Se você quiser obter um valor específico de uma thread ou grupo de threads, pode acessar a informação dela, cada uma delas contém sua própria context onde todas suas informações estão armazenadas.

Exemplos de funções de informações:

FunçãoExemploResultado esperado
threadNum${__threadNum}Número numérico para o ID da thread em execução
threadGroupName${__threadGroupName}String para o nome do grupo de threads em execução
samplerName${__samplerName}Nome da sampler em execução
machineIP${__machineIP}Endereço IP do gerador de carga ou computador
machineName${__machineName}Nome do gerador de carga ou computador
time${__time}Exibe a hora local do gerador de carga ou computador em formato EPOCH
time${__time(dd-MM-YYYY,)}Exibe a hora local do equipamento ou gerador de carga na forma dd-MM-YYYY
timeShift${__timeShift(dd-MM-YYYY,,P4D,,)}Baseado no horário local do equipamento, 4 dias são adicionados, em formato dd-MM-YYYY
timeShift${__timeShift(dd-MM-YYYY,,P-6D,,)}Baseado no horário local do equipamento, 6 dias são subtraídos, em formato dd-MM-YYYY
log${__log(Hello World)}Exibe “Hello World” na escala de INFO definida
logn${__logn(${TESTSTART.MS},ERR)}Exibe o início do teste, na escala ERR

Nós incluímos imagens dos exemplos e você pode baixar o arquivo abaixo:

information-setup

information-response

O script de JMeter com exemplos de funções de informações requer Java 1.8+, JMeter 5+ e plugins de JMeter.

2.- Funções de Arquivo de Entrada>

2.- Funções de Arquivo de Entrada #

Quando lidamos com volumes grandes de dados, é sempre recomendável usar arquivos estáticos. Esses valores podem ser entregues a JMeter via arquivos CSV; cada linha será lida e segmentada para salvar os valores em variáveis. Não sou um fã de usar arquivos CSV ou similares para scripts; prefero gerar minhas próprias informações aleatórias.

Talvez haja situações em que não temos outra opção ou estamos limitados a usar entradas externas. No entanto, devemos evitar o uso excessivo desses soluções porque se o input for grande, pode consumir muitos recursos, particularmente RAM. Por outro lado, você pode acessá-los linha por linha com as funções CSVRead ou todo o arquivo com a função StringFromFile.

Exemplos de funções do arquivo de entrada:

FunçãoExemploResultado Esperado
StringFromFile${__StringFromFile(file.txt,RowAsString,,)}Lê o arquivo file.txt e salva a primeira linha na variável RowAsString, incrementada por iteração
FileToString${__FileToString(filex.txt,FileAsString,,)}Lê o arquivo file.txt e salva sua totalidade em uma variável chamada FileAsString
CSVRead${__CSVRead(file.csv,0)}Retorna a coluna 0 do primeiro linha da tabela file.csv, incrementada por iteração
XPath${__XPath(file.xml,..//[@id=book]/div/a)}Retorna o valor da avaliação do Xpath na estrutura de arquivo file.xml
StringToFile${__StringToFile(file.out,“Hello World”)}Escreve “Hello World” no arquivo file.out, variáveis também podem ser escritas
3.- Funções de Cálculo>

3.- Funções de Cálculo #

Cálculos matemáticos ou valores aleatórios são frequentemente necessários para nosso lógica de negócios. Por exemplo, pense em quantas passarelas ou ingressos de concerto vamos comprar. Isso poderia facilmente ser resolvido gerando um valor aleatório entre 1 e 10. No entanto, essa função tem suas limitações; eu não recomendo fortemente para a geração de um número de cartão de crédito de 16 dígitos. Há outras funções que faria isso muito mais facilmente e eficientemente, como RandomString.

Se você está lidando com datas ou eventualmente precisar calcular uma data no futuro dentro de um período de tempo, mas dentro de um intervalo de 10 a 60 dias, a função RandomDate é a solução ideal. Eu pessoalmente uso essa função em conjunto com a função timeShift para calcular uma data dentro do intervalo de 10 a 60 dias no futuro e seria algo assim.

      ${__RandomDate(MM/dd/YYYY,${__timeShift(MM/dd/YYYY,,P10D,,)},${__timeShift(MM/dd/YYYY,,P60D,,)},,)}

Adicionalmente, se você precisar acompanhar um número específico de iterações ou solicitações para um serviço ou produto, o contador pode ser usado dentro da requisição para manter uma contagem sequencial dos ocorrencias ou invocações. Este variável pode crescer por meio de threads ou grupos de threads, dependendo das nossas necessidades.

Exemplos de funções de cálculo:

FunçãoExemploResultado Esperado
Contador${__counter(TRUE,C1)}Contagem de execução por thread
Contador${__counter(FALSE,C2)}Contagem de execução por grupo de threads, opcional definido
Digesto${__digest(MD5,Test1234,,,)}Digesto da texto “Test1234” usando MD5
Digesto${__digest(SHA-256,Test1234,mysalt,,)}Digesto do texto “Test1234” usando SHA-256 com um sal
Soma de inteiros${__intSum(10,20,IntSum)}Exibe a soma de dois números inteiros, também salva o resultado na variável IntSum
Soma de longos${__longSum(65535,65535,LongSum)}Exibe a soma de dois números inteiros, também salva o resultado na variável LongSum
Data aleatória${__RandomDate(,,2021-01-01,,)}Gera uma data aleatória entre hoje e 2021-01-01
Valor aleatório múltiplos de variáveis${__RandomFromMultipleVars(Var1|Var2,)}Escolhe um valor aleatório e exibe o resultado
String aleatória${__RandomString(16,1234567890,)}Gera uma string de 16 caracteres, com um valor aleatório escolhido em cada posição
String aleatória${__RandomString(16,abcdefghijkl,)}Gera uma string de 16 caracteres, com um valor aleatório escolhido em cada posição
UUID${__UUID()}Gera um UUID aleatório, seja 16 bytes ou 128 bits

Nós incluímos imagens dos exemplos e você pode baixar o arquivo abaixo:

calculations-setup
calculation-response

O script de JMeter com exemplos de funções de cálculo requer Java 1.8+, JMeter 5+ e plugins de JMeter.

Continuação a seguir…



intermediário - This article is part of a series.