Linguagens de Programação no JMeter
Tabela de conteúdos
Novato - This article is part of a series.
Eu publiquei um artigo na empresa onde trabalho Flood.io sobre funções nativas de JMeter, porém, existem outras funções extendidas que podem ser obtidas instalando plugins de JMeter, essas funções, como as nativas, são escritas em linguagem Java e aqui você pode ver o código-fonte para ambos:
- Funcionalidades Nativas ( https://github.com/apache/jmeter/tree/master/src/functions/src/main/java/org/apache/jmeter/functions)
- Funcionalidades Adicionais ( https://github.com/undera/jmeter-plugins/tree/master/plugins/functions/src/main/java/kg/apc/jmeter/functions)
De forma teórica, qualquer um com o conhecimento adequado poderia programar suas próprias funções em Java, compilar o código e obter o arquivo de saída jar. Depois disso, podemos repetir a mesma tática descrita para instalar os plugins do JMeter e copiar o jar para a pasta /lib/ext/. Nesse jeito útil, teríamos nossa função disponível no programa. Maravilhoso, não é?
A ideia principal não era toda ruim; mesmo assim, eu fiz algumas alterações ao primeiro plugin do Maciej Zaleski’s Websocket muitos anos atrás. Este método inusitado não é o único jeito de colocar código no núcleo da lógica. JMeter suporta 4 linguagens de programação nativamente:
- BeanShell ( https://en.wikipedia.org/wiki/BeanShell)
- JavaScript ( https://es.wikipedia.org/wiki/JavaScript)
- JEXL ( https://en.wikipedia.org/wiki/Unified_Expression_Language)
- Groovy ( https://es.wikipedia.org/wiki/Groovy_(lenguaje_de_programaci%C3%B3n))
BeanShell #
Desde sua origem, o JMeter integrava seu contemporâneo BeanShell como parte de suas características. Naquela época, era um linguagem rápida e flexível com sintaxe semelhante a Java. Em 2003, o projeto começou a perder energia até se estabilizar em sua versão estável 1.3. Já são 16 anos desde sua última publicação, e apesar de algumas tentativas para reviver e resgatar, apenas pequenas melhorias foram alcançadas nas versões beta. Eu não recomendo usar BeanShell a menos que você tenha um script JMeter antigo que não pudesse ser migrado para uma versão mais atual. Embora eu creia que as razões para não usá-lo sejam principalmente de obsolescência, podemos ainda ver pessoas que têm alguma apreciação por ele e continuam a gerar utilidades para BeanShell.
Javascript #
JavaScript ou ECMAScript é outra linguagem de programação interpretada, não muito popular porque Beanshell capturou a atenção por muitos anos, mas é bastante completa. Alguns componentes do JMeter usam essa linguagem definidamente, como Controller Seletor se Basear em Seu Valor e Controller Seletor de Loop While, para a avaliação da expressão, ao contrário do que poderíamos pensar, essa linguagem não é uma das preferências, é mesmo raro encontrar exemplos de JavaScript com JMeter na nuvem.
JEXL #
JEXL é uma linguagem de expressões simples baseada na Apache Velocity projeto, além dos definições do JSTL 1.1 e do JSP 2. É basicamente um pequeno e poderoso motor que avalia declarações, pessoalmente eu uso muito para avaliar limites e dividir as tarefas críticas em scripts, prefiro usar JEXL em conjunto com Controle de Fluxo se ao invés de usar Controller de Trafego, porque em grandes volumes de carga muitos recursos podem ser consumidos para manter as proporções designadas, na verdade, em um grande escopo a primeira solução é mais eficiente.
Java #
A popular choice for developers is Java. The first release was in 1995, when the JDK (Java Development Kit) was introduced. Since then, Java has become a widely used programming language with numerous applications across various industries.
Some of its main attributes include:
- É uma linguagem orientada a objetos
- Compila diretamente para bytecodes, como rápido que o código Java
- Você pode usar a “funcionalidade de cache”
- Ela tem melhorias periódicas e atualizações
Nós não podíamos comparar Groovy com Javascript ou Beanshell, simplesmente porque não há sentido em fazer isso. As características, velocidade e comunidade de Groovy são realmente impressionantes. Eu não recomendaria usar qualquer outra linguagem de programação além de Groovy em JMeter. Planejo fazer uma comparação da eficiência e do tempo em um futuro post para que os benefícios de Groovy ao se referir à otimização dos recursos estejam mais claros.