18 Introdução

Vários elementos de teste usam propriedades JMeter para controlar seu comportamento. Essas propriedades são normalmente resolvidas quando a classe é carregada. Isso geralmente ocorre antes do início do plano de teste, portanto, não é possível alterar as configurações usando a função __setProperty() .

18.1 Amostradores

Os samplers realizam o trabalho real do JMeter. Cada amostrador (exceto Flow Control Action ) gera um ou mais resultados de amostra. Os resultados da amostra possuem vários atributos (sucesso/falha, tempo decorrido, tamanho dos dados etc.) e podem ser visualizados nos vários listeners.

Solicitação de FTP

Este controlador permite que você envie uma solicitação de "recuperar arquivo" ou "carregar arquivo" de FTP para um servidor FTP. Se você for enviar várias solicitações para o mesmo servidor FTP, considere usar um Elemento de configuração de padrões de solicitação de FTP para não precisar inserir as mesmas informações para cada Controlador Gerador de Solicitação de FTP. Ao baixar um arquivo, ele pode ser armazenado em disco (Arquivo Local) ou nos Dados de Resposta, ou ambos.

A latência é definida para o tempo que leva para fazer login.

Captura de tela do painel de controle da solicitação de FTP
Captura de tela do painel de controle da solicitação de FTP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome do servidor ou IP
Nome de domínio ou endereço IP do servidor FTP.
Sim
Porta
Porta a ser usada. Se for >0 , essa porta específica será usada, caso contrário, o JMeter usará a porta FTP padrão.
Não
Arquivo Remoto:
Arquivo a ser recuperado ou nome do arquivo de destino a ser carregado.
Sim
Arquivo Local:
Arquivo para upload ou destino para downloads (o padrão é o nome do arquivo remoto).
Sim, se carregar (*)
Conteúdo do arquivo local:
Fornece o conteúdo para o upload, substitui a propriedade Arquivo Local.
Sim, se carregar (*)
get(RETR) / put(STOR)
Se deseja recuperar ou fazer upload de um arquivo.
Sim
Usar o modo binário?
Marque isso para usar o modo Binário (padrão ASCII)
Sim
Salvar arquivo em resposta?
Se o conteúdo do arquivo recuperado deve ser armazenado nos dados de resposta. Se o modo for ASCII, o conteúdo ficará visível na Árvore de Resultados da Visualização .
Sim, se estiver baixando
Nome de usuário
Nome de usuário da conta FTP.
Usualmente
Senha
Senha da conta FTP. NB Isso será visível no plano de teste.
Usualmente
^

Solicitação HTTP¶

Este amostrador permite enviar uma solicitação HTTP/HTTPS para um servidor web. Ele também permite controlar se o JMeter analisa ou não arquivos HTML para imagens e outros recursos incorporados e envia solicitações HTTP para recuperá-los. Os seguintes tipos de recursos incorporados são recuperados:

  • imagens
  • applets
  • folhas de estilo (CSS) e recursos referenciados a partir desses arquivos
  • scripts externos
  • quadros, iframes
  • imagens de fundo (corpo, mesa, TD, TR)
  • som de fundo

O analisador padrão é org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser . Isso pode ser alterado usando a propriedade " htmlparser.className " - consulte jmeter.properties para obter detalhes.

Se você for enviar várias solicitações para o mesmo servidor da Web, considere usar um Elemento de configuração de padrões de solicitação HTTP para não precisar inserir as mesmas informações para cada solicitação HTTP.

Ou, em vez de adicionar solicitações HTTP manualmente, você pode usar o gravador de script de teste HTTP(S) do JMeter para criá-las. Isso pode economizar seu tempo se você tiver muitas solicitações HTTP ou solicitações com muitos parâmetros.

Existem três elementos de teste diferentes usados ​​para definir os amostradores:

AJP/1.3 Amostrador
usa o protocolo Tomcat mod_jk (permite testar o Tomcat no modo AJP sem precisar do Apache httpd) O AJP Sampler não suporta upload de vários arquivos; somente o primeiro arquivo será usado.
Solicitação HTTP
isso tem uma caixa suspensa de implementação, que seleciona a implementação do protocolo HTTP a ser usada:
Java
usa a implementação HTTP fornecida pela JVM. Isso tem algumas limitações em comparação com as implementações HttpClient - veja abaixo.
HTTPClient4
usa Apache HttpComponents HttpClient 4.x.
Valor em branco
não define a implementação em HTTP Samplers, portanto, depende de HTTP Request Defaults se estiver presente ou na propriedade jmeter.httpsampler definida em jmeter.properties
Solicitação HTTP do GraphQL
esta é uma variação da GUI da solicitação HTTP para fornecer elementos de interface do usuário mais convenientes para visualizar ou editar GraphQL Query , Variables e Operation Name , enquanto os converte em Argumentos HTTP automaticamente usando o mesmo amostrador. Isso oculta ou personaliza os seguintes elementos da interface do usuário, pois são menos convenientes ou irrelevantes para solicitações do GraphQL sobre HTTP/HTTPS:
  • Método : Apenas os métodos POST e GET estão disponíveis em conformidade com a especificação GraphQL sobre HTTP. O método POST é selecionado por padrão.
  • Guias Parâmetros e Corpo da postagem : você pode visualizar ou editar o conteúdo do parâmetro por meio dos elementos de interface do usuário de consulta, variáveis ​​e nome da operação.
  • Guia Upload de arquivo : irrelevante para consultas do GraphQL.
  • A seção Recursos incorporados de arquivos HTML na guia Avançado: irrelevante nas respostas JSON do GraphQL.

A implementação Java HTTP tem algumas limitações:

  • Não há controle sobre como as conexões são reutilizadas. Quando uma conexão é liberada pelo JMeter, ela pode ou não ser reutilizada pela mesma thread.
  • A API é mais adequada para uso de thread único - várias configurações são definidas por meio das propriedades do sistema e, portanto, se aplicam a todas as conexões.
  • Não há suporte para autenticação Kerberos
  • Ele não suporta teste de certificado baseado em cliente com o Keystore Config.
  • Melhor controle do mecanismo de repetição
  • Não suporta hosts virtuais.
  • Ele suporta apenas os seguintes métodos: GET , POST , HEAD , OPTIONS , PUT , DELETE e TRACE
  • Melhor controle no cache de DNS com o Gerenciador de cache de DNS
Nota: o protocolo FILE destina-se apenas a fins de teste. Ele é tratado pelo mesmo código, independentemente de qual amostrador HTTP é usado.

Se a solicitação exigir autorização de login do servidor ou proxy (ou seja, onde um navegador criaria uma caixa de diálogo pop-up), você também precisará adicionar um Elemento de configuração do Gerenciador de autorização HTTP . Para logins normais (ou seja, onde o usuário insere informações de login em um formulário), você precisará descobrir o que o botão de envio de formulário faz e criar uma solicitação HTTP com o método apropriado (geralmente POST ) e os parâmetros apropriados da definição do formulário . Se a página usar HTTP, você poderá usar o JMeter Proxy para capturar a sequência de login.

Um contexto SSL separado é usado para cada encadeamento. Se você quiser usar um único contexto SSL (não o comportamento padrão dos navegadores), defina a propriedade JMeter:

https.sessioncontext.shared=true
Por padrão, desde a versão 5.0, o contexto SSL é retido durante uma iteração do Thread Group e redefinido para cada iteração de teste. Se em seu plano de teste o mesmo usuário iterar várias vezes, você deverá definir isso como false.
httpclient.reset_state_on_thread_group_iteration=true
Nota: isso não se aplica à implementação Java HTTP.
O padrão do JMeter é o nível de protocolo SSL TLS. Se o servidor precisar de um nível diferente, por exemplo SSLv3 , altere a propriedade JMeter, por exemplo:
https.default.protocol=SSLv3

O JMeter também permite habilitar protocolos adicionais, alterando a propriedade https.socket.protocols .

Se a solicitação usar cookies, você também precisará de um gerenciador de cookies HTTP . Você pode adicionar um desses elementos ao Grupo de Threads ou à Solicitação HTTP. Se você tiver mais de uma solicitação HTTP que precise de autorizações ou cookies, adicione os elementos ao grupo de threads. Dessa forma, todos os controladores HTTP Request compartilharão os mesmos elementos Authorization Manager e Cookie Manager.

Se a solicitação usar uma técnica chamada "Reescrita de URL" para manter as sessões, consulte a seção 6.1 Manipulando Sessões de Usuário com Reescrita de URL para obter etapas de configuração adicionais.

Captura de tela do painel de controle da solicitação HTTP
Captura de tela do painel de controle da solicitação HTTP
Campos de configuração avançada de solicitação HTTP
Campos de configuração avançada de solicitação HTTP
Captura de tela do painel de controle da solicitação HTTP do GraphQL
Captura de tela do painel de controle da solicitação HTTP do GraphQL
Campo de variáveis ​​para solicitação HTTP do GraphQL
Campo de variáveis ​​para solicitação HTTP do GraphQL

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Servidor
Nome de domínio ou endereço IP do servidor web, por exemplo, www.example.com . [Não inclua o prefixo http:// .] Nota: Se o cabeçalho " Host " for definido em um Header Manager, ele será usado como o nome do host virtual.
O servidor é necessário, a menos que:
  • é fornecido por HTTP Request Defaults
  • ou um URL completo incluindo esquema, host e porta ( esquema://host:port ) é definido no campo Caminho
Não
Porta
Porta que o servidor web está escutando. Padrão: 80
Não
Tempo limite de conexão
Tempo limite de conexão. Número de milissegundos para aguardar a abertura de uma conexão.
Não
Tempo limite de resposta
Tempo limite de resposta. Número de milissegundos para aguardar uma resposta. Observe que isso se aplica a cada espera por uma resposta. Se a resposta do servidor for enviada em vários pedaços, o tempo total decorrido pode ser maior que o tempo limite.

Uma Asserção de Duração pode ser usada para detectar respostas que demoram muito para serem concluídas.

Não
Servidor (proxy)
Nome do host ou endereço IP de um servidor proxy para realizar a solicitação. [Não inclua o prefixo http:// .]
Não
Porta
Porta que o servidor proxy está escutando.
Não, a menos que o nome do host do proxy seja especificado
Nome de usuário
(Opcional) nome de usuário para o servidor proxy.
Não
Senha
(Opcional) senha para o servidor proxy. (NB isso é armazenado sem criptografia no plano de teste)
Não
Implementação
Java , HttpClient4 . Se não especificado (e não definido por HTTP Request Defaults), o padrão depende do valor da propriedade JMeter jmeter.httpsampler , caso contrário, a implementação HttpClient4 é usada.
Não
Protocolo
HTTP , HTTPS ou ARQUIVO . Padrão: HTTP
Não
Método
GET , POST , HEAD , TRACE , OPTIONS , PUT , DELETE , PATCH (não suportado para implementação JAVA ). Com HttpClient4 , os seguintes métodos relacionados ao WebDav também são permitidos: COPY , LOCK , MKCOL , MOVE , PROPFIND , PROPPATCH , UNLOCK , REPORT , MKCALENDAR , SEARCH .

Mais métodos podem ser predefinidos para o HttpClient4 usando a propriedade JMeter httpsampler.user_defined_methods .

Sim
Codificação de conteúdo
Codificação de conteúdo a ser usada (para POST , PUT , PATCH e FILE ). Esta é a codificação de caracteres a ser usada e não está relacionada ao cabeçalho HTTP Content-Encoding.
Não
Redirecionar automaticamente
Configura o manipulador de protocolo http subjacente para seguir automaticamente os redirecionamentos, para que eles não sejam vistos pelo JMeter e, portanto, não apareçam como amostras. Deve ser usado apenas para solicitações GET e HEAD . O amostrador HttpClient rejeitará tentativas de usá-lo para POST ou PUT .
Atenção: veja abaixo informações sobre manipulação de cookies e cabeçalhos.
Não
Seguir redirecionamentos
Isso só tem efeito se " Redirecionar Automaticamente " não estiver habilitado. Se definido, o amostrador JMeter verificará se a resposta é um redirecionamento e o seguirá em caso afirmativo. O redirecionamento inicial e outras respostas aparecerão como amostras adicionais. O URL e os campos de dados da amostra principal serão obtidos da amostra final (não redirecionada), mas a contagem de bytes principal e o tempo decorrido incluem todas as amostras. A latência é obtida a partir da resposta inicial. Observe que o amostrador HttpClient pode registrar a seguinte mensagem:
"Redirecionamento solicitado, mas followRedirects está desabilitado"
Isso pode ser ignorado.
O JMeter recolherá os caminhos no formato ' /../segment ' em URLs de redirecionamento absolutos e relativos. Por exemplo , http://host/one/../two será recolhido em http://host/two . Se necessário, esse comportamento pode ser suprimido configurando a propriedade JMeter httpsampler.redirect.removeslashdotdot=false
Não
Usar KeepAlive
O JMeter define o cabeçalho Connection: keep-alive . Isso não funciona corretamente com a implementação HTTP padrão, pois a reutilização da conexão não está sob controle do usuário. Ele funciona com as implementações Apache HttpComponents HttpClient.
Não
Use multipart/form-data para HTTP POST
Use uma solicitação de postagem multipart/form-data ou application/x-www-form-urlencoded
Não
Cabeçalhos compatíveis com navegador
Ao usar multipart/form-data , isso suprime os cabeçalhos Content-Type e Content-Transfer-Encoding ; apenas o cabeçalho Content-Disposition é enviado.
Não
Caminho
O caminho para o recurso (por exemplo, /servlets/myServlet ). Se o recurso exigir parâmetros de string de consulta, adicione-os abaixo na seção "Enviar parâmetros com a solicitação".
Como um caso especial, se o caminho começar com " http:// " ou " https:// ", isso será usado como o URL completo.
Nesse caso, os campos servidor, porta e protocolo são ignorados; parâmetros também são ignorados para métodos GET e DELETE . Observe também que o caminho não é codificado - além da substituição de espaços por %20 - portanto, caracteres não seguros podem precisar ser codificados para evitar erros como URISyntaxException .
Não
Enviar parâmetros com a solicitação
A string de consulta será gerada a partir da lista de parâmetros que você fornecer. Cada parâmetro tem um nome e um valor , as opções para codificar o parâmetro e uma opção para incluir ou excluir um sinal de igual (alguns aplicativos não esperam um sinal de igual quando o valor é a string vazia). A string de consulta será gerada da maneira correta, dependendo da escolha do "Método" que você fez (ou seja, se você escolheu GET ou DELETE , a string de consulta será anexada à URL, se POST ou PUT, então será enviado separadamente). Além disso, se você estiver enviando um arquivo usando um formulário multipartes, a string de consulta será criada usando as especificações do formulário multipartes. Veja abaixo algumas informações adicionais sobre manipulação de parâmetros.

Além disso, você pode especificar se cada parâmetro deve ser codificado por URL. Se você não tiver certeza do que isso significa, provavelmente é melhor selecioná-lo. Se seus valores contiverem caracteres como os seguintes, a codificação geralmente será necessária.:

  • Caracteres de controle ASCII
  • Caracteres não ASCII
  • Caracteres reservados: URLs usam alguns caracteres para uso especial na definição de sua sintaxe. Quando esses caracteres não são usados ​​em sua função especial dentro de uma URL, eles precisam ser codificados, por exemplo: ' $ ', ' & ', ' + ', ' , ' , ' / ', ' : ', ' ; ', ' = ', ' ? ', ' @ '
  • Caracteres inseguros: Alguns caracteres apresentam a possibilidade de serem mal interpretados dentro de URLs por vários motivos. Esses caracteres também devem ser sempre codificados, exemplo: ' ', ' < ', ' > ', ' # ', ' % ', …
Não
Caminho de arquivo:
Nome do arquivo a ser enviado. Se deixado em branco, o JMeter não envia um arquivo, se preenchido, o JMeter envia automaticamente a solicitação como uma solicitação de formulário de várias partes.

Se for uma solicitação POST ou PUT ou PATCH e houver um único arquivo cujo atributo 'Nome do parâmetro' (abaixo) seja omitido, o arquivo será enviado como o corpo inteiro da solicitação, ou seja, nenhum wrapper será adicionado. Isso permite que corpos arbitrários sejam enviados. Essa funcionalidade está presente para solicitações POST e também para solicitações PUT . Veja abaixo algumas informações adicionais sobre manipulação de parâmetros.

Não
Nome do parâmetro:
Valor do parâmetro de solicitação da web " name ".
Não
Tipo MIME
Tipo MIME (por exemplo, text/plain ). Se for uma solicitação POST ou PUT ou PATCH e o atributo ' name ' (abaixo) for omitido ou o corpo da solicitação for construído apenas a partir de valores de parâmetro, o valor desse campo será usado como o valor da solicitação de tipo de conteúdo cabeçalho.
Não
Recuperar todos os recursos incorporados de arquivos HTML
Diga ao JMeter para analisar o arquivo HTML e enviar solicitações HTTP/HTTPS para todas as imagens, applets Java, arquivos JavaScript, CSSs etc. referenciados no arquivo. Veja abaixo para mais detalhes.
Não
Salvar resposta como hash MD5?
Se for selecionado, a resposta não será armazenada no resultado da amostra. Em vez disso, o hash MD5 de 32 caracteres dos dados é calculado e armazenado. Destina-se a testar grandes quantidades de dados.
Não
Os URLs devem corresponder:
Se estiver presente, deve ser uma expressão regular usada para corresponder a qualquer URL incorporado encontrado. Portanto, se você deseja baixar apenas recursos incorporados de http://example.invalid/ , use a expressão: http://example\.invalid/.*
Não
Os URLs não devem corresponder:
Se presente, deve ser uma expressão regular usada para filtrar quaisquer URLs incorporados encontrados. Portanto, se você não quiser baixar arquivos PNG ou SVG de nenhuma fonte, use a expressão: .*\.(?i:svg|png)
Não
Usar pool simultâneo
Use um pool de conexões simultâneas para obter recursos incorporados.
Não
Tamanho
Tamanho do pool para conexões simultâneas usadas para obter recursos incorporados.
Não
Tipo de endereço de origem
[Somente para solicitação HTTP com implementação HTTPClient]
Para distinguir o valor do endereço de origem, selecione o tipo destes:
  • Selecione IP/Nome de host para usar um endereço IP específico ou um nome de host (local)
  • Selecione Dispositivo para escolher o primeiro endereço disponível para essa interface, que pode ser IPv4 ou IPv6
  • Selecione Device IPv4 para selecionar o endereço IPv4 do nome do dispositivo (como eth0 , lo , em0 , etc.)
  • Selecione Device IPv6 para selecionar o endereço IPv6 do nome do dispositivo (como eth0 , lo , em0 , etc.)
Não
Campo de endereço de origem
[Somente para solicitação HTTP com implementação HTTPClient]
Esta propriedade é usada para habilitar o IP Spoofing. Ele substitui o endereço IP local padrão para esta amostra. O host JMeter deve ter vários endereços IP (ou seja, aliases de IP, interfaces de rede, dispositivos). O valor pode ser um nome de host, endereço IP ou um dispositivo de interface de rede, como " eth0 " ou " lo " ou " wlan0 ".
Se a propriedade httpclient.localaddress estiver definida, ela será usada para todas as solicitações de HttpClient.
Não

Os parâmetros a seguir estão disponíveis apenas para solicitação HTTP do GraphQL :

Parâmetros

Atributo
Descrição
Requeridos
Consulta
Instrução de consulta (ou mutação) do GraphQL.
Sim
Variáveis
Variáveis ​​de consulta (ou mutação) do GraphQL em uma string JSON válida. Observação : se a string de entrada não for uma string JSON válida, isso será ignorado com um log de ERRO.
Não
Nome da Operação
Nome da operação GraphQL opcional ao fazer uma solicitação de documentos de várias operações.
Não
Ao usar o Redirecionamento Automático, os cookies são enviados apenas para a URL inicial. Isso pode causar um comportamento inesperado para sites que redirecionam para um servidor local. Por exemplo, se www.example.com redireciona para www.example.co.uk . Nesse caso, o servidor provavelmente retornará cookies para ambas as URLs, mas o JMeter verá apenas os cookies do último host, ou seja, www.example.co.uk . Se a próxima solicitação no plano de teste usar www.example.com , em vez de www.example.co.uk, ele não receberá os cookies corretos. Da mesma forma, os cabeçalhos são enviados para a solicitação inicial e não serão enviados para o redirecionamento. Isso geralmente é um problema apenas para planos de teste criados manualmente, pois um plano de teste criado usando um gravador continuaria a partir da URL redirecionada.

Manipulação de Parâmetros:
Para o método POST e PUT , se não houver nenhum arquivo para enviar e o(s) nome(s) do(s) parâmetro(s) forem omitidos, o corpo será criado concatenando todos os valores dos parâmetros. Observe que os valores são concatenados sem adicionar nenhum caractere de final de linha. Eles podem ser adicionados usando a função __char() nos campos de valor. Isso permite que corpos arbitrários sejam enviados. Os valores são codificados se o sinalizador de codificação estiver definido. Veja também o Tipo MIME acima como você pode controlar o cabeçalho de solicitação de tipo de conteúdo que é enviado.
Para outros métodos, se o nome do parâmetro estiver ausente, o parâmetro será ignorado. Isso permite o uso de parâmetros opcionais definidos por variáveis.


Você tem a opção de alternar para a guia Dados do corpo quando uma solicitação tem apenas parâmetros sem nome (ou nenhum parâmetro). Esta opção é útil nos seguintes casos (entre outros):

  • Solicitação HTTP GWT RPC
  • Solicitação HTTP REST JSON
  • Solicitação HTTP REST XML
  • Solicitação HTTP SOAP
Observe que, depois de sair do nó Árvore, você não poderá voltar para a guia de parâmetro, a menos que limpe a guia Dados do corpo de seus dados.

No modo Body Data , cada linha será enviada com CRLF anexado, além da última linha. Para enviar um CRLF após a última linha de dados, apenas certifique-se de que haja uma linha vazia a seguir. (Isso não pode ser visto, exceto observando se o cursor pode ser colocado na linha subsequente.)

Figura 1 - Solicitação HTTP com um parâmetro sem nome
Figura 1 - Solicitação HTTP com um parâmetro sem nome
Figura 2 - Caixa de diálogo Confirmar para alternar
Figura 2 - Caixa de diálogo Confirmar para alternar
Figura 3 - Solicitação HTTP usando dados do corpo
Figura 3 - Solicitação HTTP usando dados do corpo

Manipulação de Métodos:
Os métodos de solicitação GET , DELETE , POST , PUT e PATCH funcionam de forma semelhante, exceto que a partir de 3.1, apenas o método POST suporta solicitações multiparte ou upload de arquivos. O corpo do método PUT e PATCH deve ser fornecido como um dos seguintes:

  • defina o corpo como um arquivo com o campo Nome do parâmetro vazio; nesse caso o Tipo MIME é usado como o Tipo de Conteúdo
  • defina o corpo como valor(es) de parâmetro sem nome
  • use a guia Dados do corpo

Os métodos GET , DELETE e POST têm uma maneira adicional de passar parâmetros usando a guia Parâmetros . GET , DELETE , PUT e PATCH requerem um tipo de conteúdo. Se não estiver usando um arquivo, anexe um Header Manager ao sampler e defina o Content-Type lá.

Respostas de varredura JMeter de recursos incorporados. Ele usa a propriedade HTTPResponse.parsers , que é uma lista de ids de analisadores, por exemplo htmlParser , cssParser e wmlParser . Para cada id encontrado, o JMeter verifica mais duas propriedades:

  • id.types - uma lista de tipos de conteúdo
  • id.className - o analisador a ser usado para extrair os recursos incorporados

Consulte o arquivo jmeter.properties para obter detalhes das configurações. Se a propriedade HTTPResponse.parser não estiver configurada, o JMeter reverterá para o comportamento anterior, ou seja, apenas as respostas text/html serão verificadas

Emulando conexões lentas:

HttpClient4 e Java Sampler suportam emulação de conexões lentas; veja as seguintes entradas em jmeter.properties :

# Defina caracteres por segundo > 0 para emular conexões lentas
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
No entanto, o amostrador Java suporta apenas conexões HTTPS lentas.

Cálculo do tamanho da resposta

A implementação Java não inclui sobrecarga de transporte, como cabeçalhos de partes no tamanho do corpo da resposta.
A implementação HttpClient4 inclui a sobrecarga no tamanho do corpo da resposta, portanto, o valor pode ser maior que o número de bytes no conteúdo da resposta.

Manipulação de repetição
Por padrão, a repetição foi definida como 0 para implementações HttpClient4 e Java, o que significa que nenhuma repetição é tentada.
Para HttpClient4, a contagem de novas tentativas pode ser substituída definindo a propriedade JMeter relevante, por exemplo:

httpclient4.retrycount=3
Com a implementação do HC4, a repetição será feita em métodos Http Idempotentes por padrão. Se você quiser tentar novamente para todos os métodos, defina a propriedade
httpclient4.request_sent_retry_enabled=true
Observe que a implementação Java não tenta novamente nem por padrão, você pode alterar isso definindo
http.java.sampler.retries=3

Nota: Os certificados não estão em conformidade com as restrições do algoritmo
Você pode encontrar o seguinte erro: java.security.cert.CertificateException: Os certificados não estão em conformidade com as restrições do algoritmo se você executar uma solicitação HTTPS em um site com um certificado SSL (próprio ou um dos certificados SSL em sua cadeia de confiança) com um algoritmo de assinatura usando MD2 (como md2WithRSAEncryption ) ou com um certificado SSL com tamanho inferior a 1024 bits.

Este erro está relacionado ao aumento da segurança no Java 8.

Para permitir que você execute sua solicitação HTTPS, você pode fazer downgrade da segurança de sua instalação Java editando a propriedade Java jdk.certpath.disabledAlgorithms . Remova o valor MD2 ou a restrição de tamanho, dependendo do seu caso.

Esta propriedade está neste arquivo:

JAVA_HOME/jre/lib/security/java.security

Veja Bug 56357 para detalhes.

^

Solicitação JDBC

Este amostrador permite enviar uma solicitação JDBC (uma consulta SQL) para um banco de dados.

Antes de usar isso, você precisa configurar um elemento de configuração de configuração de conexão JDBC

Se a lista de nomes de variáveis ​​for fornecida, para cada linha retornada por uma instrução Select, as variáveis ​​serão configuradas com o valor da coluna correspondente (se um nome de variável for fornecido) e a contagem de linhas também será configurada. Por exemplo, se a instrução Select retornar 2 linhas de 3 colunas e a lista de variáveis ​​for A,,C , as seguintes variáveis ​​serão configuradas:

A_#=2 (número de linhas)
A_1=coluna 1, linha 1
A_2=coluna 1, linha 2
C_#=2 (número de linhas)
C_1=coluna 3, linha 1
C_2=coluna 3, linha 2

Se a instrução Select retornar zero linhas, as variáveis ​​A_# e C_# serão definidas como 0 e nenhuma outra variável será definida.

As variáveis ​​antigas são limpas se necessário - por exemplo, se a primeira seleção recuperar seis linhas e uma segunda seleção retornar apenas três linhas, as variáveis ​​adicionais para as linhas quatro, cinco e seis serão removidas.

O tempo de latência é definido a partir do tempo que levou para adquirir uma conexão.
Captura de tela do painel de controle da solicitação JDBC
Captura de tela do painel de controle da solicitação JDBC

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome da variável do pool declarado na configuração da conexão JDBC
Nome da variável JMeter à qual o pool de conexões está vinculado. Isso deve estar de acordo com o campo ' Nome da variável ' de uma configuração de conexão JDBC .
Sim
Tipo de consulta
Defina isso de acordo com o tipo de instrução:
  • Selecionar extrato
  • Declaração de atualização - use isso para inserções e exclusões também
  • Extrato Exigível
  • Declaração de Seleção Preparada
  • Declaração de atualização preparada - use isso para inserções e exclusões também
  • Comprometer-se
  • Reverter
  • Autocommit(falso)
  • Autocommit (verdadeiro)
  • Editar - esta deve ser uma referência de variável que avalia uma das opções acima
Os tipos Commit , Rollback , Autocommit(false) e Autocommit(true) são especiais, pois ignoram as instruções SQL fornecidas e apenas alteram o estado da conexão.
Sim
Consulta SQL
consulta SQL.
Não insira um ponto e vírgula à direita.
Geralmente não há necessidade de usar { e } para incluir instruções Callable; no entanto, eles podem ser usados ​​se o banco de dados usar uma sintaxe não padrão.
O driver JDBC converte automaticamente a instrução, se necessário, quando ela está entre {} .
Por exemplo:
  • selecione * de t_customers onde id=23
  • CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE (nulo, ?, ?, nulo, nulo, nulo)
    • Valores de parâmetro: tablename , filename
    • Tipos de parâmetros: VARCHAR , VARCHAR
O segundo exemplo pressupõe que você esteja usando o Apache Derby.
Sim
Valores de parâmetro
Lista de valores de parâmetros separados por vírgulas. Use ]NULL[ para indicar um parâmetro NULL . (Se necessário, a string nula pode ser alterada definindo a propriedade " jdbcsampler.nullmarker ".)
A lista deve ser colocada entre aspas duplas se algum dos valores contiver uma vírgula ou aspas duplas e quaisquer aspas duplas incorporadas devem ser duplicado, por exemplo:
"Dbl-Citação: "" e Vírgula: "
Deve haver tantos valores quanto espaços reservados na instrução, mesmo que seus parâmetros sejam OUT . Certifique-se de definir um valor mesmo que o valor não seja usado (por exemplo, em um CallableStatement).
Sim, se uma instrução preparada ou que pode ser chamada tiver parâmetros
Tipos de parâmetros
Lista separada por vírgulas de tipos de parâmetros SQL (por exemplo , INTEGER , DATE , VARCHAR , DOUBLE ) ou valores inteiros de Constantes. Esses valores inteiros podem ser usados, quando você usa tipos de banco de dados personalizados propostos pelo driver (por exemplo , OracleTypes.CURSOR pode ser representado por seu valor inteiro -10 ).
Estes são definidos como campos na classe java.sql.Types , veja por exemplo:
Javadoc para java.sql.Types .
Nota: O JMeter usará quaisquer tipos definidos pela JVM de tempo de execução, portanto, se você estiver executando em uma JVM diferente, verifique a documentação apropriada
Se a instrução callable tiver parâmetros INOUT ou OUT , eles devem ser indicados prefixando os tipos de parâmetros apropriados, por exemplo, em vez de " INTEGER ", use " INOUT INTEGER ".
Se não for especificado, " IN " é assumido, ou seja, " DATE " é o mesmo que " IN DATE ".
Se o tipo não for um dos campos encontrados em java.sql.Types , o JMeter também aceita o número inteiro correspondente, por exemplo, desde OracleTypes.CURSOR == -10 , você pode usar " INOUT -10 ".
Deve haver tantos tipos quantos espaços reservados na instrução.
Sim, se uma instrução preparada ou que pode ser chamada tiver parâmetros
Nomes de Variáveis
Lista separada por vírgulas de nomes de variáveis ​​para armazenar valores retornados por instruções Select, instruções Select preparadas ou CallableStatement. Observe que, quando usado com CallableStatement, a lista de variáveis ​​deve estar na mesma sequência dos parâmetros OUT retornados pela chamada. Se houver menos nomes de variáveis ​​do que parâmetros OUT , apenas tantos resultados devem ser armazenados nas variáveis ​​de contexto de encadeamento quanto os nomes de variáveis ​​foram fornecidos. Se existirem mais nomes de variáveis ​​do que parâmetros OUT , as variáveis ​​adicionais serão ignoradas
Não
Nome da variável de resultado
Se especificado, isso criará uma variável Object contendo uma lista de mapas de linhas. Cada mapa contém o nome da coluna como a chave e os dados da coluna como o valor. Uso:
columnValue = vars.getObject("resultObject").get(0).get("Nome da coluna");
Não
Tempo limite da consulta
Defina um tempo limite em segundos para a consulta, o valor vazio significa 0, que é infinito. -1 significa não definir nenhum tempo limite de consulta que possa ser necessário para o caso de uso ou quando determinados drivers não suportam tempo limite. O padrão é 0.
Não
Limitar conjunto de resultados
Limita o número de linhas para iterar por meio do ResultSet. Valor vazio significa -1 , por exemplo, sem limitação, que também é o padrão. Isso pode ajudar a reduzir a quantidade de dados a serem obtidos do banco de dados através do driver JDBC, mas afeta todas as opções possíveis de Handle ResultSet respectivamente – por exemplo, ResultSet incompleto e uma contagem de registros ≤ o limite.
Não
Manipular conjunto de resultados
Define como o ResultSet retornado de instruções chamáveis ​​deve ser tratado:
  • Armazenar como String (padrão) - Todas as variáveis ​​na lista de nomes de variáveis ​​são armazenadas como strings, não irão iterar por meio de um ResultSet quando presentes na lista. CLOBs serão convertidos em Strings. Os BLOBs serão convertidos em Strings como se fossem um array de bytes codificado em UTF-8. Ambos CLOBs e BLOBs serão cortados após os bytes jdbcsampler.max_retain_result_size .
  • Armazenar como Objeto - Variáveis ​​do tipo ResultSet na lista Nomes de Variáveis ​​serão armazenadas como Objeto e poderão ser acessadas em testes/scripts subsequentes e iteradas, não irão iterar através do ResultSet . CLOBs serão tratados como se Store As String fosse selecionado. Os BLOBs serão armazenados como uma matriz de bytes. Ambos CLOBs e BLOBs serão cortados após os bytes jdbcsampler.max_retain_result_size .
  • Count Records - As variáveis ​​dos tipos ResultSet serão iteradas mostrando a contagem de registros como resultado. As variáveis ​​serão armazenadas como Strings. Para BLOBs o tamanho do objeto será armazenado.
Não
As versões atuais do JMeter usam UTF-8 como codificação de caracteres. Anteriormente, o padrão da plataforma era usado.
Certifique-se de que o nome da variável seja exclusivo no plano de teste.
^

Solicitação Java¶

Este amostrador permite controlar uma classe java que implementa a interface org.apache.jmeter.protocol.java.sampler.JavaSamplerClient . Ao escrever sua própria implementação dessa interface, você pode usar o JMeter para aproveitar vários encadeamentos, controle de parâmetro de entrada e coleta de dados.

O menu suspenso fornece a lista de todas essas implementações encontradas pelo JMeter em seu caminho de classe. Os parâmetros podem ser especificados na tabela abaixo - conforme definido pela sua implementação. Dois exemplos simples ( JavaTest e SleepTest ) são fornecidos.

O amostrador de exemplo JavaTest pode ser útil para verificar planos de teste, pois permite definir valores em quase todos os campos. Estes podem então ser usados ​​por Assertions, etc. Os campos permitem que variáveis ​​sejam usadas, então os valores destas podem ser facilmente vistos.

Captura de tela para o painel de controle da solicitação Java
Captura de tela do painel de controle da solicitação Java
Se o método teardownTest não for substituído por uma subclasse de AbstractJavaSamplerClient , seu método teardownTest não será chamado. Isso reduz os requisitos de memória do JMeter. Isso não terá nenhum impacto nos planos de teste existentes.
Os botões Adicionar/Excluir não servem para nenhum propósito no momento.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome da classe
A implementação específica da interface JavaSamplerClient a ser amostrada.
Sim
Enviar parâmetros com solicitação
Uma lista de argumentos que serão passados ​​para a classe de amostra. Todos os argumentos são enviados como Strings. Veja abaixo as configurações específicas.
Não

Os parâmetros a seguir se aplicam às implementações SleepTest e JavaTest :

Parâmetros

Atributo
Descrição
Requeridos
Hora de dormir
Por quanto tempo dormir (ms)
Sim
Sleep_mask
Quanta "aleatoriedade" adicionar:
O tempo de sono é calculado da seguinte forma:
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)
Sim

Os parâmetros a seguir se aplicam adicionalmente à implementação do JavaTest :

Parâmetros

Atributo
Descrição
Requeridos
Etiqueta
O rótulo a ser usado. Se fornecido, substitui Nome
Não
Código de resposta
Se fornecido, define o SampleResult ResponseCode.
Não
Mensagem de resposta
Se fornecido, define o SampleResult ResponseMessage.
Não
Status
Se fornecido, define o Status de SampleResult. Se for igual a " OK " (ignorando maiúsculas e minúsculas), o status será definido como sucesso, caso contrário, a amostra será marcada como com falha.
Não
Dados do amostrador
Se fornecido, define o SampleResult SamplerData.
Não
ResultData
Se fornecido, define o SampleResult ResultData.
Não
^

Solicitação LDAP¶

Este Sampler permite enviar uma solicitação LDAP diferente ( Adicionar , Modificar , Excluir e Pesquisar ) para um servidor LDAP.

Se você for enviar várias solicitações para o mesmo servidor LDAP, considere usar um Elemento de configuração de padrões de solicitação LDAP para não precisar inserir as mesmas informações para cada solicitação LDAP.

Da mesma forma que o Login Config Element também usa para Login e senha.
Captura de tela do painel de controle da solicitação LDAP
Captura de tela do painel de controle da solicitação LDAP

Há duas maneiras de criar casos de teste para testar um servidor LDAP.

  1. Casos de teste embutidos.
  2. Casos de teste definidos pelo usuário.

Há quatro cenários de teste de teste do LDAP. Os testes são dados abaixo:

  1. Adicionar teste
    1. Teste embutido:

      Isso adicionará uma entrada predefinida no servidor LDAP e calculará o tempo de execução. Após a execução do teste, a entrada criada será excluída do Servidor LDAP.

    2. Teste definido pelo usuário:

      Isso adicionará a entrada no servidor LDAP. O usuário deve inserir todos os atributos na tabela. As entradas são coletadas da tabela para serem adicionadas. O tempo de execução é calculado. A entrada criada não será excluída após o teste.

  2. Modificar teste
    1. Teste embutido:

      Isso criará uma entrada pré-definida primeiro, depois modificará a entrada criada no servidor LDAP. E calculará o tempo de execução. Após a execução do teste, a entrada criada será excluída do Servidor LDAP.

    2. Teste definido pelo usuário:

      Isso modificará a entrada no servidor LDAP. O usuário deve inserir todos os atributos na tabela. As entradas são coletadas da tabela para modificação. O tempo de execução é calculado. A entrada não será excluída do servidor LDAP.

  3. Teste de pesquisa
    1. Teste embutido:

      Isso criará a entrada primeiro e, em seguida, procurará se os atributos estiverem disponíveis. Ele calcula o tempo de execução da consulta de pesquisa. Ao final da execução, a entrada criada será excluída do Servidor LDAP.

    2. Teste definido pelo usuário:

      Isso pesquisará a entrada definida pelo usuário (filtro de pesquisa) na base de pesquisa (novamente, definida pelo usuário). As entradas devem estar disponíveis no Servidor LDAP. O tempo de execução é calculado.

  4. Excluir teste
    1. Teste embutido:

      Isso criará primeiro uma entrada predefinida e, em seguida, será excluída do servidor LDAP. O tempo de execução é calculado.

    2. Teste definido pelo usuário:

      Isso excluirá a entrada definida pelo usuário no servidor LDAP. As entradas devem estar disponíveis no Servidor LDAP. O tempo de execução é calculado.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome do servidor ou IP
Nome de domínio ou endereço IP do servidor LDAP. O JMeter assume que o servidor LDAP está atendendo na porta padrão ( 389 ).
Sim
Porta
Porta à qual se conectar (o padrão é 389 ).
Sim
DN raiz
DN base a ser usado para operações LDAP
Sim
Nome de usuário
Nome de usuário do servidor LDAP.
Usualmente
Senha
Senha do servidor LDAP. (NB isso é armazenado sem criptografia no plano de teste)
Usualmente
DN de entrada
o nome do contexto a ser criado ou modificado; pode não estar vazio.
Você mesmo deve definir os atributos corretos do objeto. Então, se você quiser adicionar cn=apache,ou=test, você deve adicionar o nome e o valor da tabela a cn e apache .
Sim, se Teste definido pelo usuário e Adicionar teste ou Modificar teste estiver selecionado
Excluir
o nome do contexto para Excluir; pode não estar vazio
Sim, se Teste definido pelo usuário e Excluir teste estiverem selecionados
Base de pesquisa
o nome do contexto ou objeto a ser pesquisado
Sim, se o teste definido pelo usuário e o teste de pesquisa estiverem selecionados
Filtro de pesquisa
a expressão de filtro a ser usada para a pesquisa; pode não ser nulo
Sim, se o teste definido pelo usuário e o teste de pesquisa estiverem selecionados
adicionar teste
Use esses pares de nomes e valores para a criação do novo objeto no contexto fornecido
Sim, se o teste definido pelo usuário e adicionar teste for selecionado
modificar teste
Use esses pares de nome e valor para modificação do objeto de contexto fornecido
Sim, se o teste definido pelo usuário e o teste de modificação forem selecionados
^

Solicitação Estendida LDAP¶

Este Sampler pode enviar todas as 8 solicitações LDAP diferentes para um servidor LDAP. É uma versão estendida do amostrador LDAP, portanto, é mais difícil de configurar, mas pode ser muito mais parecida com uma sessão LDAP real.

Se você for enviar várias solicitações para o mesmo servidor LDAP, considere usar um Elemento de configuração de padrões de solicitação estendida do LDAP para não precisar inserir as mesmas informações para cada solicitação LDAP.

Captura de tela do painel de controle da solicitação estendida do LDAP
Captura de tela do painel de controle da solicitação estendida do LDAP

Existem nove operações de teste definidas. Essas operações são dadas abaixo:

Ligação de thread

Qualquer solicitação LDAP faz parte de uma sessão LDAP, portanto, a primeira coisa que deve ser feita é iniciar uma sessão no servidor LDAP. Para iniciar esta sessão é usado um encadeamento de encadeamento, que é igual à operação de " bind " do LDAP. O usuário é solicitado a fornecer um nome de usuário (Nome Distinto) e senha , que serão usados ​​para iniciar uma sessão. Quando nenhuma senha ou a senha errada é especificada, uma sessão anônima é iniciada. Tome cuidado, omitir a senha não falhará neste teste, uma senha errada sim. (NB isso é armazenado sem criptografia no plano de teste)

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome do servidor
O nome (ou endereço IP) do servidor LDAP.
Sim
Porta
O número da porta que o servidor LDAP está atendendo. Se isso for omitido, o JMeter assume que o servidor LDAP está atendendo na porta padrão (389).
Não
DN
O nome distinto do objeto base que será usado para qualquer operação subsequente. Pode ser usado como ponto de partida para todas as operações. Você não pode iniciar nenhuma operação em um nível superior a este DN!
Não
Nome de usuário
Nome distinto completo do usuário ao qual você deseja vincular.
Não
Senha
Senha do usuário acima. Se omitido, resultará em uma ligação anônima. Se estiver incorreto, o amostrador retornará um erro e reverterá para um vínculo anônimo. (NB isso é armazenado sem criptografia no plano de teste)
Não
Tempo limite de conexão (em milissegundos)
Tempo limite para conexão, se a conexão for excedida será abortada
Não
Usar protocolo LDAP seguro
Use o esquema ldaps:// em vez de ldap://
Não
Confiar em todos os certificados
Confiar em todos os certificados, usado apenas se Usar protocolo LDAP seguro estiver marcado
Não
Desvincular thread

Esta é simplesmente a operação para encerrar uma sessão. É igual à operação " unbind " do LDAP.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Ligação/desvinculação única

Esta é uma combinação das operações LDAP " bind " e " unbind ". Ele pode ser usado para uma solicitação de autenticação/verificação de senha para qualquer usuário. Ele abrirá uma nova sessão, apenas para verificar a validade da combinação usuário/senha, e encerrará a sessão novamente.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome de usuário
Nome distinto completo do usuário ao qual você deseja vincular.
Sim
Senha
Senha do usuário acima. Se omitido, resultará em uma ligação anônima. Se estiver incorreto, o amostrador retornará um erro. (NB isso é armazenado sem criptografia no plano de teste)
Não
Renomear entrada

Esta é a operação " moddn " do LDAP. Ele pode ser usado para renomear uma entrada, mas também para mover uma entrada ou uma subárvore completa para um local diferente na árvore LDAP.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome de entrada antigo
O nome distinto atual do objeto que você deseja renomear ou mover, em relação ao DN fornecido na operação de encadeamento.
Sim
Novo nome distinto
O novo nome distinto do objeto que você deseja renomear ou mover, em relação ao DN fornecido na operação de encadeamento.
Sim
Adicionar teste

Esta é a operação " adicionar " do LDAP . Ele pode ser usado para adicionar qualquer tipo de objeto ao servidor LDAP.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
DN de entrada
Nome distinto do objeto que você deseja adicionar, em relação ao DN fornecido na operação de encadeamento.
Sim
Adicionar teste
Uma lista de atributos e seus valores que você deseja usar para o objeto. Se você precisar adicionar um atributo de valor múltiplo, precisará adicionar o mesmo atributo com seus respectivos valores várias vezes à lista.
Sim
Excluir teste

Esta é a operação LDAP " delete ", ela pode ser usada para excluir um objeto da árvore LDAP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Excluir
Nome distinto do objeto que você deseja excluir, em relação ao DN fornecido na operação de encadeamento.
Sim
Teste de pesquisa

Esta é a operação de " pesquisa " do LDAP e será usada para definir as pesquisas.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Base de pesquisa
Nome distinto da subárvore que você deseja que sua pesquisa procure, em relação ao DN fornecido na operação de ligação de encadeamento.
Não
Filtro de pesquisa
searchfilter, deve ser especificado na sintaxe LDAP.
Sim
Alcance
Use 0 para baseobject-, 1 para onelevel- e 2 para uma pesquisa de subárvore. (Padrão= 0 )
Não
Limite de tamanho
Especifique o número máximo de resultados que você deseja de volta do servidor. (padrão= 0 , o que significa sem limite.) Quando o amostrador atingir o número máximo de resultados, ele falhará com o código de erro 4
Não
Limite de tempo
Especifique a quantidade máxima de (cpu)tempo (em milissegundos) que o servidor pode gastar em sua pesquisa. Tome cuidado, isso não diz nada sobre o tempo de resposta. (o padrão é 0 , o que significa sem limite)
Não
Atributos
Especifique os atributos que você deseja que sejam retornados, separados por ponto e vírgula. Um campo vazio retornará todos os atributos
Não
Devolver objeto
Se o objeto será retornado ( true ) ou não ( false ). padrão = falso
Não
Desreferenciar aliases
Se true , desreferenciará os aliases, se false , não os seguirá (default= false )
Não
Analisar os resultados da pesquisa?
Se true , os resultados da pesquisa serão adicionados aos dados de resposta. Se false , um marcador - sejam os resultados encontrados ou não - será adicionado aos dados de resposta.
Não
Teste de modificação

Esta é a operação " modificar " do LDAP . Ele pode ser usado para modificar um objeto. Ele pode ser usado para adicionar, excluir ou substituir valores de um atributo.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Nome da entrada
Nome distinto do objeto que você deseja modificar, em relação ao DN fornecido na operação de ligação de encadeamento
Sim
Teste de modificação
O atributo-valor-opCode triplica.
O opCode pode ser qualquer operação LDAP válida ( add , delete , remove ou replace ).
Se você não especificar um valor com uma operação de exclusão , todos os valores do atributo fornecido serão excluídos.
Se você especificar um valor em uma operação de exclusão , somente o valor fornecido será excluído.
Se este valor for inexistente, o amostrador falhará no teste.
Sim
Comparar

Esta é a operação " comparar " do LDAP . Ele pode ser usado para comparar o valor de um determinado atributo com algum valor já conhecido. Na realidade, isso é usado principalmente para verificar se uma determinada pessoa é membro de algum grupo. Nesse caso, você pode comparar o DN do usuário como um determinado valor, com os valores no atributo " membro " de um objeto do tipo groupOfNames . Se a operação de comparação falhar, esse teste falhará com o código de erro 49 .

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
DN de entrada
O nome distinto atual do objeto do qual você deseja comparar um atributo, relativo ao DN fornecido na operação de encadeamento.
Sim
Comparar filtro
No formato " atributo=valor "
Sim
^

Amostrador de Log de Acesso

AccessLogSampler foi projetado para ler logs de acesso e gerar solicitações http. Para quem não conhece o log de acesso, é o log que o servidor mantém de todas as solicitações aceitas. Isso significa que cada imagem, arquivo CSS, arquivo JavaScript, arquivo html, …

O Tomcat usa o formato comum para logs de acesso. Isso significa que qualquer servidor web que use o formato de log comum pode usar o AccessLogSampler. Os servidores que usam o formato de log comum incluem: Tomcat, Resin, Weblogic e SunOne. O formato de log comum é assim:

127.0.0.1 - - [21/out/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343
A implementação atual do analisador analisa apenas o texto entre aspas que contém um dos métodos do protocolo HTTP ( GET , PUT , POST , DELETE , …). Todo o resto é retirado e ignorado. Por exemplo, o código de resposta é completamente ignorado pelo analisador.

Para o futuro, pode ser bom filtrar entradas que não tenham um código de resposta de 200 . Estender o amostrador deve ser bastante simples. Existem duas interfaces que você precisa implementar:

  • org.apache.jmeter.protocol.http.util.accesslog.LogParser
  • org.apache.jmeter.protocol.http.util.accesslog.Generator

A implementação atual do AccessLogSampler usa o gerador para criar um novo HTTPSampler. As imagens servername, port e get são definidas pelo AccessLogSampler. Em seguida, o analisador é chamado com o inteiro 1 , informando-o para analisar uma entrada. Depois disso, HTTPSampler.sample() é chamado para fazer a solicitação.

amostra = (HTTPSampler) GENERATOR.generateRequest();
samp.setDomain(this.getDomain());
samp.setPort(this.getPort());
samp.setImageParser(this.isImageParser());
PARSER.parse(1);
res = amostra.amostra();
res.setSampleLabel(samp.toString());
Os métodos necessários no LogParser são:
  • setGenerator(Gerador)
  • analisar(int)

As classes que implementam a interface do Generator devem fornecer implementação concreta para todos os métodos. Para obter um exemplo de como implementar uma das interfaces, consulte StandardGenerator e TCLogParser .

Captura de tela do painel de controle do amostrador de log de acesso
Captura de tela do painel de controle do amostrador de log de acesso

(Código Beta)

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Servidor
Nome de domínio ou endereço IP do servidor web.
Sim
Protocolo
Esquema
Não (o padrão é http
Porta
Porta que o servidor web está escutando.
Não (o padrão é 80)
Classe do analisador de log
A classe do analisador de log é responsável por analisar os logs.
Sim (padrão fornecido)
Filtro
A classe de filtro é usada para filtrar certas linhas.
Não
Localização do arquivo de log
O local do arquivo de log de acesso.
Sim

O TCLogParser processa o log de acesso de forma independente para cada thread. O SharedTCLogParser e o OrderPreservingLogParser compartilham o acesso ao arquivo, ou seja, cada thread recebe a próxima entrada no log.

O SessionFilter destina-se a manipular cookies entre threads. Ele não filtra nenhuma entrada, mas modifica o gerenciador de cookies para que os cookies de um determinado IP sejam processados ​​por um único thread por vez. Se dois threads tentarem processar amostras do mesmo endereço IP do cliente, um será forçado a esperar até que o outro seja concluído.

O LogFilter destina-se a permitir que as entradas de log de acesso sejam filtradas por nome de arquivo e regex, além de permitir a substituição de extensões de arquivo. No entanto, atualmente não é possível configurá-lo através da GUI, portanto, não pode realmente ser usado.

^

Amostrador BeanShell

Este amostrador permite escrever um amostrador usando a linguagem de script BeanShell.

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell.

A migração para JSR223 Sampler +Groovy é altamente recomendada para desempenho, suporte de novos recursos Java e manutenção limitada da biblioteca BeanShell.

O elemento de teste suporta os métodos de interface ThreadListener e TestListener . Estes devem ser definidos no arquivo de inicialização. Consulte o arquivo BeanShellListeners.bshrc para obter definições de exemplo.

O amostrador BeanShell também suporta a interface Interruptible . O método interrupt() pode ser definido no script ou no arquivo init.

Captura de tela do painel de controle do BeanShell Sampler
Captura de tela do painel de controle do BeanShell Sampler

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore. O nome é armazenado na variável de script Label
Não
Redefinir bsh.Interpreter antes de cada chamada
Se esta opção for selecionada, o interpretador será recriado para cada amostra. Isso pode ser necessário para alguns scripts de execução longa. Para obter mais informações, consulte Práticas recomendadas - scripts do BeanShell .
Sim
Parâmetros
Parâmetros a serem passados ​​para o script BeanShell. Destina-se ao uso com arquivos de script; para scripts definidos na GUI, você pode usar qualquer referência de variável e função necessária dentro do próprio script. Os parâmetros são armazenados nas seguintes variáveis:
Parâmetros
string contendo os parâmetros como uma única variável
bsh.args
Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script BeanShell a ser executado. O nome do arquivo é armazenado na variável de script FileName
Não
Roteiro
O script do BeanShell a ser executado. O valor de retorno (se não for null ) é armazenado como o resultado do amostrador.
Sim (a menos que o arquivo de script seja fornecido)
NB Cada instância do Sampler tem seu próprio interpretador BeanShell, e os Samplers são chamados apenas de um único thread

Se a propriedade " beanshell.sampler.init " for definida, ela será passada para o Interpreter como o nome de um arquivo de origem. Isso pode ser usado para definir métodos e variáveis ​​comuns. Há um arquivo init de amostra no diretório bin: BeanShellSampler.bshrc .

Se um arquivo de script for fornecido, ele será usado, caso contrário, o script será usado.

O JMeter processa as referências de funções e variáveis ​​antes de passar o campo de script para o interpretador, portanto, as referências serão resolvidas apenas uma vez. Referências de variáveis ​​e funções em arquivos de script serão passadas literalmente ao interpretador, o que provavelmente causará um erro de sintaxe. Para usar variáveis ​​de tempo de execução, use os métodos props apropriados, por exemplo, props.get("START.HMS"); props.put("PROP1","1234");
Atualmente, o BeanShell não suporta a sintaxe Java 5, como genéricos e o loop for aprimorado.

Antes de invocar o script, algumas variáveis ​​são configuradas no interpretador BeanShell:

O conteúdo do campo Parâmetros é colocado na variável " Parâmetros ". A string também é dividida em tokens separados usando um único espaço como separador, e a lista resultante é armazenada no array String bsh.args .

A lista completa de variáveis ​​do BeanShell configuradas é a seguinte:

  • log - o registrador
  • Rótulo - o rótulo do Amostrador
  • FileName - o nome do arquivo, se houver
  • Parâmetros - texto do campo Parâmetros
  • bsh.args - os parâmetros, divididos conforme descrito acima
  • SampleResult - ponteiro para o SampleResult atual
  • ResponseCode é padronizado para 200
  • O padrão ResponseMessage é " OK "
  • O padrão IsSuccess é true
  • ctx - JMeterContext
  • vars - JMeterVariables - por exemplo
    vars.get("VAR1");
    vars.put("VAR2","valor");
    vars.remove("VAR3");
    vars.putObject("OBJ1",new Object());
  • props - JMeterProperties (classe java.util.Properties ) - por exemplo
    props.get("START.HMS");
    props.put("PROP1","1234");

Quando o script é concluído, o controle é retornado ao Sampler e ele copia o conteúdo das seguintes variáveis ​​de script nas variáveis ​​correspondentes no SampleResult :

  • Código de Resposta - por exemplo 200
  • ResponseMessage - por exemplo " OK "
  • IsSuccess - verdadeiro ou falso

O SampleResult ResponseData é definido a partir do valor de retorno do script. Se o script retornar nulo, ele poderá definir a resposta diretamente, usando o método SampleResult.setResponseData(data) , em que data é uma String ou uma matriz de bytes. O tipo de dados padrão é " text ", mas pode ser definido como binário usando o método SampleResult.setDataType(SampleResult.BINARY) .

A variável SampleResult dá ao script acesso total a todos os campos e métodos no SampleResult . Por exemplo, o script tem acesso aos métodos setStopThread(boolean) e setStopTest(boolean) . Aqui está um script de exemplo simples (não muito útil!):

if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("Stop Thread detectado!");
    SampleResult.setStopThread(true);
}
return "Dados da amostra com Label" + Label;
//ou
SampleResult.setResponseData("Meus dados");
retornar nulo;

Outro exemplo:
certifique-se de que a propriedade beanshell.sampler.init=BeanShellSampler.bshrc esteja definida em jmeter.properties . O script a seguir mostrará os valores de todas as variáveis ​​no campo ResponseData :

return getVariáveis();

Para detalhes sobre os métodos disponíveis para as várias classes ( JMeterVariables , SampleResult etc.) verifique o Javadoc ou o código fonte. Cuidado, no entanto, que o uso indevido de qualquer método pode causar falhas sutis que podem ser difíceis de encontrar.

^

Amostrador JSR223

O JSR223 Sampler permite que o código de script JSR223 seja usado para executar uma amostra ou algum cálculo necessário para criar/atualizar variáveis.

Se você não quiser gerar um SampleResult quando este amostrador for executado, chame o seguinte método:
SampleResult.setIgnore();
Esta chamada terá o seguinte impacto:
  • SampleResult não será entregue a SampleListeners como View Results Tree, Summariser...
  • SampleResult não será avaliado em Assertions nem PostProcessors
  • SampleResult será avaliado para calcular o status da última amostra (${JMeterThread.last_sample_ok}) e ThreadGroup "Ação a ser tomada após um erro do Sampler" (desde JMeter 5.4)

Os elementos de teste JSR223 possuem um recurso (compilação) que pode aumentar significativamente o desempenho. Para se beneficiar deste recurso:

  • Use arquivos de script em vez de inline-los. Isso fará com que o JMeter os compile se esse recurso estiver disponível no ScriptEngine e os armazene em cache.
  • Ou Use Script Text e marque Cache compilado script se disponível .
    Ao usar esse recurso, certifique-se de que seu código de script não use variáveis ​​JMeter ou chamadas de função JMeter diretamente no código de script, pois o armazenamento em cache apenas armazenaria em cache a primeira substituição. Em vez disso, use parâmetros de script.
    Para se beneficiar do cache e da compilação, o mecanismo de linguagem usado para scripting deve implementar a interface Compilável JSR223 (Groovy é uma delas, java, beanshell e javascript não são)
    Ao usar o Groovy como linguagem de script e não verificar o script compilado do Cache, se disponível (enquanto o cache é recomendado), você deve definir esta propriedade JVM -Dgroovy.use.classvalue=true devido a um vazamento de memória Groovy a partir da versão 2.4.6, consulte:
O tamanho do cache é controlado pela seguinte propriedade JMeter ( jmeter.properties ):
jsr223.compiled_scripts_cache_size=100
Ao contrário do BeanShell Sampler , o interpretador não é salvo entre as invocações.
Elementos de teste JSR223 usando arquivo de script ou texto de script + script compilado de cache marcado, se disponível , agora são compilados se o ScriptEngine suportar esse recurso, o que permite grandes aprimoramentos de desempenho.
Captura de tela do painel de controle do amostrador JSR223
Captura de tela do painel de controle do amostrador JSR223
O JMeter processa as referências de funções e variáveis ​​antes de passar o campo de script para o interpretador, portanto, as referências serão resolvidas apenas uma vez. Referências de variáveis ​​e funções em arquivos de script serão passadas literalmente ao interpretador, o que provavelmente causará um erro de sintaxe. Para usar variáveis ​​de tempo de execução, use os métodos props apropriados, por exemplo
props.get("START.HMS");
props.put("PROP1","1234");

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Linguagem de script
Nome da linguagem de script JSR223 a ser usada.
Existem outros idiomas suportados além daqueles que aparecem na lista suspensa. Outros podem estar disponíveis se o jar apropriado estiver instalado no diretório lib do JMeter.
Observe que algumas linguagens como Velocity podem usar uma sintaxe diferente para variáveis ​​JSR223, por exemplo
$log.debug("Olá " + $vars.get("a"));
para Velocidade.
Sim
Arquivo de script
Nome de um arquivo a ser usado como um script JSR223, se um caminho de arquivo relativo for usado, ele será relativo ao diretório referenciado por " user.dir " Propriedade do sistema
Não
Parâmetros
Lista de parâmetros a serem passados ​​ao arquivo de script ou ao script.
Não
Script compilado em cache, se disponível
Se marcado (recomendado) e a linguagem usada suporta interface Compilável (Groovy é uma delas, java, beanshell e javascript não são), o JMeter irá compilar o script e armazená-lo usando seu hash MD5 como chave de cache exclusiva
Não
Roteiro
Script a ser passado para a linguagem JSR223
Sim (a menos que o arquivo de script seja fornecido)

Se um arquivo de script for fornecido, ele será usado, caso contrário, o script será usado.

Antes de chamar o script, algumas variáveis ​​são configuradas. Observe que essas são variáveis ​​JSR223 - ou seja, elas podem ser usadas diretamente no script.

  • log - o registrador
  • Rótulo - o rótulo do Amostrador
  • FileName - o nome do arquivo, se houver
  • Parâmetros - texto do campo Parâmetros
  • args - os parâmetros, divididos conforme descrito acima
  • SampleResult - ponteiro para o SampleResult atual
  • sampler - ( Sampler ) - ponteiro para o Sampler atual
  • ctx - JMeterContext
  • vars - JMeterVariables - por exemplo
    vars.get("VAR1");
    vars.put("VAR2","valor");
    vars.remove("VAR3");
    vars.putObject("OBJ1",new Object());
  • props - JMeterProperties (classe java.util.Properties ) - por exemplo
    props.get("START.HMS");
    props.put("PROP1","1234");
  • OUT - System.out - ex: OUT.println("message")

O SampleResult ResponseData é definido a partir do valor de retorno do script. Se o script retornar null , ele poderá definir a resposta diretamente, usando o método SampleResult.setResponseData(data) , em que data é uma String ou uma matriz de bytes. O tipo de dados padrão é " text ", mas pode ser definido como binário usando o método SampleResult.setDataType(SampleResult.BINARY) .

A variável SampleResult dá ao script acesso total a todos os campos e métodos no SampleResult. Por exemplo, o script tem acesso aos métodos setStopThread(boolean) e setStopTest(boolean) .

Ao contrário do BeanShell Sampler, o JSR223 Sampler não configura o ResponseCode , ResponseMessage e o status da amostra por meio de variáveis ​​de script. Atualmente, a única maneira de alterá-los é por meio dos métodos SampleResult :

  • SampleResult.setSuccessful(true/false)
  • SampleResult.setResponseCode("código")
  • SampleResult.setResponseMessage("message")
^

Amostrador TCP¶

O TCP Sampler abre uma conexão TCP/IP com o servidor especificado. Em seguida, ele envia o texto e aguarda uma resposta.

Se " Re-use connection " for selecionado, as conexões serão compartilhadas entre Samplers no mesmo thread, desde que a mesma string de nome de host e porta sejam usadas. Diferentes combinações de hosts/portas usarão conexões diferentes, assim como diferentes threads. Se ambos " Reutilizar conexão " e " Fechar conexão " forem selecionados, o soquete será fechado após a execução do amostrador. No próximo amostrador, outro soquete será criado. Você pode querer fechar um soquete no final de cada loop de thread.

Se for detectado um erro - ou " Reutilizar conexão " não estiver selecionado - o soquete será fechado. Outro soquete será reaberto na próxima amostra.

As seguintes propriedades podem ser usadas para controlar sua operação:

tcp.status.prefix
texto que precede um número de status
tcp.status.suffix
texto que segue um número de status
tcp.status.properties
nome do arquivo de propriedades para converter códigos de status em mensagens
tcp.handler
Nome da classe TCP Handler (padrão TCPClientImpl ) - usado apenas se não for especificado na GUI
A classe que trata da conexão é definida pela GUI, falhando a propriedade tcp.handler . Se não for encontrada, a classe será pesquisada no pacote org.apache.jmeter.protocol.tcp.sampler .

Os usuários podem fornecer sua própria implementação. A classe deve estender org.apache.jmeter.protocol.tcp.sampler.TCPClient .

As implementações a seguir são fornecidas atualmente.

  • TCPClientImpl
  • BinaryTCPClientImpl
  • LengthPrefixedBinaryTCPClientImpl
As implementações se comportam da seguinte forma:
TCPClientImpl
Esta implementação é bastante básica. Ao ler a resposta, ele lê até o final do byte da linha, se isso for definido configurando a propriedade tcp.eolByte , caso contrário até o final do fluxo de entrada. Você pode controlar a codificação do conjunto de caracteres configurando tcp.charset , que assumirá como padrão a codificação padrão da plataforma.
BinaryTCPClientImpl
Essa implementação converte a entrada da GUI, que deve ser uma string codificada em hexadecimal, em binário e executa o inverso ao ler a resposta. Ao ler a resposta, ele lê até o final do byte da mensagem, se isso for definido configurando a propriedade tcp.BinaryTCPClient.eomByte , caso contrário até o final do fluxo de entrada.
LengthPrefixedBinaryTCPClientImpl
Essa implementação estende BinaryTCPClientImpl prefixando os dados da mensagem binária com um byte de comprimento binário. O prefixo de comprimento é padronizado para 2 bytes. Isso pode ser alterado configurando a propriedade tcp.binarylength.prefix.length .
Tratamento de tempo limite
Se o tempo limite for definido, a leitura será encerrada quando expirar. Portanto, se você estiver usando um eolByte / eomByte , certifique-se de que o tempo limite seja suficientemente longo, caso contrário, a leitura será encerrada antecipadamente.
Tratamento de respostas
Se tcp.status.prefix for definido, a mensagem de resposta será pesquisada pelo texto que segue até o sufixo. Se algum texto for encontrado, ele será usado para definir o código de resposta. A mensagem de resposta é então buscada no arquivo de propriedades (se fornecido).
Uso de pré e sufixo
Por exemplo, se o prefixo = " [ " e o sufixo = " ] ", a seguinte resposta:
[J28] XI123,23,GBP,CR
teria o código de resposta J28 .
Os códigos de resposta no intervalo " 400 "-" 499 " e " 500 "-" 599 " são atualmente considerados como falhas; todos os outros são bem sucedidos. [Isso precisa ser configurável!]
O nome de login/senha não são usados ​​pelas implementações de TCP fornecidas.

Os soquetes são desconectados no final de uma execução de teste.
Captura de tela do painel de controle do amostrador TCP
Captura de tela do painel de controle do amostrador TCP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Nome da classe TCPClient
Nome da classe TCPClient. O padrão é a propriedade tcp.handler , falhando TCPClientImpl .
Não
Nome do servidor ou IP
Nome ou IP do servidor TCP
Sim
Número da porta
Porta a ser usada
Sim
Reutilizar conexão
Se selecionado, a conexão é mantida aberta. Caso contrário, é fechado quando os dados são lidos.
Sim
Fechar conexão
Se selecionado, a conexão será fechada após a execução do amostrador.
Sim
SO_LINGER
Habilite/desabilite SO_LINGER com o tempo de espera especificado em segundos quando um soquete é criado. Se você definir o valor " SO_LINGER " como 0 , poderá evitar um grande número de soquetes com um status TIME_WAIT .
Não
Valor de byte de fim de linha (EOL)
Valor de byte para fim de linha, defina-o como um valor fora do intervalo -128 a +127 para pular a verificação de eol . Você pode definir isso no arquivo jmeter.properties também com a propriedade eolByte . Se você definir isso no TCP Sampler Config e no arquivo jmeter.properties ao mesmo tempo, o valor da configuração no TCP Sampler Config será usado.
Não
Tempo limite de conexão
Tempo limite de conexão (milissegundos, 0 desativa).
Não
Tempo limite de resposta
Tempo limite de resposta (milissegundos, 0 desabilita).
Não
Definir Sem Atraso
Consulte java.net.Socket.setTcpNoDelay() . Se selecionado, isso desativará o algoritmo de Nagle, caso contrário, o algoritmo de Nagle será usado.
Sim
Texto para enviar
Texto a ser enviado
Sim
Usuário de login
Nome de usuário - não usado pela implementação padrão
Não
Senha
Senha - não usada por implementação padrão (NB, isso é armazenado sem criptografia no plano de teste)
Não
^

Editora JMS¶

O JMS Publisher publicará mensagens em um determinado destino (tópico/fila). Para aqueles que não estão familiarizados com JMS, é a especificação J2EE para mensagens. Existem inúmeros servidores JMS no mercado e várias opções de código aberto.


O JMeter não inclui nenhum jar de implementação JMS; isso deve ser baixado do provedor JMS e colocado no diretório lib
Captura de tela do painel de controle do JMS Publisher
Captura de tela do painel de controle do JMS Publisher

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
usar o arquivo de propriedades JNDI
use jndi.properties . Observe que o arquivo deve estar no classpath - por exemplo, atualizando a propriedade user.classpath JMeter. Se esta opção não for selecionada, o JMeter utiliza os campos " JNDI Initial Context Factory " e " URL do Provedor " para criar a conexão.
Sim
Fábrica de Contexto Inicial JNDI
Nome da fábrica de contexto
Não
URL do provedor
A URL para o provedor JMS
Sim, a menos que esteja usando jndi.properties
Destino
O destino da mensagem (tópico ou nome da fila)
Sim
Configurar
O tipo de configuração de destino. Com At startup , o nome de destino é estático (ou seja, sempre o mesmo nome durante o teste), com Each sample , o nome de destino é dinâmico e é avaliado em cada amostra (ou seja, o nome de destino pode ser uma variável)
Sim
Autenticação
Requisito de autenticação para o provedor JMS
Sim
Do utilizador
Nome de usuário
Não
Senha
Senha (NB isso é armazenado sem criptografia no plano de teste)
Não
Expiração
O tempo de expiração (em milissegundos) da mensagem antes de se tornar obsoleta. Se você não especificar um tempo de expiração, o valor padrão será 0 (nunca expira).
Não
Prioridade
O nível de prioridade da mensagem. Existem dez níveis de prioridade de 0 (mais baixo) a 9 (mais alto). Se você não especificar um nível de prioridade, o nível padrão será 4 .
Não
Reconectar em códigos de erro (regex)
Expressão regular para códigos de erro JMSException que forçam a reconexão. Se estiver vazio, nenhuma reconexão será feita
Não
Número de amostras para agregar
Número de amostras para agregar
Sim
Origem da mensagem
Onde obter a mensagem:
De arquivo
significa que o arquivo referenciado será lido e reutilizado por todas as amostras. Se o nome do arquivo for alterado, ele será recarregado desde o JMeter 3.0
Arquivo aleatório da pasta especificada abaixo
significa que um arquivo aleatório será selecionado da pasta especificada abaixo, esta pasta deve conter arquivos com extensão .dat para mensagens de bytes ou arquivos com extensão .txt ou .obj para mensagens de objeto ou texto
Área de texto
A mensagem a ser usada para mensagem de texto ou objeto
Sim
Tipo de mensagem
Texto, Mapa, Mensagem de Objeto ou Mensagem de Bytes
Sim
Codificação de conteúdo
Especifique a codificação para ler o arquivo de origem da mensagem:
RAW :
Nenhum suporte de variável do arquivo e carregá-lo com o conjunto de caracteres padrão do sistema.
PADRÃO :
Carregar arquivo com codificação de sistema padrão, exceto para XML que depende do prólogo XML. Se o arquivo contiver variáveis, elas serão processadas.
Conjuntos de caracteres padrão :
A codificação especificada (válida ou não) é usada para ler o arquivo e processar as variáveis
Sim
Usar o modo de entrega não persistente?
Se deve definir DeliveryMode.NON_PERSISTENT (o padrão é false )
Não
Propriedades JMS
As Propriedades JMS são propriedades específicas para o sistema de mensagens subjacente. Você pode configurar o nome, o valor e a classe (tipo) de valor. O tipo padrão é String . Por exemplo: para serviços da Web do WebSphere 5.1, você precisará configurar a Propriedade JMS targetService para testar serviços da Web por meio do JMS.
Não

Para o tipo MapMessage, o JMeter lê a origem como linhas de texto. Cada linha deve ter 3 campos, delimitados por vírgulas. Os campos são:

  • Nome da entrada
  • Nome da classe do objeto, por exemplo " String " (assume o pacote java.lang se não for especificado)
  • Valor da string do objeto
valorOf(String)
nome, String, Exemplo
tamanho, inteiro, 1234
A mensagem Object é implementada e funciona da seguinte forma:
  • Coloque o JAR que contém seu objeto e suas dependências na pasta jmeter_home/lib/
  • Serialize seu objeto como XML usando XStream
  • Coloque o resultado em um arquivo com sufixo .txt ou .obj ou coloque o conteúdo XML diretamente na Área de Texto
Observe que, se a mensagem estiver em um arquivo, a substituição de propriedades não ocorrerá enquanto ocorreria se você usar a Área de Texto.

A tabela a seguir mostra alguns valores que podem ser úteis ao configurar o JMS:

Apache ActiveMQ Valor(es) Comente
Fábrica de contextoorg.apache.activemq.jndi.ActiveMQInitialContextFactory.
URL do provedorvm://localhost
URL do provedorvm:(corretor:(vm://localhost)?persistent=false)Desativar persistência
Referência da filadynamicQueues/QUEUENAME Defina dinamicamente o QUEUENAME para JNDI
Referência do tópicodynamicTopics/TOPICNAME Defina dinamicamente o TOPICNAME para JNDI
^

Assinante JMS¶

O Assinante JMS assinará mensagens em um determinado destino (tópico ou fila). Para aqueles que não estão familiarizados com JMS, é a especificação J2EE para mensagens. Existem inúmeros servidores JMS no mercado e várias opções de código aberto.


O JMeter não inclui nenhum jar de implementação JMS; isso deve ser baixado do provedor JMS e colocado no diretório lib
Captura de tela do painel de controle do assinante JMS
Captura de tela do Painel de Controle do Assinante JMS

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
usar o arquivo de propriedades JNDI
use jndi.properties . Observe que o arquivo deve estar no classpath - por exemplo, atualizando a propriedade user.classpath JMeter. Se esta opção não for selecionada, o JMeter utiliza os campos " JNDI Initial Context Factory " e " URL do Provedor " para criar a conexão.
Sim
Fábrica de Contexto Inicial JNDI
Nome da fábrica de contexto
Não
URL do provedor
A URL para o provedor JMS
Não
Destino
o destino da mensagem (tópico ou nome da fila)
Sim
ID de assinatura durável
O ID a ser usado para uma assinatura durável. Na primeira utilização, a respectiva fila será gerada automaticamente pelo provedor JMS, caso ainda não exista.
Não
ID do Cliente
O ID do cliente a ser usado quando você usa uma assinatura durável. Certifique-se de adicionar uma variável como ${__threadNum} quando tiver mais de um Thread.
Não
Seletor JMS
Seletor de Mensagens conforme definido pela especificação JMS para extrair apenas mensagens que respeitam a condição do Seletor. A sintaxe usa subparte do SQL 92.
Não
Configurar
O tipo de configuração de destino. Com At startup , o nome de destino é estático (ou seja, sempre o mesmo nome durante o teste), com Each sample , o nome de destino é dinâmico e é avaliado em cada amostra (ou seja, o nome de destino pode ser uma variável)
Sim
Autenticação
Requisito de autenticação para o provedor JMS
Sim
Do utilizador
Nome de usuário
Não
Senha
Senha (NB isso é armazenado sem criptografia no plano de teste)
Não
Número de amostras para agregar
número de amostras para agregar
Sim
Salvar resposta
o amostrador deve armazenar a resposta. Caso contrário, apenas o comprimento da resposta é retornado.
Sim
Tempo esgotado
Especifique o tempo limite a ser aplicado, em milissegundos. 0 = nenhum. Este é o tempo limite agregado geral, não por amostra.
Sim
Cliente
Qual implementação de cliente usar. Ambos criam conexões que podem ler mensagens. No entanto, eles usam uma estratégia diferente, conforme descrito abaixo:
MessageConsumidor.receber()
chama receive() para cada mensagem solicitada. Mantém a conexão entre amostras, mas não busca mensagens a menos que o amostrador esteja ativo. Isso é mais adequado para assinaturas de fila.
MessageListener.onMessage()
estabelece um Listener que armazena todas as mensagens recebidas em uma fila. O ouvinte permanece ativo após a conclusão do amostrador. Isso é mais adequado para assinaturas de tópicos.
Sim
Parar entre as amostras?
Se selecionado, o JMeter chama Connection.stop() no final de cada amostra (e chama start() antes de cada amostra). Isso pode ser útil em alguns casos em que várias amostras/threads têm conexões com a mesma fila. Se não estiver selecionado, o JMeter chama Connection.start() no início do encadeamento e não chama stop() até o final do encadeamento.
Sim
Separador
Separador usado para separar mensagens quando houver mais de uma (relacionada à configuração de Número de amostras a serem agregadas). Observe que \n , \r , \t são aceitos.
Não
Reconectar em códigos de erro (regex)
Expressão regular para códigos de erro JMSException que forçam a reconexão. Se estiver vazio, nenhuma reconexão será feita
Não
Pausa entre erros (ms)
Pausa em milissegundos que o Assinante fará quando ocorrer um erro
Não
^

JMS Ponto a Ponto

Este amostrador envia e opcionalmente recebe Mensagens JMS por meio de conexões ponto a ponto (filas). É diferente das mensagens pub/sub e geralmente é usado para lidar com transações.

request_only normalmente será usado para colocar carga em um sistema JMS.
request_reply será usado quando você quiser testar o tempo de resposta de um serviço JMS que processa mensagens enviadas para a Fila de Solicitações, pois esse modo aguardará a resposta na fila de Respostas enviada por esse serviço.
navegar retorna a profundidade da fila atual, ou seja, o número de mensagens na fila.
read lê uma mensagem da fila (se houver).
clear limpa a fila, ou seja, remove todas as mensagens da fila.

O JMeter usa as propriedades java.naming.security.[principal|credentials] - se presente - ao criar a Conexão de Fila. Se esse comportamento não for desejado, configure a propriedade JMeter JMSSampler.useSecurity.properties=false


O JMeter não inclui nenhum jar de implementação JMS; isso deve ser baixado do provedor JMS e colocado no diretório lib
Captura de tela do painel de controle do JMS ponto a ponto
Captura de tela do Painel de Controle do JMS Ponto a Ponto

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Fábrica de conexões de fila
O nome JNDI do connection factory de fila a ser usado para conexão com o sistema de mensagens.
Sim
Fila de solicitação de nome JNDI
Este é o nome JNDI da fila para a qual as mensagens são enviadas.
Sim
Fila de resposta de nome JNDI
O nome JNDI da fila de recebimento. Se um valor for fornecido aqui e o estilo de comunicação for Solicitar Resposta , essa fila será monitorada para respostas às solicitações enviadas.
Não
Número de amostras para agregar
Número de amostras a agregar. Aplicável apenas ao estilo de comunicação Leitura.
Sim
Seletor JMS
Seletor de Mensagens conforme definido pela especificação JMS para extrair apenas mensagens que respeitam a condição do Seletor. A sintaxe usa subparte do SQL 92.
Não
Estilo de comunicação
O estilo de comunicação pode ser Request Only (também conhecido como Fire and Forget), Request Response , Read , Browse , Clear :
Somente solicitação
enviará apenas mensagens e não monitorará as respostas. Como tal, pode ser usado para colocar carga em um sistema.
Solicitar resposta
enviará mensagens e monitorará as respostas que recebe. O comportamento depende do valor da Fila de Respostas de Nome JNDI. Se a Fila de Respostas do Nome JNDI tiver um valor, essa fila será usada para monitorar os resultados. A correspondência de solicitação e resposta é feita com o ID da mensagem da solicitação e o ID de correlação da resposta. Se a fila de resposta do nome JNDI estiver vazia, as filas temporárias serão usadas para a comunicação entre o solicitante e o servidor. Isso é muito diferente da fila de resposta fixa. Com filas temporárias, o encadeamento de envio será bloqueado até que a mensagem de resposta seja recebida. Com o modo Request Response , você precisa ter um Servidor que escute as mensagens enviadas para Request Queue e envie respostas para a fila referenciada por message.getJMSReplyTo() .
Ler
lerá uma mensagem de uma fila de saída que não possui ouvintes anexados. Isso pode ser conveniente para fins de teste. Este método pode ser usado se você precisar manipular filas sem um arquivo de ligação (caso a biblioteca jmeter-jms-skip-jndi seja usada), que funciona apenas com o amostrador JMS Point-to-Point. Caso os arquivos de ligação sejam usados, também é possível usar o JMS Subscriber Sampler para leitura de uma fila.
Navegar
determinará a profundidade da fila atual sem remover mensagens da fila, retornando o número de mensagens na fila.
Claro
limpará a fila, ou seja, removerá todas as mensagens da fila.
Sim
Use campos alternativos para correlação de mensagens
Essas caixas de seleção selecionam os campos que serão usados ​​para combinar a mensagem de resposta com a solicitação original.
Usar ID da mensagem de solicitação
se selecionado, o pedido JMSMessageID será usado, caso contrário, o pedido JMSCorrelationID será usado. Neste último caso, o id de correlação deve ser especificado na solicitação.
Usar ID da mensagem de resposta
se selecionado, a resposta JMSMessageID será usada, caso contrário, a resposta JMSCorrelationID será usada.
Há dois padrões de correlação JMS usados ​​com frequência:
Padrão de ID de Correlação JMS
ou seja, correspondência de solicitação e resposta em seus IDs de correlação => desmarque ambas as caixas de seleção e forneça um ID de correlação.
Padrão de ID de Mensagem JMS
ou seja, combine o ID da mensagem de solicitação com o ID de correlação de resposta => selecione "Usar ID da mensagem de solicitação" apenas.
Em ambos os casos, o aplicativo JMS é responsável por preencher o ID de correlação conforme necessário.
se a mesma fila for usada para enviar e receber mensagens, a mensagem de resposta será a mesma que a mensagem de solicitação. Nesse caso, forneça um ID de correlação e desmarque ambas as caixas de seleção; ou marque ambas as caixas de seleção para usar o ID da mensagem para correlação. Isso pode ser útil para verificar o rendimento bruto do JMS.
Sim
Tempo esgotado
O tempo limite em milissegundos para as mensagens de resposta. Se uma resposta não for recebida dentro do tempo especificado, o caso de teste específico falhará e a mensagem de resposta específica recebida após o tempo limite será descartada. O valor padrão é 2000 ms. 0 significa sem tempo limite.
Sim
Expiração
O tempo de expiração (em milissegundos) da mensagem antes de se tornar obsoleta. Se você não especificar um tempo de expiração, o valor padrão será 0 (nunca expira).
Não
Prioridade
O nível de prioridade da mensagem. Existem dez níveis de prioridade de 0 (mais baixo) a 9 (mais alto). Se você não especificar um nível de prioridade, o nível padrão será 4 .
Não
Usar o modo de entrega não persistente?
Se deve definir DeliveryMode.NON_PERSISTENT .
Sim
Contente
O conteúdo da mensagem.
Não
Propriedades JMS
As Propriedades JMS são propriedades específicas para o sistema de mensagens subjacente. Você pode configurar o nome, o valor e a classe (tipo) de valor. O tipo padrão é String . Por exemplo: para serviços da Web do WebSphere 5.1, você precisará configurar a Propriedade JMS targetService para testar serviços da Web por meio do JMS.
Não
Fábrica de contexto inicial
A Fábrica de Contexto Inicial é a fábrica a ser usada para consultar os Recursos JMS.
Não
Propriedades JNDI
As Propriedades JNDI são as propriedades específicas para a implementação JNDI subjacente.
Não
URL do provedor
A URL para o provedor JMS.
Não
^

Solicitação JUnit¶

A implementação atual suporta convenções e extensões JUnit padrão. Também inclui extensões como oneTimeSetUp e oneTimeTearDown . O amostrador funciona como o Java Request com algumas diferenças.
  • em vez de usar a interface de teste do JMeter, ele verifica os arquivos jar em busca de classes que estendem a classe TestCase do JUnit . Isso inclui qualquer classe ou subclasse.
  • Os arquivos jar de teste JUnit devem ser colocados no diretório jmeter/lib/junit em vez do diretório /lib . Você também pode usar a propriedade " user.classpath " para especificar onde procurar as classes TestCase .
  • O amostrador JUnit não usa pares de nome/valor para configuração como o Java Request . O amostrador assume que setUp e tearDown configurarão o teste corretamente.
  • O amostrador mede o tempo decorrido apenas para o método de teste e não inclui setUp e tearDown .
  • Cada vez que o método de teste é chamado, o JMeter passará o resultado para os ouvintes.
  • O suporte para oneTimeSetUp e oneTimeTearDown é feito como um método. Como o JMeter é multi-thread, não podemos chamar oneTimeSetUp / oneTimeTearDown da mesma forma que o Maven o faz.
  • O amostrador relata exceções inesperadas como erros. Existem algumas diferenças importantes entre os executores de teste JUnit padrão e a implementação do JMeter. Em vez de criar uma nova instância da classe para cada teste, o JMeter cria 1 instância por amostrador e a reutiliza. Isso pode ser alterado com a caixa de seleção " Criar uma nova instância por amostra ".
A implementação atual do amostrador tentará criar uma instância usando primeiro o construtor de string. Se a classe de teste não declarar um construtor de string, o amostrador procurará um construtor vazio. Exemplo abaixo:
Construtores JUnit
Construtor vazio:
classe pública meuTestCase {
  public myTestCase() {}
}
Construtor de strings:
classe pública meuTestCase {
  public myTestCase(String texto) {
    super(texto);
  }
}
Por padrão, o JMeter fornecerá alguns valores padrão para o código e a mensagem de sucesso/falha. Os usuários devem definir um conjunto exclusivo de códigos de sucesso e falha e usá-los uniformemente em todos os testes.

Diretrizes Gerais

Se você usar setUp e tearDown , certifique-se de que os métodos sejam declarados públicos. Caso contrário, o teste pode não ser executado corretamente.
Aqui estão algumas diretrizes gerais para escrever testes JUnit para que funcionem bem com o JMeter. Como o JMeter é executado em vários segmentos, é importante manter algumas coisas em mente.
  • Escreva os métodos setUp e tearDown para que sejam thread-safe. Isso geralmente significa evitar o uso de membros estáticos.
  • Faça dos métodos de teste unidades de trabalho discretas e não longas sequências de ações. Ao manter o método de teste em uma operação discreta, fica mais fácil combinar métodos de teste para criar novos planos de teste.
  • Evite fazer com que os métodos de teste dependam uns dos outros. Como o JMeter permite o sequenciamento arbitrário de métodos de teste, o comportamento do tempo de execução é diferente do comportamento padrão do JUnit.
  • Se um método de teste for configurável, tenha cuidado com o local onde as propriedades são armazenadas. A leitura das propriedades do arquivo Jar é recomendada.
  • Cada amostrador cria uma instância da classe de teste, portanto, escreva seu teste para que a configuração ocorra em oneTimeSetUp e oneTimeTearDown .
Captura de tela do painel de controle da solicitação JUnit
Captura de tela do painel de controle da solicitação JUnit

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Pesquisar anotações JUnit4
Selecione isto para procurar testes JUnit4 ( anotações @Test )
Sim
Filtro de pacote
Lista de pacotes separados por vírgulas para mostrar. Exemplo, org.apache.jmeter , junit.framework .
Nome da classe
Nome totalmente qualificado da classe de teste JUnit.
Sim
String do construtor
String passa para o construtor de string. Se uma string for definida, o sampler usará o construtor de string em vez do construtor vazio.
Método de teste
O método a testar.
Sim
Mensagem de sucesso
Uma mensagem descritiva indicando o que significa sucesso.
Código de sucesso
Um código exclusivo indicando que o teste foi bem-sucedido.
Mensagem de falha
Uma mensagem descritiva indicando o que significa falha.
Código de falha
Um código exclusivo indicando que o teste falhou.
Mensagem de erro
Uma descrição para erros.
Erro de código
Algum código para erros. Não precisa ser único.
Não chame setUp e tearDown
Configure o amostrador para não chamar setUp e tearDown . Por padrão, setUp e tearDown devem ser chamados. Não chamar esses métodos pode afetar o teste e torná-lo impreciso. Esta opção só deve ser usada com a chamada oneTimeSetUp e oneTimeTearDown . Se o método selecionado for oneTimeSetUp ou oneTimeTearDown , esta opção deve ser marcada.
Sim
Anexar erros de declaração
Se os erros de asserção devem ou não ser anexados à mensagem de resposta.
Sim
Anexar exceções de tempo de execução
Se as exceções de tempo de execução devem ou não ser anexadas à mensagem de resposta. Aplica-se apenas se " Anexar erros de declaração " não estiver selecionado.
Sim
Criar uma nova instância por amostra
Se deve ou não criar uma nova instância JUnit para cada amostra. O padrão é false, o que significa que o JUnit TestCase é criado e reutilizado.
Sim

As seguintes anotações JUnit4 são reconhecidas:

@Teste
usado para encontrar métodos e classes de teste. Os atributos " esperado " e " timeout " são suportados.
@Antes da
tratado da mesma forma que setUp() no JUnit3
@Depois
tratado da mesma forma que tearDown() no JUnit3
@BeforeClass , @AfterClass
tratados como métodos de teste para que possam ser executados independentemente, conforme necessário
Observe que o JMeter atualmente executa os métodos de teste diretamente, em vez de deixá-los para o JUnit. Isso permite que os métodos setUp / tearDown sejam excluídos do tempo de amostragem. Como consequência, o tempo do amostrador exclui o tempo gasto para chamar os métodos setUp / tearDown e suas alternativas baseadas em anotação.
^

Amostrador de Leitor de Correio

O Mail Reader Sampler pode ler (e opcionalmente excluir) mensagens de correio usando os protocolos POP3(S) ou IMAP(S).

Captura de tela do painel de controle do amostrador de leitor de e-mail
Captura de tela do painel de controle do amostrador de leitor de e-mail

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Tipo de servidor
O protocolo usado pelo provedor: por exemplo , pop3 , pop3s , imap , imaps . ou outra string representando o protocolo do servidor. Por exemplo , arquivo para uso com o provedor de arquivo de correio somente leitura. Os nomes reais dos provedores para POP3 e IMAP são pop3 e imap
Sim
Servidor
Nome do host ou endereço IP do servidor. Veja abaixo para uso com protocolo de arquivo .
Sim
Porta
Porta a ser usada para conectar ao servidor (opcional)
Não
Nome de usuário
Nome de login do usuário
Senha
Senha de login do usuário (NB isso é armazenado sem criptografia no plano de teste)
Pasta
A pasta IMAP(S) a ser usada. Veja abaixo para uso com protocolo de arquivo .
Sim, se estiver usando IMAP(S)
Número de mensagens a serem recuperadas
Defina isso para recuperar todas ou algumas mensagens
Sim
Buscar apenas cabeçalhos
Se selecionado, apenas os cabeçalhos das mensagens serão recuperados.
Sim
Excluir mensagens do servidor
Se definido, as mensagens serão excluídas após a recuperação
Sim
Armazenar a mensagem usando MIME
Se a mensagem deve ser armazenada como MIME. Em caso afirmativo, toda a mensagem bruta é armazenada nos Dados de Resposta; os cabeçalhos não são armazenados conforme estão disponíveis nos dados. Caso contrário, os cabeçalhos das mensagens são armazenados como Cabeçalhos de Resposta. Alguns cabeçalhos são armazenados ( Date , To , From , Subject ) no corpo.
Sim
Não use recursos de segurança
Indica que a conexão com o servidor não utiliza nenhum protocolo de segurança.
Usar SSL
Indica que a conexão com o servidor deve usar o protocolo SSL.
Usar StartTLS
Indica que a conexão com o servidor deve tentar iniciar o protocolo TLS.
Aplicar StartTLS
Se o servidor não iniciar o protocolo TLS, a conexão será encerrada.
Confiar em todos os certificados
Quando selecionado, ele aceitará todos os certificados independentes da CA.
Usar armazenamento confiável local
Quando selecionado, ele aceitará apenas certificados confiáveis ​​localmente.
Truststore local
Caminho para o arquivo que contém os certificados confiáveis. Os caminhos relativos são resolvidos em relação ao diretório atual.
Caso contrário, no diretório que contém o script de teste (arquivo JMX).
Você pode passar propriedades de ambiente relacionadas a correio adicionando a user.properties qualquer uma das propriedades descritas aqui .

As mensagens são armazenadas como subamostras do amostrador principal. As partes da mensagem com várias partes são armazenadas como subamostras da mensagem.

Tratamento especial para o protocolo " file ":
O provedor de arquivo JavaMail pode ser usado para ler mensagens brutas de arquivos. O campo do servidor é usado para especificar o caminho para o pai da pasta . Arquivos de mensagens individuais devem ser armazenados com o nome n.msg , onde n é o número da mensagem. Alternativamente, o campo do servidor pode ser o nome de um arquivo que contém uma única mensagem. A implementação atual é bastante básica e destina-se principalmente para fins de depuração.

^

Ação de Controle de Fluxo (era: Ação de Teste)

O amostrador Flow Control Action é um amostrador destinado ao uso em um controlador condicional. Em vez de gerar uma amostra, o elemento de teste pausa ou interrompe o destino selecionado.

Este sampler também pode ser útil em conjunto com o Transaction Controller, pois permite incluir pausas sem a necessidade de gerar uma amostra. Para atrasos variáveis, defina o tempo de pausa para zero e adicione um Timer como filho.

A ação " Parar " interrompe o encadeamento ou teste após concluir qualquer amostra que esteja em andamento. A ação " Parar agora " interrompe o teste sem aguardar a conclusão das amostras; ele interromperá quaisquer amostras ativas. Se alguns encadeamentos não pararem dentro do limite de tempo de 5 segundos, uma mensagem será exibida no modo GUI. Você pode tentar usar o comando Stop para ver se isso interromperá os threads, mas se não, você deve sair do JMeter. No modo CLI, o JMeter será encerrado se alguns encadeamentos não pararem dentro do limite de tempo de 5 segundos.

O tempo de espera pode ser alterado usando a propriedade JMeter jmeterengine.threadstop.wait . O tempo é dado em milissegundos.

Captura de tela do painel de controle da ação de controle de fluxo
Captura de tela do Painel de Controle da Ação de Controle de Fluxo

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Alvo
Thread atual / todos os threads (ignorados para pausar e ir para a próxima iteração do loop )
Sim
Ação
Pausar / Parar / Parar Agora / Ir para a próxima iteração do loop
Sim
Duração
Por quanto tempo pausar (milissegundos)
Sim, se Pausar for selecionado
^

Amostrador SMTP

O SMTP Sampler pode enviar mensagens de correio usando o protocolo SMTP/SMTPS. É possível definir protocolos de segurança para a conexão (SSL e TLS), bem como autenticação do usuário. Se um protocolo de segurança for usado, ocorrerá uma verificação no certificado do servidor.
Duas alternativas para lidar com essa verificação estão disponíveis:

Confiar em todos os certificados
Isso irá ignorar a verificação da cadeia de certificados
Use um armazenamento confiável local
Com esta opção, a cadeia de certificados será validada em relação ao arquivo de armazenamento confiável local.
Captura de tela do painel de controle do amostrador SMTP
Captura de tela do painel de controle do amostrador SMTP

Parâmetros

Atributo
Descrição
Requeridos
Servidor
Nome do host ou endereço IP do servidor. Veja abaixo para uso com protocolo de arquivo .
Sim
Porta
Porta a ser usada para se conectar ao servidor. Os padrões são: SMTP=25, SSL=465, StartTLS=587
Não
Tempo limite de conexão
Valor de tempo limite de conexão em milissegundos (nível de soquete). O padrão é tempo limite infinito.
Não
Tempo de ler esgotado
Valor de tempo limite de leitura em milissegundos (nível de soquete). O padrão é tempo limite infinito.
Não
Endereço de
O endereço do remetente que aparecerá no e-mail
Sim
Endereço para
O endereço de e-mail de destino (vários valores separados por " ; ")
Sim, a menos que seja especificado CC ou BCC
Endereço para CC
Endereço de e-mail de destino da cópia carbono (vários valores separados por " ; ")
Não
Endereço para BCC
Endereço de e-mail de destino de cópia oculta (vários valores separados por " ; ")
Não
Endereço de resposta
Endereço de resposta alternativo (vários valores separados por " ; ")
Não
Usar autenticação
Indica se o servidor SMTP requer autenticação de usuário
Nome de usuário
Nome de login do usuário
Senha
Senha de login do usuário (NB isso é armazenado sem criptografia no plano de teste)
Não use recursos de segurança
Indica que a conexão com o servidor SMTP não utiliza nenhum protocolo de segurança.
Usar SSL
Indica que a conexão com o servidor SMTP deve usar o protocolo SSL.
Usar StartTLS
Indica que a conexão com o servidor SMTP deve tentar iniciar o protocolo TLS.
Aplicar StartTLS
Se o servidor não iniciar o protocolo TLS, a conexão será encerrada.
Confiar em todos os certificados
Quando selecionado, ele aceitará todos os certificados independentes da CA.
Usar armazenamento confiável local
Quando selecionado, ele aceitará apenas certificados confiáveis ​​localmente.
Truststore local
Caminho para o arquivo que contém os certificados confiáveis. Os caminhos relativos são resolvidos em relação ao diretório atual.
Caso contrário, no diretório que contém o script de teste (arquivo JMX).
Substituir protocolos SSL/TLS do sistema
Especifique um protocolo SSL/TLS customizado como lista separada por espaço para usar no exemplo de handshake TLSv1 TLSv1.1 TLSv1.2 . Padrões para todos os protocolos suportados.
Não
Sujeito
O assunto da mensagem de e-mail.
Suprimir o cabeçalho do assunto
Se selecionado, o cabeçalho " Assunto: " é omitido do e-mail enviado. Isso é diferente de enviar um cabeçalho " Assunto: " vazio, embora alguns clientes de e-mail possam exibi-lo de forma idêntica.
Incluir carimbo de data/hora no assunto
Inclui System.currentTimemillis() na linha de assunto.
Adicionar cabeçalho
Cabeçalhos adicionais podem ser definidos usando este botão.
Não
Mensagem
O corpo da mensagem.
Enviar corpo simples (ou seja, não multipart/mixed)
Se selecionado, envie o corpo como uma mensagem simples, ou seja, não multipart/mixed , se possível. Se o corpo da mensagem estiver vazio e houver um único arquivo, envie o conteúdo do arquivo como o corpo da mensagem.
Observação: se o corpo da mensagem não estiver vazio e houver pelo menos um arquivo anexado, o corpo será enviado como multipart/mixed .
Não
Anexar arquivos
Arquivos a serem anexados à mensagem.
Enviar .eml
Se definido, o arquivo .eml será enviado em vez das entradas nos campos Assunto , Mensagem e Anexar arquivo(s)
Calcular o tamanho da mensagem
Calcula o tamanho da mensagem e o armazena no resultado da amostra.
Ativar registro de depuração?
Se definido, a propriedade " mail.debug " é definida como " true "
^

Amostrador de Processo do SO

O OS Process Sampler é um sampler que pode ser usado para executar comandos na máquina local.
Deve permitir a execução de qualquer comando que possa ser executado a partir da linha de comando.
A validação do código de retorno pode ser habilitada e o código de retorno esperado pode ser especificado.

Observe que os shells do SO geralmente fornecem análise de linha de comando. Isso varia entre os sistemas operacionais, mas geralmente o shell dividirá os parâmetros no espaço em branco. Alguns shells expandem nomes de arquivos curinga; alguns não. O mecanismo de cotação também varia entre os sistemas operacionais. O amostrador deliberadamente não faz nenhuma análise ou manipulação de cotações. O comando e seus parâmetros devem ser fornecidos na forma esperada pelo executável. Isso significa que as configurações do amostrador não serão portáteis entre sistemas operacionais.

Muitos sistemas operacionais têm alguns comandos internos que não são fornecidos como executáveis ​​separados. Por exemplo, o comando Windows DIR faz parte do interpretador de comandos ( CMD.EXE ). Esses built-ins não podem ser executados como programas independentes, mas devem ser fornecidos como argumentos para o interpretador de comandos apropriado.

Por exemplo, a linha de comando do Windows: DIR C:\TEMP precisa ser especificada da seguinte maneira:

Comando:
CMD
Parâmetro 1:
/C
Parâmetro 2:
DIR
Parâmetro 3:
C:\TEMP
Captura de tela do painel de controle do SO Process Sampler
Captura de tela do painel de controle do SO Process Sampler

Parâmetros

Atributo
Descrição
Requeridos
Comando
O nome do programa a ser executado.
Sim
Diretório de trabalho
Diretório a partir do qual o comando será executado, o padrão é a pasta referenciada por " user.dir " Propriedade do sistema
Não
Parâmetros de comando
Parâmetros passados ​​para o nome do programa.
Não
Parâmetros do ambiente
Pares de chave/valor adicionados ao ambiente ao executar o comando.
Não
Entrada padrão (stdin)
Nome do arquivo do qual a entrada deve ser obtida ( STDIN ).
Não
Saída padrão (stdout
Nome do arquivo de saída para saída padrão ( STDOUT ). Se omitido, a saída é capturada e retornada como dados de resposta.
Não
Erro padrão (stderr)
Nome do arquivo de saída para erro padrão ( STDERR ). Se omitido, a saída é capturada e retornada como dados de resposta.
Não
Verifique o código de retorno
Se marcado, o amostrador comparará o código de retorno com o Código de retorno esperado .
Não
Código de retorno esperado
Código de retorno esperado para Chamada do Sistema, necessário se " Verificar Código de Retorno " estiver marcado. A Nota 500 é usada como um indicador de erro no JMeter, portanto, você não deve usá-la.
Não
Tempo esgotado
Tempo limite para o comando em milissegundos, o padrão é 0 , o que significa que não há tempo limite. Se o tempo limite expirar antes que o comando termine, o JMeter tentará matar o processo do SO.
Não
^

Script MongoDB (OBSOLETO)

Este amostrador permite enviar uma solicitação para um MongoDB.

Antes de usar isso, você precisa configurar um elemento de configuração de configuração de origem do MongoDB

Este Elemento atualmente usa com.mongodb.DB#eval que tem um bloqueio de escrita global causando um impacto no desempenho do banco de dados, veja db.eval() . Portanto, é melhor evitar usar esse elemento para testes de carga e usar scripts JSR223+Groovy usando MongoDBHolder . O MongoDB Script é mais adequado para testes funcionais ou configuração de teste (threads de configuração/desmontagem)
Captura de tela do painel de controle do script MongoDB (OBSOLETO)
Captura de tela do painel de controle do script MongoDB (OBSOLETO)

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Fonte MongoDB
Nome da variável JMeter à qual a conexão do MongoDB está vinculada. Isso deve estar de acordo com o campo ' MongoDB Source ' de um MongoDB Source Config.
Sim
Nome do banco de dados
Nome do banco de dados, será usado em seu script
Sim
Nome de usuário
Não
Senha
Não
Roteiro
Script Mongo como seria usado no shell MongoDB
Sim
Certifique-se de que o nome da variável seja exclusivo no plano de teste.
^
^

Solicitação de Parafuso

Este amostrador permite executar consultas Cypher por meio do protocolo Bolt.

Antes de usar isso, você precisa configurar uma configuração de conexão de parafuso

Cada solicitação usa uma conexão adquirida do pool e a retorna ao pool quando o amostrador é concluído. O tamanho do pool de conexões usa os padrões do driver (~100) e não é configurável no momento.

O tempo de resposta medido corresponde à execução "completa" da consulta, incluindo o tempo para executar a consulta cifrada E o tempo para consumir os resultados enviados de volta pelo banco de dados.

Captura de tela do painel de controle da solicitação de parafuso
Captura de tela do painel de controle da solicitação de parafuso

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Comentários
Texto livre para detalhes adicionais.
Não
Declaração de cifra
A consulta a ser executada.
Sim
Parâmetros
Os valores de parâmetro, formatados em JSON.
Não
Registrar resultados da consulta
Se os dados do resultado da consulta devem ou não ser adicionados à resposta do amostrador (falso padrão). Observe que ativar isso tem uma sobrecarga de memória, use-a com sabedoria.
Não
É altamente recomendável usar parâmetros de consulta, permitindo que o banco de dados armazene em cache e reutilize planos de execução.
^
^

18.2 Controladores Lógicos


Os controladores lógicos determinam a ordem na qual os amostradores são processados.

Controlador Simples¶

O Simple Logic Controller permite que você organize seus Samplers e outros Logic Controllers. Ao contrário de outros controladores lógicos, este controlador não oferece nenhuma funcionalidade além da de um dispositivo de armazenamento.

Captura de tela do painel de controle do controlador simples
Captura de tela do painel de controle do controlador simples

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Usando o Controlador Simples

Baixe este exemplo (veja a Figura 6). Neste exemplo, criamos um Plano de Teste que envia duas solicitações HTTP Ant e duas solicitações HTTP Log4J. Agrupamos as solicitações Ant e Log4J colocando-as dentro de Simple Logic Controllers. Lembre-se, o Controlador Lógico Simples não tem efeito sobre como o JMeter processa o(s) controlador(es) que você adiciona a ele. Portanto, neste exemplo, o JMeter envia as solicitações na seguinte ordem: Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page.

Observe que o File Reporter está configurado para armazenar os resultados em um arquivo chamado " simple-test.dat " no diretório atual.

Figura 6 Exemplo de controlador simples
Figura 6 Exemplo de controlador simples
^

Controlador de Loop

Se você adicionar controladores lógicos ou generativos a um controlador de loop, o JMeter fará um loop através deles um certo número de vezes, além do valor do loop que você especificou para o grupo de threads. Por exemplo, se você adicionar uma solicitação HTTP a um Loop Controller com uma contagem de loops de dois e configurar a contagem de loops do Thread Group para três, o JMeter enviará um total de 2 * 3 = 6 solicitações HTTP.

JMeter irá expor o índice de loop como uma variável chamada __jm__<Name of your element>__idx . Assim, por exemplo, se o seu Loop Controller for chamado LC, você poderá acessar o índice de looping por meio de ${__jm__LC__idx} . O índice começa em 0

Captura de tela do painel de controle do controlador de loop
Captura de tela do painel de controle do controlador de loop

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Contagem de loops
O número de vezes que os subelementos deste controlador serão iterados a cada vez por meio de uma execução de teste.

O valor -1 é equivalente a verificar a alternância Forever .

Caso Especial: O Loop Controller embutido no elemento Thread Group se comporta um pouco diferente. A menos que definido como para sempre, ele interrompe o teste após o número determinado de iterações ter sido feito.

Ao usar uma função neste campo, saiba que ela pode ser avaliada várias vezes. Exemplo usando __Random avaliará um valor diferente para cada amostrador filho do Loop Controller e resultará em comportamento indesejado.
Sim, a menos que "Para sempre" esteja marcado
Exemplo de loop

Baixe este exemplo (veja a Figura 4). Neste exemplo, criamos um Plano de Teste que envia uma solicitação HTTP específica apenas uma vez e envia outra solicitação HTTP cinco vezes.

Figura 4 - Exemplo de controlador de loop
Figura 4 - Exemplo de controlador de loop

Configuramos o Thread Group para um único thread e um valor de contagem de loop de um. Em vez de deixar o Thread Group controlar o loop, usamos um Loop Controller. Você pode ver que adicionamos uma solicitação HTTP ao grupo de threads e outra solicitação HTTP a um controlador de loop. Configuramos o Loop Controller com um valor de contagem de loop de cinco.

O JMeter enviará as solicitações na seguinte ordem: Página inicial, Página de notícias, Página de notícias, Página de notícias, Página de notícias e Página de notícias.

Observe que o File Reporter está configurado para armazenar os resultados em um arquivo chamado " loop-test.dat " no diretório atual.
^

Controle Único

O Once Only Logic Controller diz ao JMeter para processar o(s) controlador(es) dentro dele apenas uma vez por Thread e passar por cima de quaisquer solicitações sob ele durante as iterações adicionais através do plano de teste.

O Once Only Controller agora será executado sempre durante a primeira iteração de qualquer controlador pai em loop. Assim, se o Once Only Controller for colocado sob um Loop Controller especificado para fazer um loop 5 vezes, então o Once Only Controller será executado apenas na primeira iteração através do Loop Controller (ou seja, a cada 5 vezes).

Observe que isso significa que o Once Only Controller ainda se comportará como esperado anteriormente se colocado em um Thread Group (executa apenas uma vez por teste por Thread), mas agora o usuário tem mais flexibilidade no uso do Once Only Controller.

Para testes que requerem um login, considere colocar a solicitação de login neste controlador, pois cada thread só precisa fazer login uma vez para estabelecer uma sessão.

Captura de tela do painel de controle do controlador Once Only
Captura de tela do painel de controle do controlador Once Only

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Exemplo de uma vez

Baixe este exemplo (veja a Figura 5). Neste exemplo, criamos um Plano de Teste que possui dois threads que enviam solicitação HTTP. Cada thread envia uma solicitação para a página inicial, seguida de três solicitações para a página de bugs. Embora tenhamos configurado o Thread Group para iterar três vezes, cada thread do JMeter envia apenas uma solicitação para a Home Page porque essa solicitação fica dentro de um Once Only Controller.

Figura 5. Exemplo de controlador único
Figura 5. Exemplo de controlador único

Cada thread do JMeter enviará as solicitações na seguinte ordem: Home Page, Bug Page, Bug Page, Bug Page.

Observe que o File Reporter está configurado para armazenar os resultados em um arquivo chamado " loop-test.dat " no diretório atual.

^

Controlador de intercalação

Se você adicionar controladores lógicos ou generativos a um controlador de intercalação, o JMeter alternará entre cada um dos outros controladores para cada iteração de loop.

Captura de tela do painel de controle do controlador de intercalação
Captura de tela do painel de controle do controlador de intercalação

Parâmetros

Atributo
Descrição
Requeridos
nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
ignorar blocos de subcontroladores
Se marcado, o controlador de intercalação tratará os subcontroladores como elementos de solicitação única e permitirá apenas uma solicitação por controlador por vez.
Não
Intercalar entre os fios
Se marcado, o controlador de intercalação alternará entre cada um de seus controladores filhos para cada iteração de loop, mas em todos os threads, por exemplo, em uma configuração com 4 threads e 3 controladores filho, na primeira iteração, o thread 1 executará o primeiro filho, o thread 2 o segundo filho , thread 3 terceiro filho, thread 4 primeiro filho, na próxima iteração cada thread executará o seguinte controlador filho
Não
Exemplo de Intercalação Simples

Baixe este exemplo (veja a Figura 1). Neste exemplo, configuramos o Thread Group para ter dois threads e uma contagem de loops de cinco, para um total de dez solicitações por thread. Consulte a tabela abaixo para a sequência que o JMeter envia as solicitações HTTP.

Figura 1 - Exemplo de controlador de intercalação 1
Figura 1 - Exemplo de controlador de intercalação 1
Iteração de loopCada thread JMeter envia essas solicitações HTTP
1Página de notícias
1Página de registro
2Página de perguntas frequentes
2Página de registro
3Página Gump
3Página de registro
4Como não há mais solicitações no controlador, o

JMeter reinicia e envia a primeira solicitação HTTP, que é a página de notícias.
4Página de registro
5Página de perguntas frequentes
5Página de registro
Exemplo Útil de Intercalação

Baixe outro exemplo (veja a Figura 2). Neste exemplo, configuramos o Thread Group para ter um único thread e uma contagem de loops de oito. Observe que o Plano de Teste tem um Controlador Intercalado externo com dois Controladores Intercalados dentro dele.


        Figura 2 - Exemplo de controlador de intercalação 2
Figura 2 - Exemplo de controlador de intercalação 2

O controlador Interleave externo alterna entre os dois internos. Em seguida, cada Interleave Controller interno alterna entre cada uma das solicitações HTTP. Cada thread do JMeter enviará as solicitações na seguinte ordem: Home Page, Interleaved, Bug Page, Interleaved, CVS Page, Interleaved e FAQ Page, Interleaved.

Observe que o File Reporter está configurado para armazenar os resultados em um arquivo chamado " interleave-test2.dat " no diretório atual.


        Figura 3 - Exemplo de controlador de intercalação 3
Figura 3 - Exemplo de controlador de intercalação 3

Se os dois controladores de intercalação sob o controlador de intercalação principal fossem controladores simples, então a ordem seria: Home Page, Página CVS, Intercalado, Página de Bug, Página de FAQ, Intercalado.

No entanto, se " ignorar blocos de subcontrolador " foi verificado no controlador de intercalação principal, então a ordem seria: Home Page, Interleaved, Bug Page, Interleaved, CVS Page, Interleaved e FAQ Page, Interleaved.

^

Controlador Aleatório

O Random Logic Controller atua de forma semelhante ao Interleave Controller, exceto que, em vez de passar em ordem por seus subcontroladores e amostradores, ele escolhe um aleatoriamente em cada passagem.

As interações entre vários controladores podem gerar um comportamento complexo. Isto é particularmente verdadeiro para o Controlador Aleatório. Experimente antes de assumir quais resultados qualquer interação fornecerá
Captura de tela do painel de controle do controlador aleatório
Captura de tela do painel de controle do controlador aleatório

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
ignorar blocos de subcontroladores
Se marcado, o controlador de intercalação tratará os subcontroladores como elementos de solicitação única e permitirá apenas uma solicitação por controlador por vez.
Não
^

Controlador de ordem aleatória

O Random Order Controller é muito parecido com um Simple Controller, pois executará cada elemento filho no máximo uma vez, mas a ordem de execução dos nós será aleatória.

Captura de tela do painel de controle do controlador de ordem aleatória
Captura de tela do painel de controle do controlador de ordem aleatória

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
^

Controlador de taxa de transferência

O Controlador de Taxa de Transferência permite que o usuário controle com que frequência ele é executado. Existem dois modos:

  • porcentagem de execução
  • execuções totais
Porcentagem de execuções
faz com que o controlador execute uma certa porcentagem das iterações através do plano de teste.
Total de execuções
faz com que o controlador pare de executar após um certo número de execuções.
Como o Once Only Controller, essa configuração é redefinida quando um Loop Controller pai é reiniciado.

Este controlador é mal nomeado, pois não controla a taxa de transferência. Consulte o Temporizador de taxa de transferência constante para um elemento que pode ser usado para ajustar a taxa de transferência.
Captura de tela do painel de controle do controlador de taxa de transferência
Captura de tela do painel de controle do controlador de taxa de transferência
O Controlador de Taxa de Transferência pode gerar um comportamento muito complexo quando combinado com outros controladores - em particular com controladores intercalados ou aleatórios como pais (também muito útil).

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Estilo de execução
Se o controlador será executado em execuções de porcentagem ou no modo de execuções totais.
Sim
Taxa de transferência
Um número. Para o modo de execução percentual, um número de 0 a 100 que indica a porcentagem de vezes que o controlador será executado. " 50 " significa que o controlador será executado durante metade das iterações através do plano de teste. Para o modo de execução total, o número indica o número total de vezes que o controlador será executado.
Sim
Por usuário
Se marcado, por usuário fará com que o controlador calcule se deve ser executado por usuário (por encadeamento). Se desmarcado, o cálculo será global para todos os usuários. Por exemplo, se estiver usando o modo de execução total e desmarcar " por usuário ", o número fornecido para a taxa de transferência será o número total de execuções feitas. Se " por usuário " estiver marcado, o número total de execuções será o número de usuários vezes o número fornecido para a taxa de transferência.
Não
^

Controlador de tempo de execução

O Runtime Controller controla por quanto tempo seus filhos serão executados. O controlador executará seus filhos até que o(s) Runtime(s) configurado(s) seja(ão) excedido(s).

Captura de tela do painel de controle do controlador de tempo de execução
Captura de tela do painel de controle do controlador de tempo de execução

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore e usado para nomear a transação.
Sim
Tempo de execução (segundos)
Tempo de execução desejado em segundos. 0 significa sem execução.
Sim
^

Se Controlador

O Controlador If permite ao usuário controlar se os elementos de teste abaixo dele (seus filhos) são executados ou não.

Por padrão, a condição é avaliada apenas uma vez na entrada inicial, mas você tem a opção de avaliá-la para cada elemento executável contido no controlador.

A melhor opção (padrão) é marcar Interpret Condition as Variable Expression? , então no campo de condição você tem 2 opções:

  • Opção 1: use uma variável que contenha true ou false
    Se você quiser testar se a última amostra foi bem-sucedida, você pode usar ${JMeterThread.last_sample_ok}
    Se o controlador estiver usando a variável
    Se o controlador estiver usando a variável
  • Opção 2: Use uma função ( ${__jexl3()} é recomendado) para avaliar uma expressão que deve retornar verdadeiro ou falso
    Se Controlador usando expressão
    Se Controlador usando expressão
Por exemplo, anteriormente se poderia usar a condição: ${__jexl3(${VAR} == 23)} e isso seria avaliado como true / false , o resultado seria então passado para JavaScript que retornaria true / false . Se a opção Expressão de Variável estiver selecionada, a expressão será avaliada e comparada com " true ", sem a necessidade de usar JavaScript.

Para testar se uma variável é indefinida (ou nula) faça o seguinte, suponha que var seja nomeada myVar , expression será:
"${minhaVar}" == "\${minhaVar}"
Ou use:
"${minhaVar}" != "\${minhaVar}"
para testar se uma variável está definida e não é nula.
Se você desmarcar Interpretar condição como expressão de variável? , Se o Controller usar internamente o javascript para avaliar a condição que tem uma penalidade de desempenho que pode ser muito grande e tornar seu teste menos escalável.
Se o controlador usando javascript
Se o controlador usando javascript
Captura de tela do painel de controle do controlador If
Captura de tela do painel de controle do controlador If

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Condição (JavaScript padrão)
Por padrão, a condição é interpretada como código JavaScript que retorna " true " ou " false ", mas isso pode ser substituído (veja abaixo)
Sim
Interpretar Condição como Expressão Variável?
Se estiver selecionado, a condição deve ser uma expressão avaliada como " true " (o caso é ignorado). Por exemplo, ${FOUND} ou ${__jexl3(${VAR} > 100)} . Ao contrário do caso do JavaScript, a condição é verificada apenas para ver se corresponde a " true " (o caso é ignorado).
Verificar isso e usar a função __jexl3 ou __groovy em Condition é recomendado para performances
Sim
Avaliar para todas as crianças
A condição deve ser avaliada para todas as crianças? Se não estiver marcada, a condição só é avaliada na entrada.
Sim
Exemplos (JavaScript)
  • ${COUNT} < 10
  • "${VAR}" == "abcd"
Se houver um erro na interpretação do código, a condição será considerada false e uma mensagem será registrada em jmeter.log .
Observe que é aconselhável evitar o uso do modo JavaScript para desempenho.

Ao usar __groovy tome cuidado para não usar substituição de variável na string, caso contrário, se estiver usando uma variável que altera o script, não poderá ser armazenado em cache. Em vez disso, obtenha a variável usando: vars.get("myVar"). Veja os exemplos do Groovy abaixo.
Exemplos (Expressão de Variável)
  • ${__groovy(vars.get("myVar") != "Invalid" )} (Groovy check myVar não é igual a Invalid)
  • ${__groovy(vars.get("myInt").toInteger() <=4 )} (Groovy check myInt é menor ou igual a 4)
  • ${__groovy(vars.get("myMissing") != null )} (Groovy verifique se a variável myMissing não está definida)
  • ${__jexl3(${COUNT} < 10)}
  • ${RESULTADO}
  • ${JMeterThread.last_sample_ok} (verifique se a última amostra foi bem-sucedida)
^

Enquanto Controlador

O Controlador While executa seus filhos até que a condição seja " falsa ".

JMeter irá expor o índice de loop como uma variável chamada __jm__<Name of your element>__idx . Assim, por exemplo, se seu controlador While for chamado WC, você poderá acessar o índice de loop por meio de ${__jm__WC__idx} . O índice começa em 0

Valores de condição possíveis:

  • blank - sai do loop quando a última amostra no loop falha
  • LAST - sai do loop quando a última amostra no loop falha. Se a última amostra antes do loop falhar, não entre em loop.
  • Caso contrário - saia (ou não entre) no loop quando a condição for igual à string " false "
A condição pode ser qualquer variável ou função que eventualmente resulte na string " false ". Isso permite o uso de __jexl3 , função __groovy , propriedades ou variáveis ​​conforme necessário.

Observe que a condição é avaliada duas vezes, uma antes de iniciar a amostragem dos filhos e uma vez no final da amostragem dos filhos, portanto, colocar funções não idempotentes em Condition (como __counter ) pode introduzir problemas.

Por exemplo:
  • ${VAR} - onde VAR é definido como falso por algum outro elemento de teste
  • ${__jexl3(${C}==10)}
  • ${__jexl3("${VAR2}"=="abcd")}
  • ${_P(property)} - onde a propriedade é definida como " false " em outro lugar
Captura de tela do painel de controle do controlador while
Captura de tela do painel de controle do controlador while

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore e usado para nomear a transação.
Não
Doença
blank, LAST ou variável/função
Não
^

Comutador

O Switch Controller age como o Interleave Controller , pois executa um dos elementos subordinados em cada iteração, mas em vez de executá-los em sequência, o controlador executa o elemento definido pelo valor do switch.

O valor do switch também pode ser um nome.

Se o valor do switch estiver fora do intervalo, ele executará o elemento zero, que, portanto, atua como o padrão para o caso numérico. Ele também executa o elemento zero se o valor for a string vazia.

Se o valor for não numérico (e não vazio), então o Switch Controller procura o elemento com o mesmo nome (case é significativo). Se nenhum dos nomes corresponder, o elemento denominado " default " (caso não significativo) será selecionado. Se não houver padrão, nenhum elemento será selecionado e o controlador não executará nada.

Captura de tela do painel de controle do controlador de switch
Captura de tela do painel de controle do controlador de switch

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Mudar valor
O número (ou nome) do elemento subordinado a ser invocado. Os elementos são numerados de 0. Padrões a 0
Não
^

ForEach Controlador

Um controlador ForEach percorre os valores de um conjunto de variáveis ​​relacionadas. Quando você adiciona amostradores (ou controladores) a um controlador ForEach, cada amostra (ou controlador) é executada uma ou mais vezes, onde durante cada loop a variável tem um novo valor. A entrada deve consistir em várias variáveis, cada uma estendida com um sublinhado e um número. Cada uma dessas variáveis ​​deve ter um valor. Então, por exemplo, quando a variável de entrada tem o nome inputVar , as seguintes variáveis ​​devem ter sido definidas:

  • inputVar_1 = wendy
  • inputVar_2 = charles
  • inputVar_3 = Pedro
  • inputVar_4 = joão

Nota: o separador " _ " agora é opcional.

Quando a variável de retorno é dada como " returnVar ", a coleta de amostradores e controladores sob o controlador ForEach será executada 4 vezes consecutivas, com a variável de retorno tendo os respectivos valores acima, que podem então ser usados ​​nos amostradores.

JMeter irá expor o índice de loop como uma variável chamada __jm__<Name of your element>__idx . Por exemplo, se o seu Loop Controller for chamado FEC, você poderá acessar o índice de looping por meio de ${__jm__FEC__idx} . O índice começa em 0

É especialmente adequado para execução com o pós-processador de expressão regular. Isso pode "criar" as variáveis ​​de entrada necessárias a partir dos dados de resultado de uma solicitação anterior. Ao omitir o separador " _ ", o ForEach Controller pode ser usado para percorrer os grupos usando a variável de entrada refName_g , e também pode percorrer todos os grupos em todas as correspondências usando uma variável de entrada da forma refName_${C }_g , onde C é uma variável de contador.

O ForEach Controller não executa nenhuma amostra se inputVar_1 for null . Este seria o caso se a Expressão Regular não retornasse nenhuma correspondência.
Captura de tela do painel de controle do controlador ForEach
Captura de tela do painel de controle do controlador ForEach

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Prefixo da variável de entrada
Prefixo para os nomes de variáveis ​​a serem usados ​​como entrada. O padrão é uma string vazia como prefixo.
Não
Iniciar índice para loop
Índice inicial (exclusivo) para variáveis ​​de loop (o primeiro elemento está no índice inicial + 1)
Não
Índice final para loop
Índice final (inclusive) para variáveis ​​de loop
Não
Variável de saída
O nome da variável que pode ser usada no loop para substituição nos amostradores. O padrão é um nome de variável vazio, o que provavelmente não é desejado.
Não
Usar separador
Se não estiver marcado, o separador " _ " é omitido.
Sim
ForEach Exemplo

Baixe este exemplo (veja a Figura 7). Neste exemplo, criamos um Plano de Teste que envia uma solicitação HTTP específica apenas uma vez e envia outra solicitação HTTP para todos os links que podem ser encontrados na página.

Figura 7 - Exemplo de controlador ForEach
Figura 7 - Exemplo de controlador ForEach

Configuramos o Thread Group para um único thread e um valor de contagem de loop de um. Você pode ver que adicionamos uma solicitação HTTP ao grupo de threads e outra solicitação HTTP ao controlador ForEach.

Após a primeira solicitação HTTP, um extrator de expressão regular é adicionado, que extrai todos os links html da página de retorno e os coloca na variável inputVar

No loop ForEach, é adicionado um amostrador HTTP que solicita todos os links que foram extraídos da primeira página HTML retornada.

ForEach Exemplo

Aqui está outro exemplo que você pode baixar. Isso tem duas expressões regulares e controladores ForEach. O primeiro RE corresponde, mas o segundo não corresponde, portanto, nenhuma amostra é executada pelo segundo ForEach Controller

Figura 8 - Para Cada Controlador Exemplo 2
Figura 8 - Para Cada Controlador Exemplo 2

O Grupo de Threads tem um único thread e uma contagem de loops de dois.

Amostra 1 usa o Amostrador JavaTest para retornar a string " abcd ".

O Regex Extractor usa a expressão (\w)\s que corresponde a uma letra seguida por um espaço e retorna a letra (não o espaço). Quaisquer correspondências são prefixadas com a string " inputVar ".

O ForEach Controller extrai todas as variáveis ​​com o prefixo " inputVar_ ", e executa sua amostra, passando o valor na variável " returnVar ". Neste caso ele irá definir a variável para os valores " a " " b " e " c " por sua vez.

O Amostrador For 1 é outro Amostrador Java que usa a variável de retorno " returnVar " como parte do Rótulo de amostra e como Dados do amostrador.

Sample 2 , Regex 2 e For 2 são quase idênticos, exceto que o Regex foi alterado para " (\w)\sx ", o que claramente não corresponderá. Assim, o Amostrador For 2 não será executado.

^

Controlador de Módulo

O Module Controller fornece um mecanismo para substituir fragmentos do plano de teste no plano de teste atual em tempo de execução.

Um fragmento de plano de teste consiste em um Controlador e todos os elementos de teste (amostradores etc.) contidos nele. O fragmento pode estar localizado em qualquer Thread Group. Se o fragmento estiver localizado em um grupo de threads, seu controlador pode ser desabilitado para evitar que o fragmento seja executado, exceto pelo controlador do módulo. Ou você pode armazenar os fragmentos em um Thread Group fictício e desabilitar o Thread Group inteiro.

Pode haver vários fragmentos, cada um com uma série diferente de amostradores sob eles. O controlador de módulo pode ser usado para alternar facilmente entre esses vários casos de teste simplesmente escolhendo o controlador apropriado em sua caixa suspensa. Isso oferece conveniência para executar muitos planos de teste alternativos de maneira rápida e fácil.

Um nome de fragmento é composto pelo nome do Controlador e todos os seus nomes pai. Por exemplo:

Plano de teste / protocolo: JDBC / Control / Interleave Controller (Módulo1)

Quaisquer fragmentos usados ​​pelo Module Controller devem ter um nome exclusivo , pois o nome é usado para localizar o controlador de destino quando um plano de teste é recarregado. Por esse motivo, é melhor garantir que o nome do Controlador seja alterado do padrão - conforme mostrado no exemplo acima - caso contrário, uma duplicata pode ser criada acidentalmente quando novos elementos são adicionados ao plano de teste.

Captura de tela do painel de controle do controlador do módulo
Captura de tela do painel de controle do controlador do módulo

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
Módulo a ser executado
O controlador do módulo fornece uma lista de todos os controladores carregados no gui. Selecione aquele que você deseja substituir em tempo de execução.
Sim
^

Incluir Controlador

O controlador de inclusão foi projetado para usar um arquivo JMX externo. Para usá-lo, crie um Fragmento de Teste abaixo do Plano de Teste e adicione quaisquer amostradores, controladores etc. desejados abaixo dele. Em seguida, salve o Plano de Teste. O arquivo agora está pronto para ser incluído como parte de outros Planos de Teste.

Por conveniência, um Thread Group também pode ser incluído no arquivo JMX externo para fins de depuração. Um controlador de módulo pode ser usado para fazer referência ao fragmento de teste. O Thread Group será ignorado durante o processo de inclusão.

Se o teste usar um Gerenciador de Cookies ou Variáveis ​​Definidas pelo Usuário, elas devem ser colocadas no plano de teste de nível superior, não no arquivo incluído, caso contrário, não há garantia de que funcionem.

Este elemento não suporta variáveis/funções no campo de nome de arquivo.
No entanto, se a propriedade includecontroller.prefix for definida, o conteúdo será usado para prefixar o nome do caminho.
Ao usar o Include Controller e incluir o mesmo arquivo JMX, certifique-se de nomear o Include Controller de forma diferente para evitar enfrentar o problema conhecido Bug 50898 .

Se o arquivo não puder ser encontrado no local fornecido por prefix + Filename , o controlador tentará abrir o Filename relativo ao diretório de ativação JMX.

Captura de tela do painel de controle do controlador de inclusão
Captura de tela do painel de controle do controlador de inclusão

Parâmetros

Atributo
Descrição
Requeridos
Nome do arquivo
O arquivo a ser incluído.
Sim
^

Controlador de transações

O Transaction Controller gera uma amostra adicional que mede o tempo total necessário para executar os elementos de teste aninhados.

Observação: quando a caixa de seleção " Incluir duração do temporizador e pré-pós processadores na amostra gerada " está marcada, o tempo inclui todo o processamento dentro do escopo do controlador, não apenas as amostras.

Existem dois modos de operação:

  • amostra adicional é adicionada após as amostras aninhadas
  • amostra adicional é adicionada como pai das amostras aninhadas

O tempo de amostra gerado inclui todos os tempos para os amostradores aninhados excluindo por padrão (desde 2.11) temporizadores e tempo de processamento de pré/pós processadores, a menos que a caixa de seleção " Incluir duração do temporizador e pré-pós processadores na amostra gerada " esteja marcada. Dependendo da resolução do relógio, pode ser um pouco maior que a soma dos amostradores individuais mais os temporizadores. O relógio pode marcar depois que o controlador registrou a hora de início, mas antes do início da primeira amostra. Da mesma forma no final.

A amostra gerada só é considerada bem-sucedida se todas as suas subamostras forem bem-sucedidas.

No modo pai, os samples individuais ainda podem ser vistos no Tree View Listener, mas não aparecem mais como entradas separadas em outros Listeners. Além disso, as subamostras não aparecem em arquivos de log CSV, mas podem ser salvas em arquivos XML.

No modo pai, Assertions (etc.) podem ser adicionadas ao Transaction Controller. No entanto, por padrão, eles serão aplicados às amostras individuais e à amostra geral da transação. Para limitar o escopo das Asserções, use um Controlador Simples para conter as amostras e adicione as Asserções ao Controlador Simples. No momento, os controladores de modo pai não oferecem suporte adequado a controladores de transação aninhados de nenhum tipo.
Captura de tela do painel de controle do controlador de transações
Captura de tela do painel de controle do controlador de transações

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore e usado para nomear a transação.
Sim
Gerar amostra pai
Se marcado, a amostra é gerada como pai das outras amostras, caso contrário, a amostra é gerada como uma amostra independente.
Sim
Incluir a duração do temporizador e pré-pós processadores na amostra gerada
Se deve incluir atrasos de temporizador, pré e pós-processamento na amostra gerada. O padrão é falso
Sim
^

Controlador de Gravação

O Controlador de Gravação é um espaço reservado que indica onde o servidor proxy deve gravar amostras. Durante o teste, não tem efeito, semelhante ao Simple Controller. Mas durante a gravação usando o HTTP(S) Test Script Recorder , todas as amostras gravadas serão salvas por padrão no Recording Controller.

Captura de tela do painel de controle do controlador de gravação
Captura de tela do painel de controle do controlador de gravação

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este controlador que é mostrado na árvore.
Não
^

Controlador de Seção Crítica

O Controlador de Seção Crítica garante que seus elementos filhos (amostradores/controladores, etc.)

Captura de tela do painel de controle do controlador de seção crítica
Captura de tela do Painel de Controle do Controlador de Seção Crítica

A figura abaixo mostra um exemplo de uso do Controlador de Seção Crítica, na figura abaixo 2 Controladores de Seção Crítica garantem que:

  • DS2-${__threadNum} é executado apenas por um encadeamento de cada vez
  • DS4-${__threadNum} é executado apenas por um encadeamento de cada vez
Plano de teste usando o controlador de seção crítica
Plano de teste usando o controlador de seção crítica

Parâmetros

Atributo
Descrição
Requeridos
Nome do bloqueio
Bloqueio que será usado pelo controlador, certifique-se de usar nomes de bloqueio diferentes para seções não relacionadas
Sim
O Controlador de Seção Crítica aceita bloqueios apenas em uma JVM, portanto, se estiver usando o teste distribuído, certifique-se de que seu caso de uso não dependa do bloqueio de todos os encadeamentos de todas as JVMs.
^
^

18.3 Ouvintes


A maioria dos ouvintes desempenha vários papéis além de "ouvir" os resultados dos testes. Eles também fornecem meios para visualizar, salvar e ler os resultados de testes salvos.

Observe que os Ouvintes são processados ​​no final do escopo em que são encontrados.

O salvamento e a leitura dos resultados do teste são genéricos. Os vários ouvintes têm um painel onde se pode especificar o arquivo no qual os resultados serão escritos (ou lidos). Por padrão, os resultados são armazenados como arquivos XML, normalmente com uma extensão " .jtl ". Armazenar como CSV é a opção mais eficiente, mas é menos detalhado que XML (a outra opção disponível).

Os ouvintes não processam dados de amostra no modo CLI, mas os dados brutos serão salvos se um arquivo de saída tiver sido configurado. Para analisar os dados gerados por uma execução de CLI, você precisa carregar o arquivo no Listener apropriado.

Para ler os resultados existentes e exibi-los, use o botão Procurar do painel de arquivos para abrir o arquivo.

Se você quiser limpar qualquer dado atual antes de carregar um novo arquivo, use o item de menu Executar  →  Limpar ( Ctrl  +  Shift  +  E ) ou Executar  →  Limpar tudo ( Ctrl  +  E ) antes de carregar o arquivo.

Os resultados podem ser lidos de arquivos de formato XML ou CSV. Ao ler arquivos de resultados CSV, o cabeçalho (se houver) é usado para determinar quais campos estão presentes. Para interpretar corretamente um arquivo CSV sem cabeçalho, as propriedades apropriadas devem ser definidas em jmeter.properties .

Arquivos XML escritos por JMeter têm a versão 1.0 declarada no cabeçalho enquanto o arquivo real é serializado com regras 1.1. (Isso é feito por motivos de compatibilidade histórica; veja Bug 59973 e Bug 58679 ) Isso faz com que os analisadores XML estritos falhem. Considere usar analisadores XML não restritos para ler arquivos JTL.

O nome do arquivo pode conter referências de funções e/ou variáveis. No entanto, as referências de variáveis ​​não funcionam no modo cliente-servidor (as funções funcionam bem). Isso ocorre porque o arquivo é criado no cliente e o cliente não executa o teste localmente, portanto, não configura variáveis.

Os ouvintes podem usar muita memória se houver muitas amostras. A maioria dos ouvintes atualmente mantém uma cópia de cada amostra em seu escopo, além de:

  • Gravador de dados simples
  • Ouvinte BeanShell/JSR223
  • Visualizador de mala direta
  • Relatório resumido

Os seguintes ouvintes não precisam mais manter cópias de cada amostra. Em vez disso, as amostras com o mesmo tempo decorrido são agregadas. Menos memória agora é necessária, especialmente se a maioria das amostras levar apenas um ou dois segundos no máximo.

  • Relatório agregado
  • Gráfico agregado

Para minimizar a quantidade de memória necessária, use o Simple Data Writer e use o formato CSV.

As variáveis ​​JMeter podem ser salvas nos arquivos de saída. Isso só pode ser especificado usando uma propriedade. Consulte as Variáveis ​​de amostra do ouvinte para obter detalhes

Para obter detalhes completos sobre como configurar os itens padrão a serem salvos, consulte a documentação de configuração padrão do ouvinte . Para obter detalhes sobre o conteúdo dos arquivos de saída, consulte o formato de log CSV ou o formato de log XML .

As entradas em jmeter.properties são usadas para definir os padrões; eles podem ser substituídos para ouvintes individuais usando o botão Configurar, conforme mostrado abaixo. As configurações em jmeter.properties também se aplicam ao ouvinte que é adicionado usando o sinalizador de linha de comando -l .

A figura abaixo mostra um exemplo do painel de configuração do arquivo de resultado

Painel de configuração do arquivo de resultado
Painel de configuração do arquivo de resultado

Parâmetros

Atributo
Descrição
Requeridos
Nome do arquivo
Nome do arquivo que contém os resultados da amostra. O nome do arquivo pode ser especificado usando um nome de caminho relativo ou absoluto. Os caminhos relativos são resolvidos em relação ao diretório de trabalho atual (que tem como padrão o diretório bin/ ). O JMeter também suporta caminhos relativos ao diretório que contém o plano de teste atual (arquivo JMX). Se o nome do caminho começar com " ~/ " (ou o que estiver na propriedade JMeter jmeter.save.saveservice.base_prefix ), o caminho será considerado relativo ao local do arquivo JMX.
Não
Navegar …
Botão Procurar Arquivo
Não
Erros
Selecione isto para gravar/ler somente resultados com erros
Não
Sucessos
Selecione isto para gravar/ler somente resultados sem erros. Se nem Erros nem Sucessos forem selecionados, todos os resultados serão processados.
Não
Configurar
Botão Configurar, veja abaixo
Não

Configuração de Salvamento de Resultado de Amostra

Os ouvintes podem ser configurados para salvar itens diferentes nos arquivos de log de resultados (JTL) usando o pop-up Config conforme mostrado abaixo. Os padrões são definidos conforme descrito na documentação de configuração padrão do ouvinte . Itens com ( CSV ) após o nome só se aplicam ao formato CSV; itens com ( XML ) só se aplicam ao formato XML. O formato CSV não pode ser usado atualmente para salvar itens que incluem quebras de linha.

Observe que os cookies, o método e a string de consulta são salvos como parte da opção " Sampler Data ".

Captura de tela para o painel de controle da configuração de salvamento do resultado da amostra
Captura de tela do painel de controle da configuração de salvamento do resultado da amostra
^

Resultados do gráfico

Os resultados do gráfico NÃO DEVEM SER USADOS durante o teste de carga, pois consome muitos recursos (memória e CPU). Use-o apenas para testes funcionais ou durante a depuração e validação do Plano de Teste.

O ouvinte Graph Results gera um gráfico simples que plota todos os tempos de amostra. Na parte inferior do gráfico, a amostra atual (preto), a média atual de todas as amostras (azul), o desvio padrão atual (vermelho) e a taxa de transferência atual (verde) são exibidos em milissegundos.

O número da taxa de transferência representa o número real de solicitações/minuto que o servidor tratou. Esse cálculo inclui quaisquer atrasos adicionados ao seu teste e o próprio tempo de processamento interno do JMeter. A vantagem de fazer o cálculo como este é que este número representa algo real - seu servidor de fato lidou com essa quantidade de solicitações por minuto, e você pode aumentar o número de threads e/ou diminuir os atrasos para descobrir a taxa de transferência máxima do seu servidor. Considerando que, se você fizesse cálculos que considerassem atrasos e processamento do JMeter, não ficaria claro o que você poderia concluir a partir desse número.

Captura de tela do painel de controle dos resultados do gráfico
Captura de tela do painel de controle dos resultados do gráfico

A tabela a seguir descreve brevemente os itens no gráfico. Mais detalhes sobre o significado preciso dos termos estatísticos podem ser encontrados na web - por exemplo, Wikipedia - ou consultando um livro sobre estatísticas.

  • Dados - plota os valores de dados reais
  • Média - plote a média
  • Mediana - plota a mediana (valor intermediário)
  • Desvio - plote o Desvio Padrão (uma medida da variação)
  • Taxa de transferência - plote o número de amostras por unidade de tempo

Os números individuais na parte inferior da tela são os valores atuais. " Latest Sample " é o tempo de amostragem atual decorrido, mostrado no gráfico como " Data ".

O valor exibido no canto superior esquerdo do gráfico é o máximo de 90º percentil do tempo de resposta.

^

Resultados da Asserção

Os resultados da asserção NÃO DEVEM SER USADOS durante o teste de carga, pois consome muitos recursos (memória e CPU). Use-o apenas para testes funcionais ou durante a depuração e validação do Plano de Teste.

O visualizador de resultados de asserção mostra o rótulo de cada amostra coletada. Ele também relata falhas de quaisquer Asserções que fazem parte do plano de teste.

Captura de tela do painel de controle de resultados de asserção
Captura de tela do painel de controle de resultados de asserção
^

Exibir Árvore de Resultados

Exibir Árvore de Resultados NÃO DEVE SER USADO durante o teste de carga, pois consome muitos recursos (memória e CPU). Use-o apenas para testes funcionais ou durante a depuração e validação do Plano de Teste.
A Árvore de Resultados da Visualização mostra uma árvore de todas as respostas de amostra, permitindo que você visualize a resposta de qualquer amostra. Além de mostrar a resposta, você pode ver o tempo que levou para obter essa resposta e alguns códigos de resposta. Observe que o painel Request mostra apenas os cabeçalhos adicionados pelo JMeter. Ele não mostra nenhum cabeçalho (como Host ) que pode ser adicionado pela implementação do protocolo HTTP.

Existem várias maneiras de visualizar a resposta, selecionáveis ​​por uma caixa suspensa na parte inferior do painel esquerdo.

RenderizadorDescrição
Testador CSS/JQuery O CSS/JQuery Tester funciona apenas para respostas de texto. Ele mostra o texto simples no painel superior. O botão " Testar " permite ao usuário aplicar o CSS/JQuery no painel superior e os resultados serão exibidos no painel inferior.
O mecanismo de expressão CSS/JQuery pode ser JSoup ou Jodd, a sintaxe dessas 2 implementações difere um pouco.
Por exemplo, o Seletor a[class=sectionlink] com atributo href aplicado à página de funções JMeter atual fornece a seguinte saída:
Número de partidas: 74
Match[1]=#functions
Correspondência[2]=#what_can_do
Correspondência[3]=#onde
Correspondência[4]=#how
Match[5]=#function_helper
Match[6]=#functions
Correspondência[7]=#__regexFunction
Correspondência[8]=#__regexFunction_parms
Partida[9]=#__counter
… e assim por diante …

Documento A visualização Documento mostrará o texto extraído de vários tipos de documentos, como Microsoft Office (Word, Excel, PowerPoint 97-2003, 2007-2010 (openxml), Apache OpenOffice (writer, calc, impression), HTML, gzip, jar/zip (lista de conteúdo) e alguns metadados em arquivos "multimídia" como mp3, mp4, flv, etc. A lista completa de formatos de suporte está disponível na página de formato Apache Tika.
Um requisito para a visualização Document é fazer download do pacote binário Apache Tika ( tika-app-xxjar ) e colocá-lo no diretório JMETER_HOME/lib .
Se o documento for maior que 10 MB, ele não será exibido. Para alterar esse limite, defina a propriedade JMeter document.max_size (a unidade é byte) ou defina como 0 para remover o limite.
HTML A visualização HTML tenta renderizar a resposta como HTML. O HTML renderizado provavelmente não se compara à visualização que se obteria em qualquer navegador da Web; no entanto, fornece uma aproximação rápida que é útil para a avaliação inicial dos resultados.
Imagens, folhas de estilo, etc. não são baixadas.
HTML (baixar recursos) Se a opção de visualização HTML (baixar recursos) estiver selecionada, o renderizador pode baixar imagens, folhas de estilo, etc. referenciadas pelo código HTML.
Fonte HTML formatada Se a opção HTML Source formatted view for selecionada, o renderizador exibirá o código-fonte HTML formatado e limpo por Jsoup .
JSON A visualização JSON mostrará a resposta em estilo de árvore (também lida com JSON incorporado em JavaScript).
Testador de caminho JSON A visualização JSON Path Tester permitirá que você teste suas expressões JSON-PATH e veja os dados extraídos de uma resposta específica.
JSON JMESPath Tester A visualização JSON JMESPath Tester permitirá que você teste suas expressões JMESPath e veja os dados extraídos de uma resposta específica.
Testador Regexp A visualização Regexp Tester funciona apenas para respostas de texto. Ele mostra o texto simples no painel superior. O botão " Teste " permite ao usuário aplicar a Expressão Regular no painel superior e os resultados serão exibidos no painel inferior.
O mecanismo de expressão regular é o mesmo usado no Extrator de Expressão Regular.
Por exemplo, o RE (JMeter\w*).* aplicado à página inicial do JMeter atual fornece a seguinte saída:
Número de partidas: 26
Match[1][0]=JMeter - Apache JMeter</title>
Correspondência[1][1]=JMeter
Correspondência[2][0]=JMeter" title="JMeter" border="0"/></a>
Correspondência[2][1]=JMetro
Correspondência[3][0]=JMeterCommitters">Contribuintes</a>
Correspondência[3][1]=JMeterCommitters
… e assim por diante …

O primeiro número em [] é o número de correspondência; o segundo número é o grupo. O grupo [0] é o que corresponde a todo o RE. Grupo [1] é o que corresponde ao grupo, ou seja (JMeter\w*) neste caso. Consulte a Figura 9b (abaixo).
Texto A visualização de texto padrão mostra todo o texto contido na resposta. Observe que isso só funcionará se o tipo de conteúdo da resposta for considerado texto. Se o tipo de conteúdo começar com qualquer um dos seguintes, é considerado binário, caso contrário, é considerado texto.
imagem/
áudio/
vídeo/

XML A visualização XML mostrará a resposta em estilo de árvore. Quaisquer nós DTD ou nós Prolog não aparecerão na árvore; no entanto, a resposta pode conter esses nós. Você pode clicar com o botão direito do mouse em qualquer nó e expandir ou recolher todos os nós abaixo dele.
Testador XPath O XPath Tester funciona apenas para respostas de texto. Ele mostra o texto simples no painel superior. O botão " Testar " permite ao usuário aplicar a consulta XPath no painel superior e os resultados serão exibidos no painel inferior.
Testador de Extrator de Limite O Boundary Extractor Tester funciona apenas para respostas de texto. Ele mostra o texto simples no painel superior. O botão " Testar " permite ao usuário aplicar a consulta do Extrator de Limite no painel superior e os resultados serão exibidos no painel inferior.

Rolar automaticamente? opção permite ter a exibição do último nó na seleção de árvore

A partir da versão 3.2, o número de entradas na Visualização é restrito ao valor da propriedade view.results.tree.max_results , cujo padrão é 500 entradas. O comportamento antigo pode ser restaurado definindo a propriedade como 0 . Cuidado, isso pode consumir muita memória.

Com a opção Pesquisar , a maioria das visualizações também permite que os dados exibidos sejam pesquisados; o resultado da busca será destacado no display acima. Por exemplo, a captura de tela do painel de controle abaixo mostra um resultado da pesquisa por " Java ". Observe que a pesquisa opera no texto visível, portanto, você pode obter resultados diferentes ao pesquisar nas visualizações Texto e HTML.
Nota: A expressão regular usa o mecanismo Java (não o mecanismo ORO como o Extrator de Expressão Regular ou a visualização Regexp Tester).

Se não houver nenhum tipo de conteúdo fornecido, o conteúdo não será exibido em nenhum dos painéis Dados de Resposta. Você pode usar Salvar respostas em um arquivo para salvar os dados neste caso. Observe que os dados de resposta ainda estarão disponíveis no resultado da amostra, portanto, ainda podem ser acessados ​​usando pós-processadores.

Se os dados de resposta forem maiores que 200 K, eles não serão exibidos. Para alterar esse limite, configure a propriedade do JMeter view.results.tree.max_size . Você também pode usar salvar a resposta inteira em um arquivo usando Salvar respostas em um arquivo .

Renderizadores adicionais podem ser criados. A classe deve implementar a interface org.apache.jmeter.visualizers.ResultRenderer e/ou estender a classe abstrata org.apache.jmeter.visualizers.SamplerResultTab , e o código compilado deve estar disponível para JMeter (por exemplo, adicionando-o ao lib/ diretório externo ).

Captura de tela do Painel de Controle da Árvore de Resultados da Visualização
Captura de tela do Painel de Controle da Árvore de Resultados da Visualização

O Painel de Controle (acima) mostra um exemplo de exibição HTML.
A Figura 9 (abaixo) mostra um exemplo de exibição XML.
A Figura 9a (abaixo) mostra um exemplo de exibição do testador Regexp.
A Figura 9b (abaixo) mostra um exemplo de exibição de documento.

Figura 9 Exibição XML de amostra
Figura 9 Exibição XML de amostra
Figura 9a Exibição do Teste Regexp de Amostra
Figura 9a Exibição do Teste Regexp de Amostra
Figura 9b Exibição de documento de amostra (aqui PDF)
Figura 9b Exibição de documento de amostra (aqui PDF)
^

Relatório Agregado

O relatório agregado cria uma linha de tabela para cada solicitação com nome diferente em seu teste. Para cada solicitação, ele totaliza as informações de resposta e fornece contagem de solicitações, min, max, média, taxa de erro, taxa de transferência aproximada (solicitação/segundo) e taxa de transferência de Kilobytes por segundo. Uma vez que o teste é feito, a taxa de transferência é a real durante todo o teste.

A taxa de transferência é calculada do ponto de vista do destino do amostrador (por exemplo, o servidor remoto no caso de amostras HTTP). O JMeter leva em consideração o tempo total durante o qual as solicitações foram geradas. Se outros amostradores e temporizadores estiverem no mesmo encadeamento, eles aumentarão o tempo total e, portanto, reduzirão o valor da taxa de transferência. Portanto, dois amostradores idênticos com nomes diferentes terão metade da taxa de transferência de dois amostradores com o mesmo nome. É importante escolher os nomes dos amostradores corretamente para obter os melhores resultados do Relatório Agregado.

O cálculo dos valores da Mediana e da Linha de 90% (90º percentil ) requer memória adicional. O JMeter agora combina amostras com o mesmo tempo decorrido, portanto, menos memória é usada. No entanto, para amostras que demoram mais do que alguns segundos, a probabilidade é que menos amostras tenham tempos idênticos, caso em que será necessária mais memória. Observe que você pode usar esse ouvinte posteriormente para recarregar um arquivo de resultados CSV ou XML, que é a maneira recomendada de evitar impactos no desempenho. Consulte o Relatório de Resumo para um Ouvinte semelhante que não armazena amostras individuais e, portanto, precisa de memória constante.

A partir do JMeter 2.12, você pode configurar os 3 valores de percentil que deseja calcular, isso pode ser feito definindo as propriedades:
  • agregado_rpt_pct1 : padrão para 90º percentil
  • agregado_rpt_pct2 : padrão para 95º percentil
  • agregado_rpt_pct3 : padrão para 99º percentil
  • Rótulo - O rótulo da amostra. Se " Incluir nome do grupo no rótulo? " for selecionado, o nome do grupo de encadeamentos será adicionado como um prefixo. Isso permite que rótulos idênticos de diferentes grupos de roscas sejam agrupados separadamente, se necessário.
  • # Samples - O número de amostras com o mesmo rótulo
  • Average - O tempo médio de um conjunto de resultados
  • Mediana - A mediana é o tempo no meio de um conjunto de resultados. 50 % das amostras não demoraram mais do que este tempo; o restante levou pelo menos o mesmo tempo.
  • Linha 90% - 90% das amostras não levaram mais do que esse tempo. As amostras restantes levaram pelo menos tanto tempo quanto isso. ( 90º percentil )
  • Linha 95% - 95% das amostras não levaram mais do que este tempo. As amostras restantes levaram pelo menos tanto tempo quanto isso. ( 95º percentil )
  • Linha 99% - 99% das amostras não demoraram mais do que este tempo. As amostras restantes levaram pelo menos tanto tempo quanto isso. ( 99º percentil )
  • Min - O menor tempo para as amostras com o mesmo rótulo
  • Max - O maior tempo para as amostras com o mesmo rótulo
  • % de erro - Porcentagem de solicitações com erros
  • Taxa de transferência - a taxa de transferência é medida em solicitações por segundo/minuto/hora. A unidade de tempo é escolhida para que a taxa exibida seja de pelo menos 1,0. Quando a taxa de transferência é salva em um arquivo CSV, ela é expressa em solicitações/segundo, ou seja, 30,0 solicitações/minuto são salvas como 0,5.
  • KB/s recebidos - A taxa de transferência medida em Kilobytes recebidos por segundo
  • KB/s enviados - A taxa de transferência medida em Kilobytes enviados por segundo

Os tempos estão em milissegundos.

Captura de tela do painel de controle do relatório agregado
Captura de tela do painel de controle do relatório agregado

A figura abaixo mostra um exemplo de seleção da caixa de seleção " Incluir nome do grupo ".

Amostra "
Exemplo de exibição " Incluir nome do grupo "
^

Visualizar resultados na tabela

Este visualizador cria uma linha para cada resultado de amostra. Assim como a View Results Tree , este visualizador usa muita memória.

Por padrão, ele exibe apenas as amostras principais (pais); ele não exibe as subamostras (amostras filhas). O JMeter tem uma caixa de seleção " Child Samples? ". Se estiver selecionado, as subamostras serão exibidas em vez das amostras principais.

Captura de tela do painel de controle dos resultados da visualização na tabela
Captura de tela do painel de controle de visualização de resultados na tabela
^

Gravador de Dados Simples

Esse ouvinte pode gravar resultados em um arquivo, mas não na interface do usuário. Destina-se a fornecer um meio eficiente de registro de dados, eliminando a sobrecarga da GUI. Ao executar no modo CLI, o sinalizador -l pode ser usado para criar um arquivo de dados. Os campos a serem salvos são definidos pelas propriedades do JMeter. Consulte o arquivo jmeter.properties para obter detalhes.
Captura de tela do painel de controle do gravador de dados simples
Captura de tela do painel de controle do gravador de dados simples
^

Gráfico Agregado

O gráfico agregado é semelhante ao relatório agregado. A principal diferença é que o gráfico agregado fornece uma maneira fácil de gerar gráficos de barras e salvar o gráfico como um arquivo PNG.
Captura de tela do painel de controle do gráfico agregado
Captura de tela do painel de controle do gráfico agregado

A figura abaixo mostra um exemplo de configurações para desenhar este gráfico.

Configurações de gráfico agregadas
Configurações de gráfico agregadas
Observe: Todos esses parâmetros não são salvos no script JMeter JMX.

Parâmetros

Atributo
Descrição
Requeridos
Configurações de coluna
  • Colunas a serem exibidas: Escolha a(s) coluna(s) a serem exibidas no gráfico.
  • Cor dos retângulos: Clique no retângulo da cor direita para abrir uma caixa de diálogo pop-up para escolher uma cor personalizada para a coluna.
  • Cor do primeiro plano Permite alterar a cor do texto do valor.
  • Fonte do valor: Permite definir as configurações de fonte para o texto.
  • Desenhar barra de contornos? Para desenhar ou não a linha de borda no gráfico de barras
  • Mostrar agrupamento de números? Mostrar ou não o agrupamento de números nos rótulos do eixo Y.
  • Rótulos de valor verticais? Altere a orientação do rótulo de valor. (O padrão é horizontal)
  • Seleção de rótulo de coluna: Filtre por rótulo de resultado. Uma expressão regular pode ser usada, por exemplo: .*Transação.*
    Antes de exibir o gráfico, clique no botão Aplicar filtro para atualizar os dados internos.
Sim
Título
Defina o título do gráfico na cabeça do gráfico. O valor vazio é o valor padrão: " Gráfico Agregado ". O botão Sincronizar com nome define o título com o rótulo do ouvinte. E defina as configurações de fonte para o título do gráfico
Não
Tamanho do gráfico
Calcule o tamanho do gráfico pela largura e altura dependendo do tamanho da janela do JMeter atual. Use os campos Largura e Altura para definir um tamanho personalizado. A unidade é pixel.
Não
Configurações do eixo X
Defina o comprimento máximo do rótulo do eixo X (em pixel).
Não
Configurações do eixo Y
Defina um valor máximo personalizado para o eixo Y.
Não
Lenda
Definir as configurações de posicionamento e fonte para a legenda do gráfico
Sim
^

Gráfico de tempo de resposta

O Response Time Graph desenha um gráfico de linhas mostrando a evolução do tempo de resposta durante o teste, para cada solicitação rotulada. Se existirem muitas amostras para o mesmo registro de data e hora, o valor médio será exibido.
Captura de tela do painel de controle do gráfico de tempo de resposta
Captura de tela do painel de controle do gráfico de tempo de resposta

A figura abaixo mostra um exemplo de configurações para desenhar este gráfico.

Configurações do gráfico de tempo de resposta
Configurações do gráfico de tempo de resposta
Observação: Todos esses parâmetros são salvos no arquivo JMeter .jmx .

Parâmetros

Atributo
Descrição
Requeridos
Intervalo (ms)
O tempo em milissegundos para o intervalo do eixo X. As amostras são agrupadas de acordo com este valor. Antes de exibir o gráfico, clique no botão Aplicar intervalo para atualizar os dados internos.
Sim
Seleção de rótulo do amostrador
Filtre por rótulo de resultado. Uma expressão regular pode ser usada, ex. .*Transação.* . Antes de exibir o gráfico, clique no botão Aplicar filtro para atualizar os dados internos.
Não
Título
Defina o título do gráfico na cabeça do gráfico. O valor vazio é o valor padrão: " Gráfico de tempo de resposta ". O botão Sincronizar com nome define o título com o rótulo do ouvinte. E defina as configurações de fonte para o título do gráfico
Não
Configurações de linha
Defina a largura da linha. Defina o tipo de cada ponto de valor. Escolha nenhum para ter uma linha sem marca
Sim
Tamanho do gráfico
Calcule o tamanho do gráfico pela largura e altura dependendo do tamanho da janela do JMeter atual. Use os campos Largura e Altura para definir um tamanho personalizado. A unidade é pixel.
Não
Configurações do eixo X
Personalize o formato de data do rótulo do eixo X. A sintaxe é a API Java SimpleDateFormat .
Não
Configurações do eixo Y
Defina um valor máximo personalizado para o eixo Y em milissegundos. Definir o incremento para a escala (em ms) Mostrar ou não o agrupamento de números nos rótulos do eixo Y.
Não
Lenda
Definir as configurações de posicionamento e fonte para a legenda do gráfico
Sim
^

Visualizador de mala direta

O visualizador de mala direta pode ser configurado para enviar e-mail se uma execução de teste receber muitas respostas com falha do servidor.

Captura de tela do painel de controle do Mailer Visualizer
Captura de tela do painel de controle do Mailer Visualizer

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
A partir de
Endereço de e-mail para enviar mensagens.
Sim
Destinatário(s)
Endereço de e-mail para o qual enviar mensagens, separado por vírgulas.
Sim
Assunto de sucesso
Linha de assunto do e-mail para mensagens de sucesso.
Não
Limite de sucesso
Quando esse número de respostas bem-sucedidas for excedido após atingir anteriormente o limite de falhas , um e-mail de sucesso será enviado. O mailer, portanto, só enviará mensagens em uma sequência de falha-sucesso-falha-sucesso, etc.
Sim
Assunto de falha
Linha de assunto do email para mensagens de falha.
Não
Limite de falha
Quando esse número de respostas com falha for excedido, um e-mail de falha será enviado - ou seja, defina a contagem para 0 para enviar um e-mail na primeira falha.
Sim
Hospedeiro
Endereço IP ou nome de host do servidor SMTP (redirecionador de e-mail).
Não
Porta
Porta do servidor SMTP (o padrão é 25 ).
Não
Conecte-se
Login usado para autenticar.
Não
Senha
Senha usada para autenticar.
Não
Segurança da conexão
Tipo de criptografia para autenticação SMTP (SSL, TLS ou nenhuma).
Não
E-mail de teste
Pressione este botão para enviar um e-mail de teste
Não
Falhas
Um campo que mantém um total em execução do número de falhas recebidas até o momento.
Não
^

Ouvinte do BeanShell

O BeanShell Listener permite o uso do BeanShell para processar amostras para salvar etc.

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell.

A migração para JSR223 Listener +Groovy é altamente recomendada para desempenho, suporte a novos recursos Java e manutenção limitada da biblioteca BeanShell.

O elemento de teste suporta os métodos ThreadListener e TestListener . Estes devem ser definidos no arquivo de inicialização. Consulte o arquivo BeanShellListeners.bshrc para obter definições de exemplo.

Captura de tela do painel de controle do BeanShell Listener
Captura de tela do painel de controle do BeanShell Listener

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore. O nome é armazenado na variável de script Label
Redefinir bsh.Interpreter antes de cada chamada
Se esta opção for selecionada, o interpretador será recriado para cada amostra. Isso pode ser necessário para alguns scripts de execução longa. Para obter mais informações, consulte Práticas recomendadas - scripts do BeanShell .
Sim
Parâmetros
Parâmetros a serem passados ​​para o script BeanShell. Os parâmetros são armazenados nas seguintes variáveis:
Parâmetros
string contendo os parâmetros como uma única variável
bsh.args
Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script BeanShell a ser executado. O nome do arquivo é armazenado na variável de script FileName
Não
Roteiro
O script do BeanShell a ser executado. O valor de retorno é ignorado.
Sim (a menos que o arquivo de script seja fornecido)

Antes de invocar o script, algumas variáveis ​​são configuradas no interpretador BeanShell:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
    
  • props - (JMeterProperties - classe java.util.Properties ) - por exemplo props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResult , prev - ( SampleResult ) - dá acesso ao SampleResult anterior
  • sampleEvent ( SampleEvent ) dá acesso ao evento de amostra atual

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

Se a propriedade beanshell.listener.init estiver definida, ela é usada para carregar um arquivo de inicialização, que pode ser usado para definir métodos etc. para uso no script BeanShell.

^

Relatório Resumido¶

O relatório de resumo cria uma linha de tabela para cada solicitação com nome diferente em seu teste. Isso é semelhante ao Relatório Agregado , exceto que usa menos memória.

A taxa de transferência é calculada do ponto de vista do destino do amostrador (por exemplo, o servidor remoto no caso de amostras HTTP). O JMeter leva em consideração o tempo total durante o qual as solicitações foram geradas. Se outros amostradores e temporizadores estiverem no mesmo encadeamento, eles aumentarão o tempo total e, portanto, reduzirão o valor da taxa de transferência. Portanto, dois amostradores idênticos com nomes diferentes terão metade da taxa de transferência de dois amostradores com o mesmo nome. É importante escolher corretamente os rótulos do amostrador para obter os melhores resultados do Relatório.

  • Rótulo - O rótulo da amostra. Se " Incluir nome do grupo no rótulo? " for selecionado, o nome do grupo de encadeamentos será adicionado como um prefixo. Isso permite que rótulos idênticos de diferentes grupos de roscas sejam agrupados separadamente, se necessário.
  • # Samples - O número de amostras com o mesmo rótulo
  • Média - O tempo médio decorrido de um conjunto de resultados
  • Min - O menor tempo decorrido para as amostras com o mesmo rótulo
  • Max - O maior tempo decorrido para as amostras com o mesmo rótulo
  • Padrão Dev. - o desvio padrão do tempo decorrido da amostra
  • % de erro - Porcentagem de solicitações com erros
  • Taxa de transferência - a taxa de transferência é medida em solicitações por segundo/minuto/hora. A unidade de tempo é escolhida de modo que a taxa exibida seja de pelo menos 1,0 . Quando a taxa de transferência é salva em um arquivo CSV, ela é expressa em solicitações/segundo, ou seja, 30,0 solicitações/minuto são salvas como 0,5 .
  • KB/s recebidos - A taxa de transferência medida em Kilobytes por segundo
  • KB/s enviados - A taxa de transferência medida em Kilobytes por segundo
  • Média Bytes - tamanho médio da resposta da amostra em bytes.

Os tempos estão em milissegundos.

Captura de tela do painel de controle do relatório resumido
Captura de tela do Painel de Controle do Relatório Resumido

A figura abaixo mostra um exemplo de seleção da caixa de seleção " Incluir nome do grupo ".

Amostra "
Exemplo de exibição " Incluir nome do grupo "
^

Salvar respostas em um arquivo

Este elemento de teste pode ser colocado em qualquer lugar no plano de teste. Para cada amostra em seu escopo, ele criará um arquivo de dados de resposta. O principal uso para isso é na criação de testes funcionais, mas também pode ser útil quando a resposta for muito grande para ser exibida no View Results Tree Listener. O nome do arquivo é criado a partir do prefixo especificado, mais um número (a menos que esteja desabilitado, veja abaixo). A extensão do arquivo é criada a partir do tipo de documento, se conhecido. Se não for conhecido, a extensão do arquivo é definida como ' desconhecido'. Se a numeração estiver desabilitada e a adição de um sufixo estiver desabilitada, o prefixo do arquivo será considerado como o nome completo do arquivo. Isso permite que um nome de arquivo fixo seja gerado, se necessário. O nome do arquivo gerado é armazenado na resposta de amostra e pode ser salvo no arquivo de saída do log de teste, se necessário.

A amostra atual é salva primeiro, seguida por quaisquer subamostras (amostras filhas). Se um nome de variável for fornecido, os nomes dos arquivos serão salvos na ordem em que as subamostras aparecerem. Veja abaixo.

Captura de tela do painel de controle de salvar respostas em um arquivo
Captura de tela do Painel de controle de Salvar respostas em um arquivo

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Prefixo do nome do arquivo (pode incluir pastas)
Prefixo para os nomes dos arquivos gerados; isso pode incluir um nome de diretório. Os caminhos relativos são resolvidos em relação ao diretório de trabalho atual (que tem como padrão o diretório bin/ ). O JMeter também suporta caminhos relativos ao diretório que contém o plano de teste atual (arquivo JMX). Se o nome do caminho começar com " ~/ " (ou o que estiver na propriedade JMeter jmeter.save.saveservice.base_prefix ), o caminho será considerado relativo ao local do arquivo JMX.
Se as pastas pai no prefixo não existirem, o JMeter as criará e interromperá o teste se falhar.
Observe que o prefixo do nome do arquivo não deve conter dados relacionados ao thread, portanto, não use nenhuma variável ( ${varName} ) ou funções como ${__threadNum} neste campo
Sim
Nome da variável contendo o nome do arquivo salvo
Nome de uma variável na qual salvar o nome do arquivo gerado (para que possa ser usado posteriormente no plano de teste). Se houver subamostras, um sufixo numérico será adicionado ao nome da variável. Por exemplo, se o nome da variável for FILENAME , o nome do arquivo de amostra pai será salvo na variável FILENAME , e os nomes de arquivo para os samplers filhos serão salvos em FILENAME1 , FILENAME2 etc.
Não
Comprimento mínimo do número de sequência
Se " Não adicionar número ao prefixo " não estiver marcado, os números adicionados ao prefixo serão preenchidos com 0 para que o prefixo tenha o tamanho desse valor. O padrão é 0 .
Não
Salvar apenas respostas com falha
Se selecionado, apenas as respostas com falha serão salvas
Sim
Salvar apenas respostas bem-sucedidas
Se selecionado, apenas as respostas bem-sucedidas serão salvas
Sim
Não adicione número ao prefixo
Se selecionado, nenhum número será adicionado ao prefixo. Se você selecionar essa opção, certifique-se de que o prefixo seja exclusivo ou o arquivo pode ser substituído.
Sim
Não adicione o sufixo do tipo de conteúdo
Se selecionado, nenhum sufixo é adicionado. Se você selecionar essa opção, certifique-se de que o prefixo seja exclusivo ou o arquivo pode ser substituído.
Sim
Adicionar carimbo de data/hora
Se selecionado, a data será incluída no sufixo do arquivo seguindo o formato aaaaMMdd-HHmm_
Sim
Não salve o controlador de transações SampleResult
Se selecionado, o SamplerResult gerado pelo Transaction Controller será ignorado
Sim
^

Ouvinte JSR223

O Ouvinte JSR223 permite que o código de script JSR223 seja aplicado aos resultados de amostra.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Linguagem
A linguagem JSR223 a ser usada
Sim
Parâmetros
Parâmetros a serem passados ​​para o script. Os parâmetros são armazenados nas seguintes variáveis:
Parâmetros
string contendo os parâmetros como uma única variável
argumentos
Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script a ser executado, se um caminho de arquivo relativo for usado, ele será relativo ao diretório referenciado por " user.dir " Propriedade do sistema
Não
Cache de compilação de script
String exclusiva no plano de teste que o JMeter usará para armazenar em cache o resultado da compilação do script se a linguagem usada suportar a interface compilável (Groovy é uma delas, java, beanshell e javascript não são).
Veja nota na propriedade JSR223 Sampler Java System se você estiver usando Groovy sem marcar esta opção
Não
Roteiro
O script a ser executado.
Sim (a menos que o arquivo de script seja fornecido)

Antes de chamar o script, algumas variáveis ​​são configuradas. Observe que essas são variáveis ​​JSR223 - ou seja, elas podem ser usadas diretamente no script.

registro
( Logger ) - pode ser usado para gravar no arquivo de log
Etiqueta
o rótulo da string
Nome do arquivo
o nome do arquivo de script (se houver)
Parâmetros
os parâmetros (como uma String)
argumentos
os parâmetros como um array String (dividido em espaço em branco)
ctx
( JMeterContext ) - dá acesso ao contexto
vars
( JMeterVariables ) - dá acesso de leitura/gravação a variáveis:
vars.get(chave);
vars.put(chave,val);
vars.putObject("OBJ1",new Object());
vars.getObject("OBJ2");
adereços
(JMeterProperties - classe java.util.Properties ) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
sampleResult , anterior
( SampleResult ) - dá acesso ao SampleResult
amostraEvento
( SampleEvent ) - dá acesso ao SampleEvent
amostrador
( Sampler )- dá acesso ao último sampler
FORA
System.out - ex: OUT.println("message")

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

^

Gerar resultados resumidos

Este elemento de teste pode ser colocado em qualquer lugar no plano de teste. Gera um resumo da execução de teste até o momento para o arquivo de log e/ou saída padrão. Ambos os totais em execução e diferencial são mostrados. A saída é gerada a cada n segundos (padrão 30 segundos) no limite de tempo apropriado, para que várias execuções de teste ao mesmo tempo sejam sincronizadas.
Como uma linha de resumo/diferencial é escrita apenas se houver amostras emitidas, o intervalo para geração pode não ser respeitado caso seu teste não tenha nenhuma amostra gerada dentro do intervalo
Consulte o arquivo jmeter.properties para os itens de configuração do sumarizador:
# Defina a seguinte propriedade para iniciar automaticamente um sumarizador com esse nome
# (aplica-se apenas ao modo CLI)
#summariser.name=resumo
#
# intervalo entre resumos (em segundos) padrão 3 minutos
#summariser.interval=30
#
# Escreve mensagens no arquivo de log
#summariser.log=true
#
# Escreve mensagens em System.out
#summariser.out=true
Este elemento destina-se principalmente a execuções em lote (CLI). A saída se parece com o seguinte:
rótulo + 16 em 0:00:12 = 1,3/s Média: 1608 Mín: 1163 Máx: 2009 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Concluído: 0
rótulo + 82 em 0:00:30 = 2,7/s Média: 1518 Min: 1003 Máx: 2020 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 98 em 0:00:42 = 2,3/s Média: 1533 Min: 1003 Max: 2020 Err: 0 (0,00%)
etiqueta + 85 em 0:00:30 = 2,8/s Média: 1505 Min: 1008 Máx: 2005 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 183 em 0:01:13 = 2,5/s Média: 1520 Min: 1003 Max: 2020 Err: 0 (0,00%)
rótulo + 79 em 0:00:30 = 2,7/s Média: 1578 Min: 1089 Máx: 2012 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 262 em 0:01:43 = 2,6/s Média: 1538 Min: 1003 Max: 2020 Err: 0 (0,00%)
etiqueta + 80 em 0:00:30 = 2,7/s Média: 1531 Min: 1013 Máx: 2014 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 342 em 0:02:12 = 2,6/s Média: 1536 Min: 1003 Max: 2020 Err: 0 (0,00%)
rótulo + 83 em 0:00:31 = 2,7/s Média: 1512 Min: 1003 Máx: 1982 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 425 em 0:02:43 = 2,6/s Média: 1531 Min: 1003 Max: 2020 Err: 0 (0,00%)
etiqueta + 83 em 0:00:29 = 2,8/s Média: 1487 Min: 1023 Máx: 2013 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 508 em 0:03:12 = 2,6/s Média: 1524 Min: 1003 Max: 2020 Err: 0 (0,00%)
etiqueta + 78 em 0:00:30 = 2,6/s Média: 1594 Mín: 1013 Máx: 2016 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 586 em 0:03:43 = 2,6/s Média: 1533 Min: 1003 Max: 2020 Err: 0 (0,00%)
etiqueta + 80 em 0:00:30 = 2,7/s Média: 1516 Min: 1013 Máx: 2005 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 666 em 0:04:12 = 2,6/s Média: 1531 Min: 1003 Max: 2020 Err: 0 (0,00%)
rótulo + 86 em 0:00:30 = 2,9/s Média: 1449 Min: 1004 Máx: 2017 Err: 0 (0,00%) Ativo: 5 Iniciado: 5 Finalizado: 0
rótulo = 752 em 0:04:43 = 2,7/s Média: 1522 Min: 1003 Max: 2020 Err: 0 (0,00%)
rótulo + 65 em 0:00:24 = 2,7/s Média: 1579 Min: 1007 Máx: 2003 Err: 0 (0,00%) Ativo: 0 Iniciado: 5 Concluído: 5
rótulo = 817 em 0:05:07 = 2,7/s Média: 1526 Min: 1003 Max: 2020 Err: 0 (0,00%)
O " rótulo " é o nome do elemento. O "+" significa que a linha é uma linha delta, ou seja, mostra as mudanças desde a última saída.
O "=" significa que a linha é uma linha total, ou seja, mostra o total corrente.
As entradas no arquivo de log do JMeter também incluem carimbos de data/hora. O exemplo " 817 em 0:05:07 = 2,7/s " significa que foram 817 amostras gravadas em 5 minutos e 7 segundos, e isso dá 2,7 amostras por segundo.
Os tempos Avg (Médio), Min (Mínimo) e Máximo (Máximo) estão em milissegundos.
" Err " significa número de erros (também mostrado como porcentagem).
As duas últimas linhas aparecerão no final de um teste. Eles não serão sincronizados com o limite de tempo apropriado. Observe que os deltas iniciais e finais podem ser menores que o intervalo (no exemplo acima, isso é de 30 segundos). O primeiro delta geralmente será menor, pois o JMeter sincroniza com o limite do intervalo. O último delta será menor, pois o teste geralmente não terminará em um limite de intervalo exato.

O rótulo é usado para agrupar os resultados da amostra. Portanto, se você tiver vários grupos de threads e quiser resumir todos eles, use o mesmo rótulo - ou adicione o resumidor ao plano de teste (para que todos os grupos de threads estejam no escopo). Diferentes agrupamentos de resumos podem ser implementados usando rótulos adequados e adicionando os resumos às partes apropriadas do plano de teste.

No modo CLI, por padrão, um ouvinte Gerar Resultados de Resumo chamado " sumarizador " é configurado, se você já adicionou um ao seu Plano de Teste, certifique-se de nomeá-lo de forma diferente, caso contrário os resultados serão acumulados sob este rótulo (resumo) levando a resultados errados (soma de amostras totais + amostras localizadas no listener Pai de Gerar Resultados de Resumo).
Isso não é um bug, mas uma escolha de design que permite resumir entre grupos de threads.
Captura de tela para o painel de controle de gerar resultados resumidos
Captura de tela do painel de controle de gerar resultados resumidos

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore. Ele aparece como o " rótulo " na saída. Os detalhes de todos os elementos com o mesmo rótulo serão adicionados juntos.
Sim
^

Visualizador de Asserção de Comparação

O Visualizador de Asserção de Comparação mostra os resultados de qualquer elemento de Asserção de Comparação .
Captura de tela do painel de controle do visualizador de asserção de comparação
Captura de tela do Painel de Controle do Visualizador de Asserção de Comparação

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Sim
^

Ouvinte de back-end

O ouvinte de backend é um ouvinte assíncrono que permite conectar implementações personalizadas de BackendListenerClient . Por padrão, uma implementação Graphite é fornecida.
Captura de tela do painel de controle do ouvinte de back-end
Captura de tela do painel de controle do ouvinte de back-end

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Sim
Implementação do ouvinte de back-end
Classe da implementação BackendListenerClient .
Sim
Tamanho da fila assíncrona
Tamanho da fila que contém os SampleResults enquanto eles são processados ​​de forma assíncrona.
Sim
Parâmetros
Parâmetros da implementação BackendListenerClient .
Sim

Os parâmetros a seguir se aplicam à implementação do GraphiteBackendListenerClient :

Parâmetros

Atributo
Descrição
Requeridos
graphiteMetricsSender
org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender ou org.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender
Sim
grafiteHost
Host do servidor Graphite ou InfluxDB (com plug-in Graphite ativado)
Sim
grafitePort
Porta do servidor Graphite ou InfluxDB (com plug-in Graphite ativado), padrão para 2003 . Observação PickleGraphiteMetricsSender (porta 2004 ) só pode se comunicar com o servidor Graphite.
Sim
rootMetricsPrefix
Prefixo das métricas enviadas ao back-end. O padrão é " jmeter ." Observe que o JMeter não adiciona um separador entre o prefixo raiz e o samplerName, razão pela qual o ponto final é necessário no momento.
Sim
ResumoSomente
Envie apenas um resumo sem detalhes. O padrão é true .
Sim
Lista de amostradores
Define os nomes (rótulos) dos resultados da amostra a serem enviados ao back-end. Se useRegexpForSamplersList=false esta é uma lista de nomes separados por ponto e vírgula. Se useRegexpForSamplersList=true esta é uma expressão regular que será comparada com os nomes.
Sim
useRegexpForSamplersList
Considere samplersList como uma expressão regular para selecionar os samplers para os quais você deseja relatar métricas para o back-end. O padrão é false .
Sim
percentis
Os percentis que você deseja enviar para o back-end. Um percentil pode conter uma parte fracionária, por exemplo 12,5 . (O separador é sempre ".") A lista deve ser separada por ponto e vírgula. Geralmente 3 ou 4 valores devem ser suficientes.
Sim

Consulte também Resultados em tempo real para obter mais detalhes.

Painel Grafana
Painel Grafana

Desde o JMeter 3.2, uma implementação que permite escrever diretamente no InfluxDB com um esquema customizado. É chamado InfluxdbBackendListenerClient . Os seguintes parâmetros se aplicam à implementação do InfluxdbBackendListenerClient :

Parâmetros

Atributo
Descrição
Requeridos
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
Sim
influxdbUrl
URL de influxo (exemplo: http://influxHost:8086/write?db=jmeter )
Sim
influxdbToken
Token de autenticação InfluxDB 2 (exemplo: HE9yIdAPzWJDspH_tCc2UvdKZpX== ); desde 5.2.
Não
inscrição
Nome do aplicativo testado. Este valor é armazenado na medição de ' eventos ' como uma tag chamada ' aplicativo '
Sim
medição
Medição conforme Referência do Protocolo de Linha de Influxo . O padrão é " jmeter ".
Sim
ResumoSomente
Envie apenas um resumo sem detalhes. O padrão é true .
Sim
samplersRegex
Expressão regular que será comparada com os nomes das amostras e enviada para o back-end.
Sim
testeTítulo
Nome de teste. Padrões para Nome do teste . Este valor é armazenado na medição de ' eventos ' como um campo denominado ' texto '. O JMeter gera automaticamente no início e no final do teste uma anotação com este valor terminando com 'iniciado' e 'terminado'
Sim
Event Tags
Grafana permite exibir tag para cada anotação. Você pode preenchê-los aqui. Este valor é armazenado na medição de ' eventos ' como uma tag chamada ' tags '.
Não
percentis
Os percentis que você deseja enviar para o back-end. Um percentil pode conter uma parte fracionária, por exemplo 12,5 (O separador é sempre " . "). A lista deve ser separada por ponto e vírgula. Geralmente três ou quatro valores devem ser suficientes.
Sim
TAG_O que você quiser
Você pode adicionar quantas tags personalizadas desejar. Para cada um deles, crie uma nova linha e prefixe seu nome com " TAG_ "
Não

Veja também resultados em tempo real e anotações do Influxdb no Grafana para mais detalhes. Há também uma subseção sobre como configurar o ouvinte para o InfluxDB v2 .

Desde o JMeter 5.4, uma implementação que grava todos os resultados de amostra no InfluxDB. Ele é chamado de InfluxDBRawBackendListenerClient . Vale ressaltar que isso usará mais recursos que o InfluxdbBackendListenerClient , tanto pelo JMeter quanto pelo InfluxDB devido ao aumento de dados e gravações individuais. Os parâmetros a seguir se aplicam à implementação do InfluxDBRawBackendListenerClient :

Parâmetros

Atributo
Descrição
Requeridos
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
Sim
influxdbUrl
URL de influxo (por exemplo, http://influxHost:8086/write?db=jmeter ou, para a nuvem, https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org =org-id&bucket=jmeter)
Sim
influxdbToken
Token de autenticação InfluxDB 2 (por exemplo, HE9yIdAPzWJDspH_tCc2UvdKZpX==)
Não
medição
Medição conforme Referência do Protocolo de Linha de Influxo . O padrão é " jmeter ."
Sim
^
^

18.4 Elementos de Configuração


Elementos de configuração podem ser usados ​​para configurar padrões e variáveis ​​para uso posterior por amostradores. Observe que esses elementos são processados ​​no início do escopo em que são encontrados, ou seja, antes de qualquer amostrador no mesmo escopo.

Configuração do conjunto de dados CSV

CSV Data Set Config é usado para ler linhas de um arquivo e dividi-las em variáveis. É mais fácil de usar do que as funções __CSVRead() e __StringFromFile() . Ele é adequado para lidar com um grande número de variáveis ​​e também é útil para testar com valores "aleatórios" e exclusivos.

Gerar valores aleatórios exclusivos em tempo de execução é caro em termos de CPU e memória, portanto, basta criar os dados antes do teste. Se necessário, os dados "aleatórios" do arquivo podem ser usados ​​em conjunto com um parâmetro de tempo de execução para criar diferentes conjuntos de valores de cada execução - por exemplo, usando concatenação - o que é muito mais barato do que gerar tudo em tempo de execução.

JMeter permite que valores sejam citados; isso permite que o valor contenha um delimitador. Se " permitir dados entre aspas " estiver habilitado, um valor pode ser colocado entre aspas duplas. Estes são removidos. Para incluir aspas duplas em um campo entre aspas, use duas aspas duplas. Por exemplo:

1,"2,3","4""5" =>
1
2,3
4"5

O JMeter suporta arquivos CSV que possuem uma linha de cabeçalho definindo os nomes das colunas. Para habilitar isso, deixe o campo " Nomes de Variáveis " vazio. O delimitador correto deve ser fornecido.

O JMeter suporta arquivos CSV com dados entre aspas que incluem novas linhas.

Por padrão, o arquivo é aberto apenas uma vez e cada thread usará uma linha diferente do arquivo. No entanto, a ordem na qual as linhas são passadas para as threads depende da ordem em que elas são executadas, que pode variar entre as iterações. As linhas são lidas no início de cada iteração de teste. O nome do arquivo e o modo são resolvidos na primeira iteração.

Consulte a descrição do modo de compartilhamento abaixo para opções adicionais. Se você quiser que cada thread tenha seu próprio conjunto de valores, será necessário criar um conjunto de arquivos, um para cada thread. Por exemplo test1.csv , test2.csv , …, teste n .csv . Use o nome de arquivo test${__threadNum}.csv e defina o " Modo de compartilhamento " para " Thread atual ".

As variáveis ​​do conjunto de dados CSV são definidas no início de cada iteração de teste. Como isso ocorre após a conclusão do processamento da configuração, eles não podem ser usados ​​para alguns itens de configuração - como JDBC Config - que processam seu conteúdo no momento da configuração (consulte o Bug 40394 ) No entanto, as variáveis ​​funcionam no HTTP Auth Manager, como o nome de usuário etc. são processados ​​em tempo de execução.

Como um caso especial, a string " \t " (sem aspas) no campo delimitador é tratada como um Tab.

Quando o final do arquivo ( EOF ) é atingido e a opção de reciclagem é true , a leitura recomeça com a primeira linha do arquivo.

Se a opção de reciclagem for false e stopThread for false , todas as variáveis ​​serão definidas como <EOF> quando o final do arquivo for atingido. Esse valor pode ser alterado configurando a propriedade JMeter csvdataset.eofstring .

Se a opção Recycle for false e Stop Thread for true , atingir EOF fará com que o thread seja interrompido.

Captura de tela do painel de controle da configuração do conjunto de dados CSV
Captura de tela do painel de controle da configuração do conjunto de dados CSV

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Nome do arquivo
Nome do arquivo a ser lido. Os nomes de arquivos relativos são resolvidos com relação ao caminho do plano de teste ativo. Para testes distribuídos, o arquivo CSV deve ser armazenado no sistema host do servidor no diretório relativo correto para onde o servidor JMeter é iniciado. Nomes de arquivo absolutos também são suportados, mas observe que é improvável que funcionem no modo remoto, a menos que o servidor remoto tenha a mesma estrutura de diretórios. Se o mesmo arquivo físico for referenciado de duas maneiras diferentes - por exemplo , csvdata.txt e ./csvdata.txt - eles serão tratados como arquivos diferentes. Se o sistema operacional não distinguir entre maiúsculas e minúsculas, csvData.TXT também será aberto separadamente.
Sim
Codificação de arquivo
A codificação a ser usada para ler o arquivo, se não for o padrão da plataforma.
Não
Nomes de Variáveis
Lista de nomes de variáveis. Os nomes devem ser separados pelo caractere delimitador. Eles podem ser citados usando aspas duplas. O JMeter suporta linhas de cabeçalho CSV: se o campo de nome da variável estiver vazio, a primeira linha do arquivo será lida e interpretada como a lista de nomes de coluna.
Não
Use a primeira linha como nomes de variáveis
Ignore a primeira linha do arquivo CSV, só será usado se Variable Names não estiver vazio, se Variable Names estiver vazio a primeira linha deve conter os cabeçalhos.
Não
Delimitador
Delimitador a ser utilizado para dividir os registros no arquivo. Se houver menos valores na linha do que variáveis, as variáveis ​​restantes não serão atualizadas - portanto, elas manterão seu valor anterior (se houver).
Sim
Permitir dados cotados?
O arquivo CSV deve permitir que os valores sejam citados? Se ativado, os valores podem ser colocados entre " - aspas duplas - permitindo que os valores contenham um delimitador.
Sim
Reciclar em EOF?
O arquivo deve ser relido desde o início ao atingir o EOF ? (o padrão é true )
Sim
Parar thread no EOF?
O encadeamento deve ser interrompido em EOF , se Recycle for false? (o padrão é falso )
Sim
Modo de compartilhamento
  • Todos os encadeamentos - (o padrão) o arquivo é compartilhado entre todos os encadeamentos.
  • Grupo de threads atual - cada arquivo é aberto uma vez para cada grupo de threads no qual o elemento aparece
  • Thread atual - cada arquivo é aberto separadamente para cada thread
  • Identificador - todos os threads que compartilham o mesmo identificador compartilham o mesmo arquivo. Por exemplo, se você tiver 4 grupos de threads, poderá usar um id comum para dois ou mais grupos para compartilhar o arquivo entre eles. Ou você pode usar o número do encadeamento para compartilhar o arquivo entre os mesmos números de encadeamento em diferentes grupos de encadeamentos.
Sim
^

Padrões de Solicitação de FTP

Captura de tela do painel de controle de padrões de solicitação de FTP
Captura de tela do painel de controle de padrões de solicitação de FTP
^

Gerenciador de Cache DNS¶

O elemento DNS Cache Manager permite testar aplicativos, que possuem vários servidores por trás de balanceadores de carga (CDN, etc.), quando o usuário recebe conteúdo de diferentes IPs. Por padrão, o JMeter usa o cache DNS da JVM. É por isso que apenas um servidor do cluster recebe carga. O DNS Cache Manager resolve nomes para cada thread separadamente a cada iteração e salva os resultados da resolução em seu cache DNS interno, que é independente dos caches DNS da JVM e do SO.

Um mapeamento para hosts estáticos pode ser usado para simular algo como o arquivo /etc/hosts . Essas entradas terão preferência sobre o resolvedor personalizado. O uso do resolvedor de DNS personalizado deve ser ativado, se você quiser usar esse mapeamento.

Uso da tabela de host estática

Digamos que você tenha um servidor de teste, que deseja acessar com um nome, que (ainda) não está configurado em seus servidores DNS. Para o nosso exemplo, seria www.example.com para o nome do servidor, que você deseja acessar no IP do servidor a123.another.example.org .

Você pode alterar sua estação de trabalho e adicionar uma entrada ao seu arquivo /etc/hosts - ou o equivalente para o seu sistema operacional, ou adicionar uma entrada à Tabela de Host Estático do Gerenciador de Cache DNS.

Você digitaria www.example.com na primeira coluna ( Host ) e a123.another.example.org na segunda coluna ( Hostname ou endereço IP ). Como o nome da segunda coluna indica, você pode até usar o endereço IP do seu servidor de teste lá.

O endereço IP do servidor de teste será pesquisado usando o resolvedor de DNS personalizado. Quando nenhum for fornecido, o resolvedor de DNS do sistema será usado.

Agora você pode usar www.example.com em seus amostradores HTTPClient4 e as solicitações serão feitas em a123.another.example.org com todos os cabeçalhos definidos como www.example.com .

Captura de tela do painel de controle do DNS Cache Manager
Captura de tela do Painel de Controle do Gerenciador de Cache DNS
O DNS Cache Manager foi projetado para uso na raiz do Grupo de Threads ou Plano de Teste. Não o coloque como elemento filho de um determinado HTTP Sampler
O DNS Cache Manager funciona apenas com solicitações HTTP usando a implementação HTTPClient4.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Limpe o cache a cada iteração
Se selecionado, o cache DNS de cada Thread é limpo sempre que uma nova iteração é iniciada.
Não
Use o resolvedor de DNS do sistema
O resolvedor de DNS do sistema será usado. Para um trabalho correto, edite $JAVA_HOME/jre/lib/security/java.security e adicione networkaddress.cache.ttl=0
N / D
Use o resolvedor de DNS personalizado
O resolvedor de DNS personalizado (da biblioteca dnsjava) será usado.
N / D
Nome do host ou endereço IP
Lista de servidores DNS a serem usados. Se estiver vazio, o DNS de configuração de rede será usado.
Não
Botão Adicionar
Adicione uma entrada à tabela de servidores DNS.
N / D
Botão Excluir
Exclua a entrada da tabela selecionada no momento.
N / D
Host e nome de host ou endereço IP
Mapeamento de nomes de host para uma entrada de host estática que será resolvida usando o resolvedor de DNS personalizado.
Não
Botão Adicionar host estático
Adicione uma entrada à tabela de hosts estáticos.
N / D
Botão Excluir host estático
Exclua o host estático atualmente selecionado na tabela.
N / D
^

Gerenciador de Autorização HTTP¶

O Authorization Manager permite especificar um ou mais logins de usuário para páginas da Web que são restritas ao uso de autenticação de servidor. Você vê esse tipo de autenticação quando usa seu navegador para acessar uma página restrita e seu navegador exibe uma caixa de diálogo de login. O JMeter transmite as informações de login quando encontra esse tipo de página.

Os cabeçalhos de Autorização podem não ser exibidos na guia " Solicitação " do Ouvinte de exibição em árvore . A implementação Java faz autenticação preventiva, mas não retorna o cabeçalho Authorization quando o JMeter busca os cabeçalhos. A implementação do HttpComponents (HC 4.5.X) é preemptiva desde a versão 3.2 e o cabeçalho será mostrado. Para desabilitar isso, defina os valores abaixo, nesse caso a autenticação só será executada em resposta a um desafio.

No arquivo jmeter.properties defina httpclient4.auth.preemptive=false

Observação: as configurações acima se aplicam apenas ao amostrador HttpClient.
Ao procurar uma correspondência em uma URL, o JMeter verifica cada entrada por vez e para quando encontra a primeira correspondência. Assim, os URLs mais específicos devem aparecer primeiro na lista, seguidos pelos menos específicos. URLs duplicados serão ignorados. Se você quiser usar nomes de usuário/senhas diferentes para threads diferentes, você pode usar variáveis. Eles podem ser configurados usando um elemento de configuração do conjunto de dados CSV (por exemplo).
Captura de tela do painel de controle do gerenciador de autorização HTTP
Captura de tela do Painel de Controle do Gerenciador de Autorização HTTP
Se houver mais de um Gerenciador de Autorização no escopo de um Amostrador, atualmente não há como especificar qual deve ser usado.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Limpar autenticação em cada iteração?
Usado pela autenticação Kerberos. Se marcada, a autenticação será feita em cada iteração do loop do Main Thread Group, mesmo que já tenha sido feita em uma anterior. Isso geralmente é útil se cada iteração do grupo de threads principal representar o comportamento de um usuário virtual.
Sim
URL base
Um URL parcial ou completo que corresponde a um ou mais URLs de solicitação HTTP. Como exemplo, digamos que você especifique uma URL base de " http://localhost/restricted/ " com um nome de usuário de " jmeter " e uma senha de " jmeter ". Se você enviar uma solicitação HTTP para a URL " http://localhost/restricted/ant/myPage.html ", o Gerenciador de Autorização enviará as informações de login para o usuário chamado " jmeter ".
Sim
Nome de usuário
O nome de usuário a ser autorizado.
Sim
Senha
A senha do usuário. (NB isso é armazenado sem criptografia no plano de teste)
Sim
Domínio
O domínio a ser usado para NTLM.
Não
Reino
O reino a ser usado para NTLM.
Não
Mecanismo
Tipo de autenticação a ser executada. O JMeter pode executar diferentes tipos de autenticações com base nos Amostradores Http usados:
Java
BÁSICO
HttpClient 4
BASIC , DIGEST e Kerberos
Não
O Realm só se aplica ao amostrador HttpClient.

Configuração do Kerberos:

Para configurar o Kerberos, você precisa configurar pelo menos duas propriedades do sistema JVM:

  • -Djava.security.krb5.conf=krb5.conf
  • -Djava.security.auth.login.config=jaas.conf

Você também pode configurar essas duas propriedades no arquivo bin/system.properties . Veja os dois arquivos de configuração de amostra ( krb5.conf e jaas.conf ) localizados na pasta JMeter bin para referências a mais documentação e ajuste-os para corresponder à sua configuração Kerberos.

A delegação de credenciais está desabilitada por padrão para SPNEGO. Se você quiser ativá-lo, poderá fazê-lo definindo a propriedade kerberos.spnego.delegate_cred como true .

Ao gerar um SPN para autenticação Kerberos SPNEGO, o IE e o Firefox omitirão o número da porta da URL. O Chrome tem uma opção ( --enable-auth-negotiate-port ) para incluir o número da porta se for diferente dos padrões ( 80 e 443 ). Esse comportamento pode ser emulado definindo a seguinte propriedade JMeter conforme abaixo.

Em jmeter.properties ou user.properties , defina:

  • kerberos.spnego.strip_port=false

Controles:
  • Botão Adicionar - Adicione uma entrada à tabela de autorização.
  • Botão Excluir - Excluir a entrada da tabela selecionada no momento.
  • Botão Carregar - Carrega uma tabela de autorização salva anteriormente e adiciona as entradas às entradas da tabela de autorização existente.
  • Botão Salvar como - Salva a tabela de autorização atual em um arquivo.
Quando você salva o Plano de Teste, o JMeter salva automaticamente todas as entradas da tabela de autorização - incluindo quaisquer senhas, que não são criptografadas.
Exemplo de autorização

Baixe este exemplo. Neste exemplo, criamos um Plano de Teste em um servidor local que envia três solicitações HTTP, duas exigindo login e a outra aberta a todos. Veja a figura 10 para ver a composição do nosso Plano de Teste. Em nosso servidor, temos um diretório restrito chamado " secret ", que contém dois arquivos, " index.html " e " index2.html ". Criamos um id de login chamado " kevin ", que tem a senha " spot ". Assim, em nosso Gerenciador de Autorização, criamos uma entrada para o diretório restrito e um nome de usuário e senha (veja a figura 11). As duas solicitações HTTP chamadas " SecretPage1 " e " SecretPage2 "/secret/index.html " e " /secret/index2.html ". A outra solicitação HTTP, chamada " NoSecretPage ", faz uma solicitação para " /index.html ".

Figura 10 - Plano de Teste
Figura 10 - Plano de Teste
Figura 11 - Painel de Controle do Gerenciador de Autorizações
Figura 11 - Painel de Controle do Gerenciador de Autorizações

Quando executamos o Plano de Teste, o JMeter procura na tabela Autorização a URL que está solicitando. Se a URL Base corresponder à URL, o JMeter passará essas informações junto com a solicitação.

Você pode baixar o Plano de Teste, mas como ele foi criado como um teste para nosso servidor local, você não poderá executá-lo. No entanto, você pode usá-lo como referência na construção de seu próprio Plano de Teste.
^

Gerenciador de Cache HTTP¶

O HTTP Cache Manager é usado para adicionar a funcionalidade de cache às solicitações HTTP dentro de seu escopo para simular o recurso de cache do navegador. Cada thread de usuário virtual tem seu próprio cache. Por padrão, o Cache Manager armazenará até 5.000 itens em cache por encadeamento de usuário virtual, usando o algoritmo LRU. Use a propriedade " maxSize " para modificar este valor. Observe que quanto mais você aumentar esse valor, mais o HTTP Cache Manager consumirá memória, portanto, certifique-se de adaptar a opção -Xmx JVM adequadamente.

Se uma amostra for bem-sucedida (ou seja, tiver o código de resposta 2xx ), os valores Last-Modified e Etag (e Expired se relevante) serão salvos para o URL. Antes de executar a próxima amostra, o amostrador verifica se há uma entrada no cache e, em caso afirmativo, os cabeçalhos condicionais If-Last-Modified e If-None-Match são definidos para a solicitação.

Além disso, se a opção " Usar Cache-Control/Expires header " estiver selecionada, o valor Cache-Control / Expires será verificado em relação à hora atual. Se a solicitação for uma solicitação GET e o carimbo de data/hora estiver no futuro, o amostrador retornará imediatamente, sem solicitar a URL do servidor remoto. Isso se destina a emular o comportamento do navegador. Observe que se o cabeçalho Cache-Control for " no-cache ", a resposta será armazenada no cache como pré-expirada, portanto, será gerada uma solicitação GET condicional. Se Cache-Control tiver qualquer outro valor, o " max-age" a opção de expiração é processada para calcular o tempo de vida da entrada, se estiver ausente, o cabeçalho de expiração será usado, se também a entrada ausente será armazenada em cache conforme especificado na seção 13.2.4 da RFC 2616 usando a hora da última modificação e a data de resposta.

Se o documento solicitado não foi alterado desde que foi armazenado em cache, o corpo da resposta estará vazio. Da mesma forma, se a data de expiração estiver no futuro. Isso pode causar problemas para asserções.
Captura de tela do painel de controle do HTTP Cache Manager
Captura de tela do Painel de Controle do Gerenciador de Cache HTTP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Limpe o cache a cada iteração
Se selecionado, o cache é limpo no início do encadeamento.
Sim
Use o cabeçalho Cache Control/Expires ao processar solicitações GET
Veja a descrição acima.
Sim
Número máximo de elementos em cache
Veja a descrição acima.
Sim
^

O elemento Cookie Manager tem duas funções:
Primeiro, ele armazena e envia cookies como um navegador da web. Se você tiver uma solicitação HTTP e a resposta contiver um cookie, o Cookie Manager armazenará automaticamente esse cookie e o usará para todas as solicitações futuras a esse site específico. Cada thread JMeter tem sua própria "área de armazenamento de cookies". Portanto, se você estiver testando um site que usa um cookie para armazenar informações de sessão, cada thread do JMeter terá sua própria sessão. Observe que esses cookies não aparecem na tela do Cookie Manager, mas podem ser vistos usando o View Results Tree Listener.

O JMeter verifica se os cookies recebidos são válidos para a URL. Isso significa que os cookies entre domínios não são armazenados. Se você tiver um comportamento bugado ou quiser que cookies entre domínios sejam usados, defina a propriedade JMeter " CookieManager.check.cookies=false ".

Cookies recebidos podem ser armazenados como variáveis ​​de thread JMeter. Para salvar cookies como variáveis, defina a propriedade " CookieManager.save.cookies=true ". Além disso, os nomes dos cookies são prefixados com " COOKIE_ " antes de serem armazenados (isso evita a corrupção acidental de variáveis ​​locais) Para reverter ao comportamento original, defina a propriedade " CookieManager.name.prefix= " (um ou mais espaços). Se ativado, o valor de um cookie com o nome TEST pode ser referido como ${COOKIE_TEST} .

Segundo, você pode adicionar manualmente um cookie ao Cookie Manager. No entanto, se você fizer isso, o cookie será compartilhado por todos os threads do JMeter.

Observe que esses cookies são criados com um tempo de expiração muito no futuro

Cookies com valores nulos são ignorados por padrão. Isso pode ser alterado configurando a propriedade JMeter: CookieManager.delete_null_cookies=false . Observe que isso também se aplica a cookies definidos manualmente - esses cookies serão removidos da exibição quando forem atualizados. Observe também que o nome do cookie deve ser exclusivo - se um segundo cookie for definido com o mesmo nome, ele substituirá o primeiro.

Captura de tela do painel de controle do HTTP Cookie Manager
Captura de tela do painel de controle do HTTP Cookie Manager
Se houver mais de um Cookie Manager no escopo de um Sampler, atualmente não há como especificar qual deles deve ser usado. Além disso, um cookie armazenado em um gerenciador de cookies não está disponível para nenhum outro gerenciador, portanto, use vários gerenciadores de cookies com cuidado.
Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Limpar cookies a cada iteração
Se selecionado, todos os cookies definidos pelo servidor são limpos sempre que o loop principal do Thread Group é executado. Qualquer cookie definido na GUI não é limpo.
Sim
Política de cookies
A política de cookies que será usada para gerenciar os cookies. " padrão " é o padrão desde 3.0 e deve funcionar na maioria dos casos. Consulte Especificações de cookies e implementações de CookieSpec [Nota: " ignoreCookies " é equivalente a omitir o CookieManager.]
Sim
Implementação
HC4CookieHandler (API HttpClient 4.5.X). O padrão é HC4CookieHandler desde 3.0.
[Observação: se você tiver um site para testar com endereço IPv6, escolha HC4CookieHandler (compatível com IPv6)]
Sim
Cookies definidos pelo usuário
Isso lhe dá a oportunidade de usar cookies codificados que serão usados ​​por todos os threads durante a execução do teste.
O " domínio " é o nome do host do servidor (sem http:// ); a porta é ignorada no momento.
Não (desanimado, a menos que você saiba o que está fazendo)
Botão Adicionar
Adicione uma entrada à tabela de cookies.
N / D
Botão Excluir
Exclua a entrada da tabela selecionada no momento.
N / D
Botão Carregar
Carregue uma tabela de cookies salva anteriormente e adicione as entradas às entradas da tabela de cookies existentes.
N / D
Botão Salvar como
Salve a tabela de cookies atual em um arquivo (não salva nenhum cookie extraído de respostas HTTP).
N / D
^

Padrões de Solicitação HTTP

Esse elemento permite definir valores padrão que seus controladores de solicitação HTTP usam. Por exemplo, se você estiver criando um Plano de Teste com 25 controladores de solicitação HTTP e todas as solicitações estiverem sendo enviadas para o mesmo servidor, você poderá adicionar um único elemento HTTP Request Defaults com o campo " Nome do servidor ou IP " preenchido. , ao adicionar os 25 controladores HTTP Request, deixe o campo " Server Name or IP " vazio. Os controladores herdarão este valor de campo do elemento HTTP Request Defaults.

Todos os valores de porta são tratados igualmente; um amostrador que não especifica uma porta usará a porta HTTP Request Defaults, se uma for fornecida.
Captura de tela do painel de controle de padrões de solicitação HTTP
Captura de tela do painel de controle de padrões de solicitação HTTP
Campos de configuração avançada de solicitação HTTP
Campos de configuração avançada de solicitação HTTP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Servidor
Nome de domínio ou endereço IP do servidor web. Por exemplo , www.example.com . [Não inclua o prefixo http:// .
Não
Porta
Porta que o servidor web está escutando.
Não
Tempo limite de conexão
Tempo limite de conexão. Número de milissegundos para aguardar a abertura de uma conexão.
Não
Tempo limite de resposta
Tempo limite de resposta. Número de milissegundos para aguardar uma resposta.
Não
Implementação
Java , HttpClient4 . Se não especificado, o padrão depende do valor da propriedade JMeter jmeter.httpsampler , caso contrário, a implementação Java é usada.
Não
Protocolo
HTTP ou HTTPS .
Não
Codificação de conteúdo
A codificação a ser usada para a solicitação.
Não
Caminho
O caminho para o recurso (por exemplo, /servlets/myServlet ). Se o recurso exigir parâmetros de string de consulta, adicione-os abaixo na seção " Enviar parâmetros com a solicitação ". Observe que o caminho é o padrão para o caminho completo, não um prefixo a ser aplicado aos caminhos especificados nas telas de solicitação HTTP.
Não
Enviar parâmetros com a solicitação
A string de consulta será gerada a partir da lista de parâmetros que você fornecer. Cada parâmetro tem um nome e um valor . A query string será gerada da forma correta, dependendo da escolha do " Method " que você fez (ou seja, se você escolheu GET , a query string será anexada à URL, se POST , então ela será enviada separadamente). Além disso, se você estiver enviando um arquivo usando um formulário multipartes, a string de consulta será criada usando as especificações do formulário multipartes.
Não
Servidor (proxy)
Nome do host ou endereço IP de um servidor proxy para realizar a solicitação. [Não inclua o prefixo http:// .]
Não
Porta
Porta que o servidor proxy está escutando.
Não, a menos que o nome do host do proxy seja especificado
Nome de usuário
(Opcional) nome de usuário para o servidor proxy.
Não
Senha
(Opcional) senha para o servidor proxy. (NB isso é armazenado sem criptografia no plano de teste)
Não
Recuperar todos os recursos incorporados de arquivos HTML
Diga ao JMeter para analisar o arquivo HTML e enviar solicitações HTTP/HTTPS para todas as imagens, applets Java, arquivos JavaScript, CSSs etc. referenciados no arquivo.
Não
Usar pool simultâneo
Use um pool de conexões simultâneas para obter recursos incorporados.
Não
Tamanho
Tamanho do pool para conexões simultâneas usadas para obter recursos incorporados.
Não
Os URLs devem corresponder:
Se estiver presente, deve ser uma expressão regular usada para corresponder a qualquer URL incorporado encontrado. Portanto, se você deseja baixar apenas recursos incorporados de http://example.invalid/ , use a expressão: http://example\.invalid/.*
Não
Os URLs não devem corresponder:
Se presente, deve ser uma expressão regular usada para filtrar quaisquer URLs incorporados encontrados. Portanto, se você não quiser baixar arquivos PNG ou SVG de nenhuma fonte, use a expressão: .*\.(?i:svg|png)
Não
Observação: os botões de opção têm apenas dois estados - ativado ou desativado. Isso torna impossível substituir as configurações de forma consistente - off significa off ou significa usar o padrão atual? O JMeter usa o último (caso contrário, os padrões não funcionariam). Portanto, se o botão estiver desativado, um elemento posterior poderá ativá-lo, mas se o botão estiver ativado, um elemento posterior não poderá desativá-lo.
^

Gerenciador de cabeçalho HTTP¶

O Header Manager permite adicionar ou substituir cabeçalhos de solicitação HTTP.

O JMeter agora suporta vários gerenciadores de cabeçalho . As entradas de cabeçalho são mescladas para formar a lista do amostrador. Se uma entrada a ser mesclada corresponder a um nome de cabeçalho existente, ela substituirá a entrada anterior. Isso permite configurar um conjunto padrão de cabeçalhos e aplicar ajustes a amostradores específicos. Observe que um valor vazio para um cabeçalho não remove um cabeçalho existente, apenas substitui seu valor.

Captura de tela do painel de controle do gerenciador de cabeçalho HTTP
Captura de tela do painel de controle do gerenciador de cabeçalho HTTP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Nome (cabeçalho)
Nome do cabeçalho da solicitação. Dois cabeçalhos de solicitação comuns que você pode experimentar são " User-Agent " e " Referer ".
Não (você deve ter pelo menos um, no entanto)
Valor
Valor do cabeçalho da solicitação.
Não (você deve ter pelo menos um, no entanto)
Botão Adicionar
Adicione uma entrada à tabela de cabeçalho.
N / D
Botão Excluir
Exclua a entrada da tabela selecionada no momento.
N / D
Botão Carregar
Carregue uma tabela de cabeçalho salva anteriormente e adicione as entradas às entradas da tabela de cabeçalho existente.
N / D
Botão Salvar como
Salve a tabela de cabeçalho atual em um arquivo.
N / D
Exemplo de gerenciador de cabeçalho

Baixe este exemplo. Neste exemplo, criamos um Plano de Teste que informa ao JMeter para substituir o cabeçalho de solicitação " User-Agent " padrão e usar uma string de agente específica do Internet Explorer. (ver figuras 12 e 13).

Figura 12 - Plano de Teste
Figura 12 - Plano de Teste
Figura 13 - Painel de controle do gerenciador de cabeçalho
Figura 13 - Painel de controle do gerenciador de cabeçalho
^

Padrões de Solicitação Java

O componente Java Request Defaults permite definir valores padrão para teste Java. Consulte a Solicitação Java .

Captura de tela do painel de controle de padrões de solicitação Java
Captura de tela do painel de controle de padrões de solicitação Java
^

Configuração de Conexão JDBC

Cria uma conexão de banco de dados (usada pelo JDBC Request Sampler) a partir das configurações de conexão JDBC fornecidas. A conexão pode ser opcionalmente agrupada entre threads. Caso contrário, cada thread obtém sua própria conexão. O nome da configuração da conexão é usado pelo JDBC Sampler para selecionar a conexão apropriada. O pool usado é DBCP, consulte Parâmetros de configuração BasicDataSource
Captura de tela do painel de controle da configuração de conexão JDBC
Captura de tela do painel de controle da configuração de conexão JDBC

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para a configuração de conexão que é mostrada na árvore.
Não
Nome da variável para o pool criado
O nome da variável à qual a conexão está vinculada. Várias conexões podem ser usadas, cada uma vinculada a uma variável diferente, permitindo que os JDBC Samplers selecionem a conexão apropriada.
Cada nome deve ser diferente. Se houver dois elementos de configuração usando o mesmo nome, apenas um será salvo. O JMeter registra uma mensagem se um nome duplicado for detectado.
Sim
Número máximo de conexões
Número máximo de conexões permitidas no pool. Na maioria dos casos, defina como zero (0) . Isso significa que cada thread terá seu próprio pool com uma única conexão, ou seja, as conexões não são compartilhadas entre as threads.
Se você realmente deseja usar o pool compartilhado (por quê?), defina a contagem máxima para o mesmo que o número de threads para garantir que os threads não esperem um pelo outro.
Sim
Espera máxima (ms)
O pool gera um erro se o período de tempo limite for excedido no processo de tentar recuperar uma conexão, consulte BasicDataSource.html#getMaxWaitMillis
Sim
Tempo entre execuções de despejo (ms)
O número de milissegundos para dormir entre execuções do encadeamento do evictor de objeto inativo. Quando não positivo, nenhum thread de evictor de objeto ocioso será executado. (O padrão é " 60000 ", 1 minuto). Consulte BasicDataSource.html#getTimeBetweenEvictionRunsMillis
Sim
Confirmação automática
Ative ou desative a confirmação automática para as conexões.
Sim
Isolamento da transação
Nível de isolamento da transação
Sim
Pool de pré-inicialização
O pool de conexões pode ser inicializado instantaneamente. Se definido como False (padrão), os amostradores de solicitação JDBC que usam esse pool podem medir tempos de resposta mais altos para as primeiras consultas – já que o tempo de estabelecimento da conexão para todo o pool está incluído.
Não
Init SQL instruções separadas por nova linha
Uma coleção de instruções SQL que serão usadas para inicializar conexões físicas quando forem criadas pela primeira vez. Essas instruções são executadas apenas uma vez - quando o connection factory configurado cria a conexão.
Não
Teste enquanto ocioso
Teste as conexões ociosas do pool, consulte BasicDataSource.html#getTestWhileIdle . A Consulta de Validação será usada para testá-lo.
Sim
Tempo de inatividade mínimo evitável (ms)
Quantidade mínima de tempo que uma conexão pode ficar inativa no pool antes de ser elegível para remoção pelo evictor de objeto inativo, com a condição extra de que pelo menos conexões minIdle permaneçam no pool. Consulte BasicDataSource.html#getSoftMinEvictableIdleTimeMillis . O padrão é 5000 (5 segundos)
Sim
Consulta de validação
Uma consulta simples usada para determinar se o banco de dados ainda está respondendo. O padrão é o método ' isValid() ' do driver jdbc, que é adequado para muitos bancos de dados. No entanto, alguns podem exigir uma consulta diferente; por exemplo Oracle algo como ' SELECT 1 FROM DUAL ' poderia ser usado.

A lista de consultas de validação pode ser configurada com a propriedade jdbc.config.check.query e são por padrão:

hsqldb
selecione 1 de INFORMATION_SCHEMA.SYSTEM_USERS
Oráculo
selecione 1 de dupla
DB2
selecione 1 de sysibm.sysdummy1
MySQL ou MariaDB
selecione 1
Microsoft SQL Server (driver MS JDBC)
selecione 1
PostgreSQL
selecione 1
Entradas
selecione 1
Derby
valores 1
H2
selecione 1
Pássaro de Fogo
selecione 1 do banco de dados rdb$
Exasol
selecione 1
Observe que essa consulta de validação é usada na criação do pool para validá-lo, mesmo que " Test While Idle " sugira que a consulta só seria usada em conexões inativas. Este é o comportamento DBCP.
Não
URL do banco de dados
Cadeia de conexão JDBC para o banco de dados.
Sim
Classe de driver JDBC
Nome totalmente qualificado da classe de driver. (Deve estar no classpath do JMeter - é mais fácil copiar o arquivo .jar para o diretório /lib do JMeter ).

A lista de classes de driver jdbc pré-configuradas pode ser configurada com a propriedade jdbc.config.jdbc.driver.class e são por padrão:

hsqldb
org.hsqldb.jdbc.JDBCDriver
Oráculo
oracle.jdbc.OracleDriver
DB2
com.ibm.db2.jcc.DB2Driver
MySQL
com.mysql.jdbc.Driver
Microsoft SQL Server (driver MS JDBC)
com.microsoft.sqlserver.jdbc.SQLServerDriver ou com.microsoft.jdbc.sqlserver.SQLServerDriver
PostgreSQL
org.postgresql.Driver
Entradas
com.ingres.jdbc.IngresDriver
Derby
org.apache.derby.jdbc.ClientDriver
H2
org.h2.Driver
Pássaro de Fogo
org.firebirdsql.jdbc.FBDriver
Apache Derby
org.apache.derby.jdbc.ClientDriver
MariaDB
org.mariadb.jdbc.Driver
SQLite
org.sqlite.JDBC
Sybase AES
net.sourceforge.jtds.jdbc.Driver
Exasol
com.exasol.jdbc.EXADriver
Sim
Nome de usuário
Nome do usuário com o qual se conectar.
Não
Senha
Senha para se conectar. (NB isso é armazenado sem criptografia no plano de teste)
Não
Propriedades da conexão
Propriedades de conexão a serem definidas ao estabelecer a conexão (como internal_logon=sysdba para Oracle, por exemplo)
Não

Bancos de dados e drivers JDBC diferentes requerem configurações JDBC diferentes. A URL do banco de dados e a classe Driver JDBC são definidas pelo provedor da implementação JDBC.

Algumas configurações possíveis são mostradas abaixo. Verifique os detalhes exatos na documentação do driver JDBC.

Se o JMeter relatar Nenhum driver adequado , isso pode significar:

  • A classe do driver não foi encontrada. Nesse caso, haverá uma mensagem de log como DataSourceElement: Não foi possível carregar o driver: {classname} java.lang.ClassNotFoundException: {classname}
  • A classe do driver foi encontrada, mas a classe não oferece suporte à cadeia de conexão. Isso pode ocorrer devido a um erro de sintaxe na cadeia de conexão ou porque o nome de classe incorreto foi usado.

Se o servidor de banco de dados não estiver em execução ou não estiver acessível, o JMeter relatará um java.net.ConnectException .

Alguns exemplos de bancos de dados e seus parâmetros são fornecidos abaixo.

MySQL
Classe de motorista
com.mysql.jdbc.Driver
URL do banco de dados
jdbc:mysql://host[:port]/dbname
PostgreSQL
Classe de motorista
org.postgresql.Driver
URL do banco de dados
jdbc:postgresql:{dbname}
Oráculo
Classe de motorista
oracle.jdbc.OracleDriver
URL do banco de dados
jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no} ))(connect_data=(sid={sid})))
Entrada (2006)
Classe de motorista
ingres.jdbc.IngresDriver
URL do banco de dados
jdbc:ingres://host:port/db[;attr=value]
Microsoft SQL Server (driver MS JDBC)
Classe de motorista
com.microsoft.sqlserver.jdbc.SQLServerDriver
URL do banco de dados
jdbc:sqlserver://host:port;DatabaseName=dbname
Apache Derby
Classe de motorista
org.apache.derby.jdbc.ClientDriver
URL do banco de dados
jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]]
MariaDB
Classe de motorista
org.mariadb.jdbc.Driver
URL do banco de dados
jdbc:mariadb://host[:port]/dbname[;URLAttributes=value[;…]]
Exasol (consulte também a documentação do driver JDBC )
Classe de motorista
com.exasol.jdbc.EXADriver
URL do banco de dados
jdbc:exa:host[:port][;schema=SCHEMA_NAME][;prop_x=value_x]
O acima pode não estar correto - verifique a documentação do driver JDBC relevante.
^

Configuração do armazenamento de chaves

O Keystore Config Element permite configurar como o Keystore será carregado e quais chaves ele usará. Esse componente é normalmente usado em cenários HTTPS em que você não deseja levar em conta a inicialização do keystore no tempo de resposta.

Para usar este elemento, você precisa primeiro configurar um Java Key Store com os certificados de cliente que deseja testar, para isso:

  1. Crie seus certificados com o utilitário Java keytool ou através de seu PKI
  2. Se criado por PKI, importe suas chaves no Java Key Store convertendo-as em um formato aceitável por JKS
  3. Em seguida, faça referência ao arquivo keystore por meio das duas propriedades da JVM (ou inclua-as em system.properties ):
    • -Djavax.net.ssl.keyStore=path_to_keystore
    • -Djavax.net.ssl.keyStorePassword=password_of_keystore

Para usar PKCS11 como a origem da loja, você precisa definir javax.net.ssl.keyStoreType como PKCS11 e javax.net.ssl.keyStore como NONE .

Captura de tela do painel de controle da configuração do keystore
Captura de tela do painel de controle da configuração do keystore

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Pré-carregar
Se deve ou não pré-carregar o Keystore. Defini-lo como verdadeiro geralmente é a melhor opção.
Sim
Nome da variável que contém o alias do certificado
Nome da variável que conterá o alias a ser usado para autenticação por certificado de cliente. O valor da variável será preenchido a partir do conjunto de dados CSV, por exemplo. Na captura de tela, " certificat_ssl " também será uma variável no conjunto de dados CSV. Padrões para clientCertAliasVarName
Falso
Índice inicial de alias
O índice da primeira chave a ser usada no Keystore, baseado em 0.
Sim
Índice final de alias
O índice da última chave a ser usada no Keystore, baseado em 0. Ao usar " Nome variável contendo alias de certificado ", certifique-se de que seja grande o suficiente para que todas as chaves sejam carregadas na inicialização. O padrão é -1, o que significa carregar tudo.
Sim
Para fazer o JMeter usar mais de um certificado, você precisa garantir que:
  • https.use.cached.ssl.context=false é definido em jmeter.properties ou user.properties
  • Você usa a implementação HTTPClient 4 para solicitação HTTP
^

Elemento de configuração de login

O Elemento de configuração de login permite adicionar ou substituir as configurações de nome de usuário e senha em samplers que usam nome de usuário e senha como parte de sua configuração.

Captura de tela do painel de controle do elemento de configuração de login
Captura de tela do painel de controle do elemento de configuração de login

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Nome de usuário
O nome de usuário padrão a ser usado.
Não
Senha
A senha padrão a ser usada. (NB isso é armazenado sem criptografia no plano de teste)
Não
^

Padrões de Solicitação LDAP

O componente Padrões de Solicitação de LDAP permite definir valores padrão para teste de LDAP. Consulte a Solicitação LDAP .

Captura de tela do painel de controle de padrões de solicitação LDAP
Captura de tela do painel de controle de padrões de solicitação LDAP
^

Padrões de Solicitação Estendida de LDAP

O componente Padrões de Solicitação Estendida de LDAP permite definir valores padrão para testes de LDAP estendidos. Consulte a Solicitação Estendida do LDAP .

Captura de tela do painel de controle dos padrões de solicitação estendida do LDAP
Captura de tela do Painel de Controle de Padrões de Solicitação Estendida LDAP
^

Configuração do Amostrador TCP¶

O TCP Sampler Config fornece dados padrão para o TCP Sampler

Captura de tela do painel de controle da configuração do amostrador TCP
Captura de tela do painel de controle da configuração do amostrador TCP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Nome da classe TCPClient
Nome da classe TCPClient. O padrão é a propriedade tcp.handler , falhando TCPClientImpl .
Não
Nome do servidor ou IP
Nome ou IP do servidor TCP
Número da porta
Porta a ser usada
Reutilizar conexão
Se selecionado, a conexão é mantida aberta. Caso contrário, é fechado quando os dados são lidos.
Sim
Fechar conexão
Se selecionado, a conexão será fechada após a execução do amostrador.
Sim
SO_LINGER
Habilite/desabilite SO_LINGER com o tempo de espera especificado em segundos quando um soquete é criado. Se você definir o valor " SO_LINGER " como 0 , poderá evitar um grande número de soquetes com um status TIME_WAIT .
Não
Valor de byte de fim de linha (EOL)
Valor de byte para fim de linha, defina-o como um valor fora do intervalo -128 a +127 para ignorar a verificação de EOL. Você pode definir isso no arquivo jmeter.properties também com a propriedade tcp.eolByte . Se você definir isso no TCP Sampler Config e no arquivo jmeter.properties ao mesmo tempo, o valor da configuração no TCP Sampler Config será usado.
Não
Tempo limite de conexão
Tempo limite de conexão (milissegundos, 0 desativa).
Não
Tempo limite de resposta
Tempo limite de resposta (milissegundos, 0 desabilita).
Não
Definir atraso
A propriedade nodelay deve ser definida?
Texto para enviar
Texto a ser enviado
^

Variáveis ​​Definidas pelo Usuário

O elemento User Defined Variables permite definir um conjunto inicial de variáveis , assim como no Plano de Teste .

Observe que todos os elementos UDV em um plano de teste - não importa onde estejam - são processados ​​no início.
Portanto, você não pode referenciar variáveis ​​que são definidas como parte de uma execução de teste, por exemplo, em um pós-processador.

UDVs não devem ser usados ​​com funções que geram resultados diferentes cada vez que são chamadas. Apenas o resultado da primeira chamada de função será salvo na variável. No entanto, UDVs podem ser usados ​​com funções como __P() , por exemplo:

HOST ${__P(host,localhost)}

que definiria a variável " HOST " para ter o valor da propriedade JMeter " host ", padronizando para " localhost " se não for definido.

Para definir variáveis ​​durante uma execução de teste, consulte Parâmetros do usuário . Os UDVs são processados ​​na ordem em que aparecem no Plano, de cima para baixo.

Para simplificar, sugere-se que os UDVs sejam colocados apenas no início de um Grupo de Threads (ou talvez sob o próprio Plano de Teste).

Uma vez que o Plano de Teste e todos os UDVs tenham sido processados, o conjunto de variáveis ​​resultante é copiado para cada encadeamento para fornecer o conjunto inicial de variáveis.

Se um elemento de tempo de execução, como um pré-processador de parâmetros do usuário ou um extrator de expressão regular, definir uma variável com o mesmo nome de uma das variáveis ​​UDV, isso substituirá o valor inicial e todos os outros elementos de teste no encadeamento verão o valor atualizado valor.

Captura de tela do painel de controle de variáveis ​​definidas pelo usuário
Captura de tela do painel de controle de variáveis ​​definidas pelo usuário
Se você tiver mais de um Thread Group, certifique-se de usar nomes diferentes para valores diferentes, pois os UDVs são compartilhados entre os Thread Groups. Além disso, as variáveis ​​não estão disponíveis para uso até que o elemento tenha sido processado, portanto, você não pode fazer referência a variáveis ​​definidas no mesmo elemento. Você pode fazer referência a variáveis ​​definidas em UDVs anteriores ou no Plano de Teste.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Variáveis ​​definidas pelo usuário
Pares de nome/valor de variável. A string sob a coluna " Name " é o que você precisará colocar dentro dos colchetes nas construções ${…} para usar as variáveis ​​posteriormente. O ${…} inteiro será então substituído pela string na coluna " Value ".
^

Variável Aleatória

O Random Variable Config Element é usado para gerar strings numéricas aleatórias e armazená-las na variável para uso posterior. É mais simples do que usar variáveis ​​definidas pelo usuário junto com a função __Random() .

A variável de saída é construída usando o gerador de números aleatórios e, em seguida, o número resultante é formatado usando a string de formato. O número é calculado usando a fórmula Minimum+Random.nextInt(maximum-minimum+1) . Random.nextInt() requer um número inteiro positivo. Isso significa que máximo-mínimo - ou seja, o intervalo - deve ser menor que 2147483647 , no entanto, os valores mínimo e máximo podem ser quaisquer valores longos , desde que o intervalo esteja OK.

Como o valor aleatório é avaliado no início de cada iteração, provavelmente não é uma boa ideia usar uma variável diferente de uma propriedade como valor para o mínimo ou máximo. Seria zero na primeira iteração.
Captura de tela do painel de controle da variável aleatória
Captura de tela do painel de controle da variável aleatória

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Sim
Nome variável
O nome da variável na qual armazenar a string aleatória.
Sim
String de formato
A string de formato java.text.DecimalFormat a ser usada. Por exemplo " 000 " que irá gerar números com pelo menos 3 dígitos, ou " USER_000 " que irá gerar saída no formato USER_nnn . Se não for especificado, o padrão é gerar o número usando Long.toString()
Não
Valor mínimo
O valor mínimo ( long ) do número aleatório gerado.
Sim
Valor máximo
O valor máximo ( long ) do número aleatório gerado.
Sim
Semente Aleatória
A semente para o gerador de números aleatórios. Se você usar o mesmo valor de semente com Per Thread definido como true , obterá o mesmo valor para cada Thread conforme a classe Random . Se nenhuma semente for definida, o construtor padrão de Random será usado.
Não
Por Tópico (Usuário)?
Se False , o gerador é compartilhado entre todos os encadeamentos no grupo de encadeamentos. Se True , cada thread tem seu próprio gerador aleatório.
Sim
^

Contador

Permite que o usuário crie um contador que pode ser referenciado em qualquer lugar do Grupo de Threads. A configuração do contador permite que o usuário configure um ponto de partida, um máximo e o incremento. O contador fará um loop do início ao máximo e, em seguida, recomeçará com o início, continuando assim até que o teste termine.

O contador usa um long para armazenar o valor, portanto, o intervalo é de -2^63 a 2^63-1 .

Captura de tela do painel de controle do contador
Captura de tela do painel de controle do contador

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Valor inicial
O valor inicial para o contador. O contador será igual a esse valor durante a primeira iteração (o padrão é 0).
Não
Incremento
Quanto incrementar o contador após cada iteração (o padrão é 0, significando sem incremento).
Sim
Valor máximo
Se o contador exceder o máximo, ele será redefinido para o valor inicial . O padrão é Longo.MAX_VALUE
Não
Formato
Formato opcional, por exemplo, 000 será formatado como 001 , 002 , etc. Isso é passado para DecimalFormat , portanto, qualquer formato válido pode ser usado. Se houver um problema ao interpretar o formato, ele será ignorado. [O formato padrão é gerado usando Long.toString() ]
Não
Nome da variável exportada
Este será o nome da variável sob a qual o valor do contador estará disponível. Se você o nomear counterA , poderá acessá-lo usando ${counterA} conforme explicado em valores definidos pelo usuário (por padrão, ele cria uma variável de string vazia que pode ser acessada usando ${} , mas isso é altamente desencorajado)
Não
Rastrear contador de forma independente para cada usuário
Em outras palavras, este é um contador global ou cada usuário recebe seu próprio contador? Se desmarcado, o contador é global (ou seja, o usuário #1 obterá o valor " 1 ", e o usuário #2 obterá o valor " 2 " na primeira iteração). Se marcado, cada usuário tem um contador independente.
Não
Redefinir o contador em cada iteração do grupo de threads
Esta opção só está disponível quando o contador é rastreado por usuário, se marcado, o contador será redefinido para o valor inicial em cada iteração do grupo de threads. Isso pode ser útil quando o contador está dentro de um controlador de loop.
Não
^

Elemento de Configuração Simples¶

O Elemento de Configuração Simples permite adicionar ou substituir valores arbitrários em amostradores. Você pode escolher o nome do valor e o próprio valor. Embora alguns usuários aventureiros possam encontrar um uso para esse elemento, ele está aqui principalmente para desenvolvedores como uma GUI básica que eles podem usar ao desenvolver novos componentes JMeter.

Captura de tela do painel de controle do elemento de configuração simples
Captura de tela do painel de controle do elemento de configuração simples

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Sim
Nome do parâmetro
O nome de cada parâmetro. Esses valores são internos ao funcionamento do JMeter e geralmente não são documentados. Somente aqueles familiarizados com o código conhecerão esses valores.
Sim
Valor do parâmetro
O valor a ser aplicado a esse parâmetro.
Sim
^

Configuração de origem do MongoDB (OBSOLETO)

Cria uma conexão MongoDB (usada pelo MongoDB Script Sampler) a partir das configurações de conexão fornecidas. Cada thread obtém sua própria conexão. O nome da configuração da conexão é usado pelo JDBC Sampler para selecionar a conexão apropriada.

Você pode então acessar o objeto com.mongodb.DB no Beanshell ou JSR223 Test Elements através do elemento MongoDBHolder usando este código

import com.mongodb.DB;
import org.apache.jmeter.protocol.mongodb.config.MongoDBHolder;
DB db = MongoDBHolder.getDBFromSource("valor da propriedade MongoDB Source",
            "valor da propriedade Nome do Banco de Dados");
…
    
Captura de tela do painel de controle da configuração de origem do MongoDB (OBSOLETO)
Captura de tela do painel de controle da configuração de origem do MongoDB (OBSOLETO)

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para a configuração de conexão que é mostrada na árvore.
Não
Lista de endereços do servidor
Servidores Mongo DB
Sim
Fonte MongoDB
O nome da variável à qual a conexão está vinculada.
Cada nome deve ser diferente. Se houver dois elementos de configuração usando o mesmo nome, apenas um será salvo.
Sim
Continue tentando
Se true , o driver continuará tentando se conectar ao mesmo servidor caso o soquete não possa ser estabelecido.
Há um tempo máximo para continuar tentando novamente, que é 15s por padrão.
Isso pode ser útil para evitar que algumas exceções sejam lançadas quando um servidor estiver temporariamente inativo, bloqueando as operações.
Também pode ser útil suavizar a transição para um novo nó primário (para que um novo nó primário seja eleito dentro do tempo de repetição).
Observe que ao usar este sinalizador
  • para um conjunto de réplicas, o driver tentará se conectar ao nó primário antigo por esse tempo, em vez de fazer failover para o novo imediatamente
  • isso não impede que a exceção seja lançada em operações de leitura/gravação no soquete, que devem ser tratadas pelo aplicativo.
Mesmo que esse sinalizador seja falso, o driver já possui mecanismos para recriar automaticamente as conexões interrompidas e repetir as operações de leitura.
O padrão é falso .
Não
Máximo de conexões por host
Não
Tempo limite de conexão
O tempo limite da conexão em milissegundos.
Ele é usado somente ao estabelecer uma nova conexão Socket.connect(java.net.SocketAddress, int)
O padrão é 0 e significa que não há tempo limite.
Não
Tempo máximo de repetição
A quantidade máxima de tempo em milissegundos para gastar tentando novamente abrir a conexão com o mesmo servidor.
O padrão é 0 , o que significa usar o padrão 15s se autoConnectRetry estiver ativado.
Não
Tempo máximo de espera
O tempo de espera máximo em milissegundos que um thread pode aguardar até que uma conexão fique disponível.
O padrão é 120.000 .
Não
Tempo limite do soquete
O tempo limite do soquete em milissegundos É usado para operações de leitura e gravação do soquete de E/S Socket.setSoTimeout(int)
O padrão é 0 e significa que não há tempo limite.
Não
Soquete manter vivo
Este sinalizador controla o recurso socket keep alive que mantém uma conexão ativa por meio de firewalls Socket.setKeepAlive(boolean)
O padrão é false .
Não
ThreadsAllowedToBlockForConnectionMultiplicador
Esse multiplicador, multiplicado pela configuração connectionsPerHost, fornece o número máximo de threads que podem estar aguardando uma conexão ficar disponível no pool.
Todos os outros tópicos receberão uma exceção imediatamente.
Por exemplo, se connectionsPerHost for 10 e threadsAllowedToBlockForConnectionMultiplier for 5 , até 50 threads poderão aguardar uma conexão.
O padrão é 5 .
Não
Escreva Preocupação: Seguro
Se true , o driver usará um WriteConcern de WriteConcern.SAFE para todas as operações.
Se w , wtimeout , fsync ou j forem especificados, essa configuração será ignorada.
O padrão é falso .
Não
Preocupação de gravação: Fsync
O valor fsync do WriteConcern global .
O padrão é falso .
Não
Escreva Preocupação: Aguarde o Diário
O valor j do WriteConcern global .
O padrão é falso .
Não
Preocupação de gravação: aguarde os servidores
O valor w do WriteConcern global .
O padrão é 0 .
Não
Preocupação de gravação: tempo limite de espera
O valor wtimeout do WriteConcern global .
O padrão é 0 .
Não
Preocupação de gravação: Continuar no erro
Se as inserções em lote continuarem após o primeiro erro
Não
^
^

Configuração de Conexão de Parafuso

Cria um pool de conexão Bolt (usado pelo Bolt Request Sampler) a partir das configurações de conexão fornecidas.
Captura de tela do painel de controle da configuração da conexão do parafuso
Captura de tela do painel de controle da configuração da conexão do parafuso

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este amostrador que é mostrado na árvore.
Não
Comentários
Texto livre para detalhes adicionais.
Não
URI do parafuso
O URI do banco de dados.
Sim
Nome de usuário
Conta de usuário.
Não
Senha
As credenciais do usuário.
Não
^
^

18.5 Asserções

Asserções são usadas para realizar verificações adicionais em amostradores e são processadas após cada amostrador no mesmo escopo. Para garantir que uma Asserção seja aplicada apenas a um determinado amostrador, adicione-a como filho do amostrador.

Observação: a menos que documentado de outra forma, asserções não são aplicadas a subamostras (amostras filhas) - somente à amostra pai. No caso de JSR223 e BeanShell Assertions, o script pode recuperar subamostras usando o método prev.getSubResults() que retorna uma matriz de SampleResults. A matriz estará vazia se não houver nenhuma.

As asserções podem ser aplicadas à amostra principal, às subamostras ou a ambas. O padrão é aplicar a asserção apenas à amostra principal. Se a Asserção suportar esta opção, haverá uma entrada na GUI semelhante a esta:

Escopo da declaração
Escopo da declaração
ou o seguinte
Escopo da declaração
Escopo da declaração

Se um subamostrador falhar e a amostra principal for bem-sucedida, a amostra principal será configurada para o status de falha e um Resultado de Asserção será adicionado. Se a opção de variável JMeter for usada, supõe-se que ela esteja relacionada à amostra principal e qualquer falha será aplicada apenas à amostra principal.

A variável JMeterThread.last_sample_ok é atualizada para " true " ou " false " após todas as asserções para um amostrador terem sido executadas.

Asserção de Resposta

O painel de controle de asserção de resposta permite adicionar sequências de padrões para serem comparadas com vários campos da solicitação ou resposta. As strings padrão são:

  • Contém , Matches : Expressões regulares no estilo Perl5
  • Equals , Substring : texto simples, diferencia maiúsculas de minúsculas

Um resumo dos caracteres de correspondência de padrões pode ser encontrado nas expressões regulares ORO Perl5.

Você também pode escolher se espera-se que as strings correspondam à resposta inteira ou se espera-se que a resposta contenha apenas o padrão. Você pode anexar várias asserções a qualquer controlador para flexibilidade adicional.

Observe que a string do padrão não deve incluir os delimitadores delimitadores, ou seja, use Price: \d+ not /Price: \d+/ .

Por padrão, o padrão está no modo de várias linhas, o que significa que o metacaractere " . " não corresponde à nova linha. No modo de várias linhas, " ^ " e " $ " correspondem ao início ou fim de qualquer linha em qualquer lugar dentro da string - não apenas o início e o fim de toda a string. Observe que \s corresponde à nova linha. Caso também é significativo. Para substituir essas configurações, pode-se usar a sintaxe de expressão regular estendida . Por exemplo:

(?eu)
ignorar caso
(?s)
tratar o destino como uma única linha, ou seja, " . " corresponde à nova linha
(?é)
ambos os acima
Eles podem ser usados ​​em qualquer lugar dentro da expressão e permanecem em vigor até serem substituídos. Por exemplo
(?i)maçã(?-i) Torta
corresponde a " Apple Pie ", mas não a " Apple pIe "
(?s)Maçã.+?Torta
corresponde a Apple seguido por Pie , que pode estar em uma linha subsequente.
Maçã(?s).+?Torta
o mesmo que acima, mas provavelmente é mais claro usar o (?s) no início.
Captura de tela do painel de controle da declaração de resposta
Captura de tela do painel de controle da declaração de resposta

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a asserção deve ser aplicada ao conteúdo da variável nomeada
Sim
Campo a testar
Instrui o JMeter em qual campo da Solicitação ou Resposta deve ser testado.
  • Resposta de Texto - o texto de resposta do servidor, ou seja, o corpo, excluindo quaisquer cabeçalhos HTTP.
  • Dados do pedido - o texto do pedido enviado ao servidor, ou seja, o corpo, excluindo quaisquer cabeçalhos HTTP.
  • Código de resposta - por exemplo, 200
  • Mensagem de resposta - por exemplo, OK
  • Cabeçalhos de resposta , incluindo cabeçalhos Set-Cookie (se houver)
  • Solicitar cabeçalhos
  • URL amostrado
  • Documento (texto) - o texto extraído de vários tipos de documentos via Apache Tika (consulte a seção Exibir documento da árvore de resultados ).
Sim
Ignorar status
Instrui o JMeter a definir o status como sucesso inicialmente.

O sucesso geral da amostra é determinado pela combinação do resultado da asserção com o status de resposta existente. Quando a caixa de seleção Ignorar Status é selecionada, o status da Resposta é forçado a ser bem-sucedido antes de avaliar a Asserção.

As respostas HTTP com status nos intervalos 4xx e 5xx são normalmente consideradas malsucedidas. A caixa de seleção " Ignorar status " pode ser usada para definir o status bem-sucedido antes de realizar outras verificações. Observe que isso terá o efeito de limpar quaisquer falhas de asserção anteriores, portanto, certifique-se de que isso seja definido apenas na primeira asserção.
Sim
Regras de correspondência de padrões
Indica como o texto que está sendo testado é verificado em relação ao padrão.
  • Contém - verdadeiro se o texto contiver o padrão de expressão regular
  • Corresponde - verdadeiro se todo o texto corresponder ao padrão de expressão regular
  • Equals - true se todo o texto for igual à string padrão (diferencia maiúsculas de minúsculas)
  • Substring - true se o texto contiver a string padrão (diferencia maiúsculas de minúsculas)
Os padrões Equals e Substring são strings simples, não expressões regulares. NOT também pode ser selecionado para inverter o resultado da verificação. OU Aplique cada asserção na combinação OR (se 1 padrão para testar as correspondências, a Asserção estará correta) em vez de E (Todos os padrões devem corresponder para que a Asserção esteja OK).
Sim
Padrões para testar
Uma lista de padrões a serem testados. Cada padrão é testado separadamente. Se um padrão falhar, outros padrões não serão verificados. Não há diferença entre configurar uma Asserção com vários padrões e configurar várias Asserções com um padrão cada (supondo que as outras opções sejam as mesmas).
No entanto, quando a caixa de seleção Ignorar Status é selecionada, isso tem o efeito de cancelar quaisquer falhas de asserção anteriores - portanto, certifique-se de que a caixa de seleção Ignore Status seja usada apenas na primeira Asserção.
Sim
Mensagem de falha personalizada
Permite definir a mensagem de falha que substituirá a gerada
Não

O padrão é uma expressão regular no estilo Perl5, mas sem os colchetes.

Exemplos de Asserção
Figura 14 - Plano de Teste
Figura 14 - Plano de Teste
Figura 15 - Painel de Controle de Asserção com Padrão
Figura 15 - Painel de Controle de Asserção com Padrão
Figura 16 - Resultados do Ouvinte de Asserção (Aprovado)
Figura 16 - Resultados do Ouvinte de Asserção (Aprovado)
Figura 17 - Resultados do Ouvinte de Asserção (Falha)
Figura 17 - Resultados do Ouvinte de Asserção (Falha)
^

Declaração de duração

A Asserção de Duração testa se cada resposta foi recebida dentro de um determinado período de tempo. Qualquer resposta que demore mais do que o número de milissegundos (especificado pelo usuário) é marcada como uma resposta com falha.

Captura de tela do painel de controle da declaração de duração
Captura de tela do painel de controle da declaração de duração

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Duração em milissegundos
O número máximo de milissegundos que cada resposta é permitida antes de ser marcada como com falha.
Sim
^

Declaração de tamanho

A Asserção de Tamanho testa se cada resposta contém o número correto de bytes nela. Você pode especificar que o tamanho seja igual, maior que, menor que ou diferente de um determinado número de bytes.

Uma resposta vazia é tratada como sendo 0 bytes em vez de relatada como um erro.
Captura de tela do painel de controle da declaração de tamanho
Captura de tela do painel de controle da declaração de tamanho

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - a afirmação se aplica apenas à amostra principal
  • Apenas subamostras - a afirmação se aplica apenas às subamostras
  • Amostra principal e subamostras - a afirmação se aplica a ambas.
  • Nome da variável JMeter a ser usada - a asserção deve ser aplicada ao conteúdo da variável nomeada
Sim
Tamanho em bytes
O número de bytes a serem usados ​​no teste do tamanho da resposta (ou valor da variável JMeter).
Sim
Tipo de Comparação
Se deve testar se a resposta é igual, maior, menor ou diferente do número de bytes especificado.
Sim
^

Asserção XML¶

A Asserção XML testa se os dados de resposta consistem em um documento XML formalmente correto. Ele não valida o XML com base em um DTD ou esquema nem faz qualquer validação adicional.

Captura de tela do painel de controle da declaração XML
Captura de tela do painel de controle da declaração XML

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
^

Asserção do BeanShell

A Asserção do BeanShell permite que o usuário execute a verificação de asserção usando um script do BeanShell.

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell.

A migração para JSR223 Assertion +Groovy é altamente recomendada para desempenho, suporte de novos recursos Java e manutenção limitada da biblioteca BeanShell.

Observe que um intérprete diferente é usado para cada ocorrência independente da asserção em cada encadeamento em um script de teste, mas o mesmo intérprete é usado para invocações subsequentes. Isso significa que as variáveis ​​persistem nas chamadas para a asserção.

Todas as asserções são chamadas do mesmo thread que o amostrador.

Se a propriedade " beanshell.assertion.init " for definida, ela será passada para o Interpreter como o nome de um arquivo de origem. Isso pode ser usado para definir métodos e variáveis ​​comuns. Há um arquivo de inicialização de amostra no diretório bin : BeanShellAssertion.bshrc

O elemento de teste suporta os métodos ThreadListener e TestListener . Estes devem ser definidos no arquivo de inicialização. Consulte o arquivo BeanShellListeners.bshrc para obter definições de exemplo.

Captura de tela do painel de controle da declaração do BeanShell
Captura de tela do painel de controle da declaração do BeanShell

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore. O nome é armazenado na variável de script Label
Redefinir bsh.Interpreter antes de cada chamada
Se esta opção for selecionada, o interpretador será recriado para cada amostra. Isso pode ser necessário para alguns scripts de execução longa. Para obter mais informações, consulte Práticas recomendadas - scripts do BeanShell .
Sim
Parâmetros
Parâmetros a serem passados ​​para o script BeanShell. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • bsh.args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script BeanShell a ser executado. Isso substitui o script. O nome do arquivo é armazenado na variável de script FileName
Não
Roteiro
O script do BeanShell a ser executado. O valor de retorno é ignorado.
Sim (a menos que o arquivo de script seja fornecido)

Há um script de exemplo que você pode tentar.

Antes de chamar o script, algumas variáveis ​​são configuradas no interpretador BeanShell. Estas são strings, salvo indicação em contrário:

  • log - o objeto Logger . (por exemplo) log.warn("Message"[,Throwable])
  • SampleResult , anterior - o objeto SampleResult ; ler escrever
  • Resposta - o Objeto de resposta; ler escrever
  • Falha - booleano; ler escrever; usado para definir o status de Asserção
  • Mensagem de Falha - String; ler escrever; usado para definir a mensagem de Asserção
  • ResponseData - o corpo da resposta (byte [])
  • Código de resposta - por exemplo, 200
  • ResponseMessage - por exemplo, OK
  • ResponseHeaders - contém os cabeçalhos HTTP
  • RequestHeaders - contém os cabeçalhos HTTP enviados ao servidor
  • Rótulo de amostra
  • SamplerData - dados que foram enviados para o servidor
  • ctx - JMeterContext
  • vars - JMeterVariables - por exemplo
    vars.get("VAR1");
    vars.put("VAR2","valor");
    vars.putObject("OBJ1",new Object());
  • props - JMeterProperties (classe java.util.Properties ) - por exemplo
    props.get("START.HMS");
    props.put("PROP1","1234");

Os seguintes métodos do objeto Response podem ser úteis:

  • setStopThread(boolean)
  • setStopTest(boolean)
  • String getSampleLabel()
  • setSampleLabel(String)
^

Asserção MD5Hex

A Asserção MD5Hex permite que o usuário verifique o hash MD5 dos dados de resposta.

Captura de tela do painel de controle da declaração MD5Hex
Captura de tela do painel de controle da declaração MD5Hex

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Soma MD5
32 dígitos hexadecimais representando o hash MD5 (caso não significativo)
Sim
^

Asserção HTML¶

A Asserção HTML permite que o usuário verifique a sintaxe HTML dos dados de resposta usando JTidy.

Captura de tela do painel de controle da asserção HTML
Captura de tela do painel de controle da asserção HTML

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
tipo de documento
omitir , auto , estrito ou solto
Sim
Formato
HTML , XHTML ou XML
Sim
Apenas erros
Apenas tomar nota dos erros?
Sim
Limite de erro
Número de erros permitidos antes de classificar a resposta como falha
Sim
Limite de aviso
Número de avisos permitidos antes de classificar a resposta como falha
Sim
Nome do arquivo
Nome do arquivo no qual o relatório é escrito
Não
^

Asserção XPath

A Asserção XPath testa um documento quanto à boa formação, tem a opção de validar contra um DTD ou passar o documento por JTidy e testar um XPath. Se esse XPath existir, a Asserção será verdadeira. O uso de " / " corresponderá a qualquer documento bem formado e será a Expressão XPath padrão. A asserção também suporta expressões booleanas, como " count(//*error)=2 ". Consulte http://www.w3.org/TR/xpath para obter mais informações sobre XPath.

Algumas expressões de exemplo:
  • //title[text()='Text to match'] - corresponde <title>Text to match</title> em qualquer lugar na resposta
  • /title[text()='Text to match'] - corresponde <title>Text to match</title> no nível raiz na resposta
Captura de tela do painel de controle da declaração XPath
Captura de tela do painel de controle da declaração XPath

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Use Tidy (analisador tolerante)
Use Tidy, ou seja, seja tolerante a erros XML/HTML
Sim
Tranquilo
Define a bandeira Tidy Quiet
Se Arrumar for selecionado
Erros de relatório
Se ocorrer um erro de Tidy, defina a Asserção de acordo
Se Arrumar for selecionado
Mostrar avisos
Define a opção Tidy showWarnings
Se Arrumar for selecionado
Usar namespaces
Os namespaces devem ser respeitados? (veja nota abaixo em NAMESPACES)
Se Arrumado não estiver selecionado
Validar XML
Verifique o documento em relação ao seu esquema.
Se Arrumado não estiver selecionado
Ignorar espaço em branco
Ignore o espaço em branco do elemento.
Se Arrumado não estiver selecionado
Buscar DTDs Externos
Se selecionado, DTDs externos são buscados.
Se Arrumado não estiver selecionado
Declaração XPath
XPath para corresponder no documento.
Sim
Inverter afirmação (vai falhar se as condições acima forem atendidas)
True se uma expressão XPath não corresponder ou retornar false
Não
O analisador não tolerante pode ser bastante lento, pois pode precisar baixar o DTD etc.
NAMESPACES
Como solução para as limitações de namespace do analisador Xalan XPath (implementação na qual o JMeter é baseado), você precisa:
  • forneça um arquivo de propriedades (se, por exemplo, seu arquivo for nomeado namespaces.properties ) que contém mapeamentos para os prefixos de namespace:
    prefix1=http\://foo.apache.org
    prefix2=http\://toto.apache.org
    …
    
  • faça referência a este arquivo no arquivo user.properties usando a propriedade:
    xpath.namespace.config=namespaces.properties
^

Asserção XPath2

A Asserção XPath2 testa um documento quanto à boa formação. O uso de " / " corresponderá a qualquer documento bem formado e será a Expressão XPath2 padrão. A asserção também suporta expressões booleanas, como " count(//*error)=2 ".

Algumas expressões de exemplo:
  • //title[text()='Text to match'] - corresponde <title>Text to match</title> em qualquer lugar na resposta
  • /title[text()='Text to match'] - corresponde <title>Text to match</title> no nível raiz na resposta
Captura de tela do painel de controle da declaração XPath2
Captura de tela do painel de controle da declaração XPath2

Parâmetros

Atributo
Descrição
Requeridos
Lista de aliases de namespaces
Lista de aliases de namespaces que você deseja usar para analisar o documento, uma linha por declaração. Você deve especificá-los da seguinte forma: prefix=namespace . Essa implementação facilita o uso de namespaces do que com a versão XPathExtractor antiga.
Não
Declaração XPath2
XPath para corresponder no documento.
Sim
Inverter afirmação
Falhará se a expressão xpath retornar true ou corresponder, caso contrário terá sucesso
Não
Lista de aliases de namespace
Lista de aliases de namespace prefix=namespace completo (um por linha)
Não
^

Asserção do Esquema XML

A Asserção de Esquema XML permite que o usuário valide uma resposta em relação a um Esquema XML.

Captura de tela do painel de controle da declaração de esquema XML
Captura de tela do painel de controle da declaração de esquema XML

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Nome do arquivo
Especifique o nome do arquivo de esquema XML
Sim
^

Asserção JSR223

A Asserção JSR223 permite que o código de script JSR223 seja usado para verificar o status da amostra anterior.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Linguagem
A linguagem JSR223 a ser usada
Sim
Parâmetros
Parâmetros a serem passados ​​para o script. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script a ser executado, se um caminho de arquivo relativo for usado, ele será relativo ao diretório referenciado por " user.dir " Propriedade do sistema
Não
Cache de compilação de script
String exclusiva no plano de teste que o JMeter usará para armazenar em cache o resultado da compilação do script se a linguagem usada suportar a interface compilável (Groovy é uma delas, java, BeanShell e JavaScript não são)
Veja nota na propriedade JSR223 Sampler Java System se você estiver usando Groovy sem marcar esta opção
Não
Roteiro
O script a ser executado.
Sim (a menos que o arquivo de script seja fornecido)

As seguintes variáveis ​​são configuradas para uso pelo script:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • Rótulo - o Rótulo da String
  • Nome do arquivo - o nome do arquivo de script (se houver)
  • Parâmetros - os parâmetros (como uma String)
  • args - os parâmetros como um array String (dividido em espaço em branco)
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
    vars.getObject("OBJ2");
    
  • props - (JMeterProperties - class java.util.Properties ) - por exemplo
    props.get("START.HMS");
    props.put("PROP1","1234");
    
  • SampleResult , prev - ( SampleResult ) - dá acesso ao SampleResult anterior (se houver)
  • sampler - ( Sampler ) - dá acesso ao sampler atual
  • OUT - System.out - ex: OUT.println("message")
  • AssertionResult - ( AssertionResult ) - o resultado da asserção

O script pode verificar vários aspectos do SampleResult . Se um erro for detectado, o script deve usar AssertionResult.setFailureMessage("message") e AssertionResult.setFailure(true) .

Para mais detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, consulte o Javadoc

^

Comparar asserção

Compare Assertion não deve ser usado durante o teste de carga, pois consome muitos recursos (memória e CPU). Use-o apenas para testes funcionais ou durante a depuração e validação do plano de teste.
A Asserção Comparar pode ser usada para comparar resultados de amostra dentro de seu escopo. Tanto o conteúdo quanto o tempo decorrido podem ser comparados e o conteúdo pode ser filtrado antes da comparação. As comparações de asserção podem ser vistas no Visualizador de Asserção de Comparação .
Captura de tela do painel de controle da asserção de comparação
Captura de tela do painel de controle da declaração de comparação

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Comparar conteúdo
Se deve ou não comparar o conteúdo (dados de resposta)
Sim
Comparar tempo
Se o valor for ≥0, verifique se a diferença do tempo de resposta não é maior que o valor. Ou seja, se o valor for 0 , os tempos de resposta devem ser exatamente iguais.
Sim
Filtros de comparação
Os filtros podem ser usados ​​para remover strings da comparação de conteúdo. Por exemplo, se a página tiver um carimbo de data/hora, ela poderá ser correspondida com: " Hora: \d\d:\d\d:\d\d " e substituída por uma hora fixa fictícia " Hora: HH:MM: SS ".
Não
^

Asserção SMIME

A Asserção SMIME pode ser usada para avaliar os resultados de amostra do Mail Reader Sampler. Esta asserção verifica se o corpo de uma mensagem mime está assinado ou não. A assinatura também pode ser verificada em relação a um certificado de assinante específico. Como esta é uma funcionalidade que não é necessariamente necessária para a maioria dos usuários, jars adicionais precisam ser baixados e adicionados ao JMETER_HOME/lib :
  • bcmail-xxx.jar (BouncyCastle SMIME/CMS)
  • bcprov-xxx.jar (Provedor BouncyCastle)
Estes precisam ser baixados do BouncyCastle.

Se estiver usando o Mail Reader Sampler , certifique-se de selecionar " Armazenar a mensagem usando MIME (raw) " caso contrário a Asserção não poderá processar a mensagem corretamente.

Captura de tela do painel de controle da declaração SMIME
Captura de tela do painel de controle da declaração SMIME

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Verificar assinatura
Se selecionada, a asserção verificará se é uma assinatura válida de acordo com os parâmetros definidos na caixa Certificado do Assinante .
Sim
Mensagem não assinada
Se deve ou não esperar uma assinatura na mensagem
Sim
Certificado de signatário
" No Check " significa que não realizará verificação de assinatura. " Verificar valores " é usado para verificar a assinatura em relação às entradas fornecidas. E " Arquivo de certificado " realizará a verificação em relação a um arquivo de certificado específico.
Sim
Posição da mensagem
O amostrador de correio pode recuperar várias mensagens em uma única amostra. Use este campo para especificar qual mensagem será verificada. As mensagens são numeradas de 0 , então 0 significa a primeira mensagem. Números negativos contam a partir da ÚLTIMA mensagem; -1 significa ÚLTIMO, -2 significa penúltimo etc.
Sim
^

Asserção JSON

Este componente permite realizar validações de documentos JSON. Primeiro, ele analisará o JSON e falhará se os dados não forem JSON. Segundo, ele procurará o caminho especificado, usando a sintaxe do Jayway JsonPath 1.2.0 . Se o caminho não for encontrado, ele falhará. Terceiro, se o caminho JSON foi encontrado no documento e a validação em relação ao valor esperado foi solicitada, ele executará a validação. Para o valor nulo , há uma caixa de seleção especial na GUI. Observe que, se o caminho retornar o objeto array, ele será iterado e, se o valor esperado for encontrado, a asserção será bem-sucedida. Para validar array vazio use []corda. Além disso, se o patch retornar o objeto de dicionário, ele será convertido em string antes da comparação.

Captura de tela do painel de controle da declaração JSON
Captura de tela do painel de controle da declaração JSON

Parâmetros

Atributo
Descrição
Requeridos
O caminho JSON de declaração existe
Caminho para o elemento JSON para assert.
Sim
Além disso, declare o valor
Marque a caixa de seleção se quiser fazer assert com algum valor
Não
Corresponder como expressão regular
Marque a caixa de seleção se quiser usar a expressão regular
Não
Valor esperado
Valor para assert ou expressão regular para correspondência
Não
Esperar nulo
Marque a caixa de seleção se você espera nulo
Não
Inverter asserção (falhará se as condições acima forem atendidas)
Inverter asserção (falhará se as condições acima forem atendidas)
Não
^

Asserção JSON JMESPath

Este componente permite que você execute asserções no conteúdo de documentos JSON usando JMESPath . Primeiro, ele analisará o JSON e falhará se os dados não forem JSON.
Segundo, ele procurará o caminho especificado, usando a sintaxe JMESPath.
Se o caminho não for encontrado, ele falhará.
Terceiro, se o caminho JMES foi encontrado no documento e a validação em relação ao valor esperado foi solicitada, ele realizará essa verificação adicional. Se você quiser verificar a nulidade, use a caixa de seleção Esperar nulo .
Observe que o caminho não pode ser nulo, pois a expressão JMESPath não será compilada e ocorrerá um erro. Mesmo que você espere uma resposta vazia ou nula, você deve colocar uma expressão JMESPath válida.

Captura de tela do painel de controle da declaração JSON JMESPath
Captura de tela do painel de controle da declaração JSON JMESPath

Parâmetros

Atributo
Descrição
Requeridos
Afirmar que JMESPath existe
Verifique se o elemento JMESPath para JSON existe
Sim
Além disso, declare o valor
Marque a caixa de seleção se você verificar o JMESPath extraído em relação a um esperado
Não
Corresponder como expressão regular
Marque a caixa de seleção se desejar usar uma expressão regular para correspondência
Não
Valor esperado
Valor a ser usado para correspondência exata ou expressão regular se Corresponder como expressão regular estiver marcado
Não
Esperar nulo
Marque a caixa de seleção se você espera que o valor seja nulo
Não
Inverter asserção (falhará se as condições acima forem atendidas)
Inverter asserção (falhará se as condições acima forem atendidas)
Não
^
^

18.6 Temporizadores

Desde a versão 3.1, foi implementado um novo recurso (no modo Beta a partir do JMeter 3.1 e sujeito a alterações) que fornece o seguinte recurso.
Você pode aplicar um fator de multiplicação nos atrasos do sono calculados pelo temporizador aleatório definindo a propriedade timer.factor=float number onde float number é um número decimal positivo.
O JMeter multiplicará esse fator pelo atraso de suspensão calculado. Este recurso pode ser usado por:
Observe que os temporizadores são processados ​​antes de cada amostrador no escopo em que são encontrados; se houver vários temporizadores no mesmo escopo, todos os temporizadores serão processados ​​antes de cada amostrador.
Os temporizadores são processados ​​apenas em conjunto com um amostrador. Um temporizador que não esteja no mesmo escopo de um amostrador não será processado.
Para aplicar um cronômetro a um único amostrador, adicione o cronômetro como um elemento filho do amostrador. O temporizador será aplicado antes que o amostrador seja executado. Para aplicar um cronômetro após um amostrador, adicione-o ao próximo amostrador ou adicione-o como filho de um amostrador de ação de controle de fluxo .

Temporizador Constante

Se você quiser que cada thread pause pelo mesmo tempo entre as solicitações, use este cronômetro.

Captura de tela do painel de controle do temporizador constante
Captura de tela do painel de controle do temporizador constante

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore.
Não
Atraso da linha
Número de milissegundos para pausar.
Sim
^

Temporizador Aleatório Gaussiano

Esse cronômetro pausa cada solicitação de encadeamento por um período de tempo aleatório, com a maioria dos intervalos de tempo ocorrendo perto de um valor específico. O atraso total é a soma do valor distribuído gaussiano (com média 0,0 e desvio padrão 1,0 ) vezes o valor do desvio especificado e o valor do deslocamento. Outra maneira de explicá-lo, no Gaussian Random Timer, a variação em torno do deslocamento constante tem uma distribuição de curva gaussiana.

Captura de tela do painel de controle do temporizador aleatório gaussiano
Captura de tela do painel de controle do temporizador aleatório gaussiano

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore
Não
Desvio
Desvio em milissegundos.
Sim
Compensação de Atraso Constante
Número de milissegundos para pausar além do atraso aleatório.
Sim
^

Temporizador Aleatório Uniforme

Esse temporizador pausa cada solicitação de encadeamento por um período de tempo aleatório, com cada intervalo de tempo tendo a mesma probabilidade de ocorrer. O atraso total é a soma do valor aleatório e o valor de compensação.

Captura de tela do painel de controle do temporizador aleatório uniforme
Captura de tela do painel de controle do temporizador aleatório uniforme

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore.
Não
Máximo de atraso aleatório
Número aleatório máximo de milissegundos para pausar.
Sim
Compensação de Atraso Constante
Número de milissegundos para pausar além do atraso aleatório.
Sim
^

Temporizador de taxa de transferência constante

Este temporizador introduz pausas variáveis, calculadas para manter o rendimento total (em termos de amostras por minuto) o mais próximo possível de um dado valor. É claro que a taxa de transferência será menor se o servidor não for capaz de lidar com isso, ou se outros temporizadores ou elementos de teste demorados o impedirem.

NB embora o Timer seja chamado de Constant Throughput timer, o valor do throughput não precisa ser constante. Ele pode ser definido em termos de uma variável ou chamada de função, e o valor pode ser alterado durante um teste. O valor pode ser alterado de várias maneiras:

  • usando uma variável de contador
  • usando uma função __jexl3 , __groovy para fornecer um valor variável
  • usando o servidor BeanShell remoto para alterar uma propriedade JMeter

Consulte Práticas recomendadas para obter mais detalhes.

Observe que o valor da taxa de transferência não deve ser alterado com muita frequência durante um teste - levará um tempo para que o novo valor entre em vigor.

Captura de tela do painel de controle do temporizador de taxa de transferência constante
Captura de tela do painel de controle do temporizador de taxa de transferência constante

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore.
Não
Taxa de transferência desejada
Taxa de transferência que queremos que o cronômetro tente gerar.
Sim
Calcular a taxa de transferência com base em
  • somente este thread - cada thread tentará manter a taxa de transferência de destino. A taxa de transferência geral será proporcional ao número de threads ativos.
  • todos os encadeamentos ativos no grupo de encadeamentos atual - a taxa de transferência de destino é dividida entre todos os encadeamentos ativos no grupo. Cada encadeamento atrasará conforme necessário, com base em quando foi executado pela última vez.
  • todos os encadeamentos ativos - a taxa de transferência de destino é dividida entre todos os encadeamentos ativos em todos os grupos de encadeamentos. Cada encadeamento atrasará conforme necessário, com base em quando foi executado pela última vez. Nesse caso, cada outro grupo de threads precisará de um temporizador de taxa de transferência constante com as mesmas configurações.
  • todos os encadeamentos ativos no grupo de encadeamentos atual (compartilhado) - como acima, mas cada encadeamento é atrasado com base em quando qualquer encadeamento no grupo foi executado pela última vez.
  • todos os threads ativos (compartilhados) - como acima; cada encadeamento é atrasado com base em quando qualquer encadeamento foi executado pela última vez.
Sim

Os algoritmos compartilhados e não compartilhados visam gerar a taxa de transferência desejada e produzirão resultados semelhantes.
O algoritmo compartilhado deve gerar uma taxa de transação geral mais precisa.
O algoritmo não compartilhado deve gerar uma distribuição mais uniforme das transações entre os encadeamentos.

^

Temporizador de taxa de transferência preciso

Este temporizador introduz pausas variáveis, calculadas para manter o rendimento total (por exemplo, em termos de amostras por minuto) o mais próximo possível de um dado valor. É claro que a taxa de transferência será menor se o servidor não for capaz de lidar com isso, ou se outros temporizadores, ou se não houver threads suficientes ou elementos de teste demorados o impedirem.

Embora o Timer seja chamado de Precise Throughput Timer, ele não visa produzir precisamente o mesmo número de amostras em intervalos de um segundo durante o teste.

O cronômetro funciona melhor para taxas abaixo de 36.000 solicitações/hora, no entanto, sua milhagem pode variar (consulte a seção de monitoramento abaixo se suas metas forem muito diferentes).

Melhor localização de um temporizador de throughput preciso em um plano de teste

Como você deve saber, os temporizadores são herdados por todos os irmãos e seus elementos filhos. É por isso que um dos melhores lugares para o Precise Throughput Timer está sob o primeiro elemento em um loop de teste. Por exemplo, você pode adicionar um amostrador fictício no início e colocar o cronômetro sob esse amostrador fictício

Cronograma produzido

Precise Throughput Timer modela a programação de chegadas de Poisson . Essa programação geralmente acontece na vida real, então faz sentido usá-la para testes de carga. Por exemplo, ele naturalmente pode gerar amostras próximas, portanto, pode revelar problemas de simultaneidade. Mesmo se você conseguir gerar chegadas de Poisson com Poisson Random Timer , ele seria suscetível aos problemas listados abaixo. Por exemplo, as verdadeiras chegadas de Poisson podem ter uma pausa indefinidamente longa, e isso não é prático para testes de carga. Por exemplo, chegadas "regulares" de Poisson com taxa de 1 por segundo podem terminar com 50 amostras em um teste de 60 segundos.

Constant Throughput Timer converge para a taxa especificada, mas tende a produzir amostras em intervalos regulares.

Ramp-up e pico de inicialização

Você pode usar "ramp-up" ou abordagens semelhantes para evitar um pico no início do teste. Por exemplo, se você configurar o Thread Group para ter 100 threads e definir o Ramp-up Period para 0 (ou para um número pequeno), todos os threads iniciarão ao mesmo tempo e isso produzirá um pico indesejado de carga . Além disso, se você definir o Período de Aceleração muito alto, poderá resultar em " muito poucos " threads disponíveis no início para atingir a carga necessária.

O Precise Throughput Timer agenda as execuções de forma aleatória, para que possa ser usado para gerar carga constante, e é recomendável definir o Ramp-up Period e o Delay para 0 .

Vários grupos de threads iniciando ao mesmo tempo

Uma variação do problema de Ramp-up pode aparecer quando o Plano de Teste inclui vários Thread Groups . Para mitigar esse problema, normalmente adiciona-se um atraso "aleatório" a cada grupo de threads para que os threads iniciem em momentos diferentes.

O Precise Throughput Timer evita esse problema, pois agenda as execuções de maneira aleatória. Você não precisa adicionar atrasos aleatórios extras para mitigar o pico de inicialização

Número de iterações por hora

Um dos requisitos básicos é emitir N amostras por M minutos. Seja 60 iterações por hora. Os clientes empresariais não entenderiam se você relatasse os resultados do teste de carga com 57 execuções "só porque o aleatório era aleatório". Para gerar 60 iterações por hora, você precisa configurar da seguinte forma (outros parâmetros podem ser deixados com seus valores padrão)

  • Taxa de transferência de destino (amostras) : 60
  • Período de transferência (segundos) : 3600
  • Duração do teste (segundos) : 3600

As duas primeiras opções definem a taxa de transferência. Embora 60/3600, 30/1800 e 120/7200 representem exatamente o mesmo nível de carga, escolha aquele que melhor representa os requisitos de negócios. Por exemplo, se o requisito for testar "60 amostras por hora", defina 60/3600. Se o requisito for testar "1 amostra por minuto", defina 1/60.

A duração do teste (segundos) existe para que o cronômetro garanta o número exato de amostras para uma determinada duração do teste. O Temporizador de taxa de transferência precisa cria uma programação para as amostras na inicialização do teste. Por exemplo, se você deseja realizar um teste de 5 minutos com taxa de transferência de 60 por hora, você deve definir a duração do teste (segundos) para 300. Isso permite configurar a taxa de transferência de maneira amigável aos negócios. Nota: A duração do teste (segundos) não limita a duração do teste. É apenas uma dica para o temporizador.

Número de threads e tempos de pensamento

Uma das armadilhas comuns é ajustar o número de threads e os tempos de reflexão para obter a taxa de transferência desejada. Mesmo que possa funcionar, essa abordagem resulta em muito tempo gasto nas execuções de teste. Pode ser necessário ajustar os encadeamentos e atrasos novamente quando a nova versão do aplicativo chegar.

O Temporizador de taxa de transferência preciso permite definir a meta de taxa de transferência e seguir em frente, independentemente do desempenho do aplicativo. Para fazer isso, o Precise Throughput Timer cria um agendamento na inicialização do teste e, em seguida, usa esse agendamento para liberar os encadeamentos. O principal fator para os tempos de reflexão e o número de threads devem ser os requisitos de negócios, não o desejo de combinar a taxa de transferência de alguma forma.

Por exemplo, se seu aplicativo for usado por engenheiros de suporte em um call center. Suponha que haja 2 engenheiros na central de atendimento e a taxa de transferência desejada seja 1 por minuto. Suponha que demore 4 minutos para o engenheiro ler e revisar a página da web. Para esse caso, você deve definir 2 threads no grupo, usar 4 minutos para pensar atrasos e especificar 1 por minuto em Temporizador de taxa de transferência preciso . Claro que isso resultaria em algo em torno de 2 amostras/4 minutos = 0,5 por minuto e o resultado de tal teste significa "você precisa de mais engenheiros de suporte em um call center" ou "você precisa reduzir o tempo que um engenheiro leva para cumprir uma tarefa ".

Testando taxas baixas e testes repetíveis

Testar em taxas baixas (por exemplo, 60 por hora) requer conhecer o perfil de teste desejado. Por exemplo, se você precisar injetar carga em intervalos uniformes (por exemplo, 60 segundos entre eles), é melhor usar Constant Throughput Timer . No entanto, se você precisar ter uma programação aleatória (por exemplo, para modelar usuários reais que executam relatórios), o Temporizador de taxa de transferência preciso é seu amigo.

Ao comparar os resultados de vários testes de carga, é útil poder repetir exatamente o mesmo perfil de teste. Por exemplo, se a ação X (por exemplo, "Relatório de lucro") for chamada após 5 minutos do início do teste, seria bom replicar esse padrão para execuções de teste subsequentes. Replicar o mesmo padrão de carga simplifica a análise dos resultados do teste (por exemplo, gráfico de% da CPU).

A semente aleatória (mudança de 0 para aleatório) permite controlar o valor da semente que é usado pelo Temporizador de taxa de transferência preciso . Por padrão, é inicializado com 0 e isso significa que a semente aleatória é usada para cada execução de teste. Se você precisar ter um padrão de carregamento repetível, altere a semente aleatória para algum valor aleatório. O conselho geral é usar semente diferente de zero e "0 por padrão" é um limite de implementação.

Observação: ao usar vários grupos de encadeamentos com as mesmas taxas de transferência e a mesma semente diferente de zero, isso pode resultar no disparo indesejado das amostras ao mesmo tempo.

Testando altas taxas e/ou longas durações de teste

O Temporizador de throughput preciso gera o agendamento e o mantém na memória. Na maioria dos casos, isso não deve ser um problema, no entanto, lembre-se de que você pode querer manter a programação menor que 1.000.000 amostras. Demora cerca de 200 ms para gerar um agendamento para 1.000.000 amostras e o agendamento consome 8 megabytes no heap. A programação para 10 milhões de entradas leva de 1 a 2 segundos para ser construída e consome 80 megabytes no heap.

Por exemplo, se você deseja realizar um teste de 2 semanas com uma taxa de 5.000 por hora, provavelmente deseja ter exatamente 5.000 amostras para cada hora. Você pode definir a propriedade Duração do teste (segundos) do cronômetro do cronômetro para 1 hora. Em seguida, o cronômetro criaria um agendamento de 5.000 amostras para uma hora e, quando o agendamento se esgotasse, o cronômetro geraria um agendamento para a próxima hora.

Ao mesmo tempo, você pode definir a duração do teste (segundos) para 2 semanas, e o cronômetro geraria uma programação com 168.000 amostras = 2 semanas * 5.000 amostras/hora = 2*7*24*500 . O agendamento levaria ~30ms para ser gerado e consumiria um pouco mais de 1 megabyte.

Carga em rajada

Pode haver um caso em que todas as amostras devem vir em pares, triplos, etc. Certos casos podem ser resolvidos via Synchronizing Timer , porém o Precise Throughput Timer possui uma maneira nativa de emitir solicitações em pacotes. Esse comportamento está desabilitado por padrão e é controlado com as configurações de "Saídas em lote"

  • Número de threads no lote (threads) . Especifica o número de amostras em um lote. Observe que o número total de amostras ainda estará alinhado com a taxa de transferência desejada
  • Atraso entre threads no lote (ms) . Por exemplo, se definido como 42 e o tamanho do lote for 3, os encadeamentos partirão em x, x+42ms, x+84ms

Taxa de carga variável

Embora os valores de propriedade (por exemplo, throughput) possam ser definidos por meio de expressões, é recomendável manter o valor mais ou menos o mesmo durante o teste, pois leva tempo para recalcular o novo agendamento para adaptar os novos valores.

Monitoramento

À medida que a próxima programação é gerada, o Temporizador de taxa de transferência precisa registra uma mensagem em jmeter.log : 2018-01-04 17:34:03,635 INFO oajtConstantPoissonProcessGenerator: Gerado 21 tempos (... 20 necessários, taxa 1,0, duração 20, limite exato 20000, i21) em 0 ms. First 15 events will be fired at: 1.1869653574244292 (+1.1869653574244292), 1.4691340403043207 (+0.2821686828798915), 3.638151706179226 (+2.169017665874905), 3.836357090410566 (+0.19820538423134026), 4.709330071408575 (+0.8729729809980085), 5.61330076999953 (+0.903970698590955), ... Isso mostra que a geração de agendamento levou 0ms e mostra registros de data e hora absolutos em segundos. No caso acima, a taxa foi definida como 1 por segundo, e os timestamps reais se tornaram 1,2 segundos, 1,5 segundos, 3,6 segundos, 3,8 segundos, 4,7 segundos e assim por diante.

Captura de tela do painel de controle do temporizador de taxa de transferência preciso
Captura de tela do painel de controle do temporizador de taxa de transferência preciso

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore
Não
Taxa de transferência de destino (em amostras por 'período de taxa de transferência')
Número máximo de amostras que você deseja obter por "período de rendimento", incluindo todos os encadeamentos no grupo, de todos os amostradores afetados.
Sim
Período de transferência (segundos)
Período de rendimento. Por exemplo, se "taxa de transferência" estiver definida como 42 e "período de taxa de transferência" como 21 segundos, você obterá 2 amostras por segundo.
Sim
Duração do teste (segundos)
Isso é usado para garantir que você obtenha amostras de taxa de transferência*duração durante o período de tempo de "duração do teste".
Sim
Número de threads no lote (threads)
Se o valor exceder 1, vários threads partirão do temporizador simultaneamente. A taxa de transferência média ainda atende ao valor de "taxa de transferência".
Sim
Atraso entre threads no lote (ms)
Por exemplo, se definido como 42 e o tamanho do lote for 3, os encadeamentos partirão em x, x+42ms, x+84ms.
Sim
Semente aleatória (mude de 0 para aleatório)
Nota: temporizadores diferentes devem ter valores de semente diferentes. A semente constante garante que o temporizador gere os mesmos atrasos a cada início de teste. O valor de "0" significa que o temporizador é verdadeiramente aleatório (não repetível de uma execução para outra).
Sim
^

Sincronizando Temporizador

O objetivo do SyncTimer é bloquear threads até que um número X de threads tenha sido bloqueado e, em seguida, todos sejam liberados de uma só vez. Um SyncTimer pode, assim, criar grandes cargas instantâneas em vários pontos do plano de teste.

Captura de tela do painel de controle do temporizador de sincronização
Captura de tela do painel de controle do temporizador de sincronização

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore.
Não
Número de usuários simultâneos para agrupar por
Número de threads a serem liberados de uma só vez. Defini-lo como 0 é equivalente a defini-lo como Número de encadeamentos no Grupo de encadeamentos.
Sim
Tempo limite em milissegundos
Se definido como 0 , o Timer aguardará que o número de threads atinja o valor em " Número de usuários simultâneos ao grupo ". Se for superior a 0 , o cronômetro aguardará no máximo " Timeout em milissegundos " pelo número de Threads. Se após o intervalo de tempo limite o número de usuários em espera não for atingido, o cronômetro parará de esperar. Padrões para 0
Não
Se o tempo limite em milissegundos for definido como 0 e o número de threads nunca atingir " Número de usuários simultâneos para agrupar por ", o teste fará uma pausa infinita. Apenas uma parada forçada irá pará-lo. Definir o tempo limite em milissegundos é uma opção a ser considerada neste caso.
A sincronização do temporizador bloqueia apenas dentro de uma JVM, portanto, se estiver usando o teste distribuído, certifique-se de nunca definir " Número de usuários simultâneos para agrupar por " com um valor superior ao número de usuários do seu grupo de threads, considerando apenas 1 injetor.
^

Temporizador BeanShell

O BeanShell Timer pode ser usado para gerar um atraso.

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell.

A migração para JSR223 Timer +Groovy é altamente recomendada para desempenho, suporte a novos recursos Java e manutenção limitada da biblioteca BeanShell.

O elemento de teste suporta os métodos ThreadListener e TestListener . Estes devem ser definidos no arquivo de inicialização. Consulte o arquivo BeanShellListeners.bshrc para obter definições de exemplo.

Captura de tela do painel de controle do BeanShell Timer
Captura de tela do painel de controle do BeanShell Timer

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore. O nome é armazenado na variável de script Label
Não
Redefinir bsh.Interpreter antes de cada chamada
Se esta opção for selecionada, o interpretador será recriado para cada amostra. Isso pode ser necessário para alguns scripts de execução longa. Para obter mais informações, consulte Práticas recomendadas - scripts do BeanShell .
Sim
Parâmetros
Parâmetros a serem passados ​​para o script BeanShell. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • bsh.args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script BeanShell a ser executado. O nome do arquivo é armazenado na variável de script FileName O valor de retorno é usado como o número de milissegundos de espera.
Não
Roteiro
O script BeanShell. O valor de retorno é usado como o número de milissegundos de espera.
Sim (a menos que o arquivo de script seja fornecido)

Antes de invocar o script, algumas variáveis ​​são configuradas no interpretador BeanShell:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
    
  • props - (JMeterProperties - classe java.util.Properties) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - dá acesso ao SampleResult anterior (se houver)

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

Se a propriedade beanshell.timer.init estiver definida, ela é usada para carregar um arquivo de inicialização, que pode ser usado para definir métodos etc. para uso no script BeanShell.

^

Temporizador JSR223

O temporizador JSR223 pode ser usado para gerar um atraso usando uma linguagem de script JSR223,

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
ScriptLanguage
A linguagem de script a ser usada.
Sim
Parâmetros
Parâmetros a serem passados ​​para o script. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script a ser executado, se um caminho de arquivo relativo for usado, ele será relativo ao diretório referenciado por " user.dir " Propriedade do sistema O valor de retorno é convertido em um inteiro longo e usado como o número de milissegundos a aguardar .
Não
Cache de compilação de script
String exclusiva no plano de teste que o JMeter usará para armazenar em cache o resultado da compilação do script se a linguagem usada suportar a interface compilável (Groovy é uma delas, java, beanshell e javascript não são)
Veja nota na propriedade JSR223 Sampler Java System se você estiver usando Groovy sem marcar esta opção
Não
Roteiro
O roteiro. O valor de retorno é usado como o número de milissegundos de espera.
Sim (a menos que o arquivo de script seja fornecido)

Antes de chamar o script, algumas variáveis ​​são configuradas no interpretador de script:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - classe java.util.Properties) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler ) - o Sampler atual
  • Label - o nome do Timer
  • FileName - o nome do arquivo (se houver)
  • OUT - System.out

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

^

Temporizador Aleatório Poisson

Esse cronômetro pausa cada solicitação de encadeamento por um período de tempo aleatório, com a maioria dos intervalos de tempo ocorrendo perto de um valor específico. O atraso total é a soma do valor distribuído de Poisson e o valor de deslocamento.

Observação: se você quiser modelar as chegadas de Poisson, considere usar o Temporizador de taxa de transferência preciso .

Captura de tela do painel de controle do temporizador aleatório Poisson
Captura de tela do painel de controle do temporizador aleatório Poisson

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore
Não
Lambda
Valor lambda em milissegundos.
Sim
Compensação de Atraso Constante
Número de milissegundos para pausar além do atraso aleatório.
Sim
^
^

18.7 Pré Processadores


Os pré-processadores são usados ​​para modificar os Samplers em seu escopo.

Este modificador analisa a resposta HTML do servidor e extrai links e formulários. Uma amostra de teste de URL que passa por esse modificador será examinada para ver se "corresponde" a algum dos links ou formulários extraídos da resposta imediatamente anterior. Em seguida, ele substituiria os valores na amostra de teste de URL pelos valores apropriados do link ou formulário correspondente. Expressões regulares do tipo Perl são usadas para encontrar correspondências.

Captura de tela para o painel de controle do HTML Link Parser
Captura de tela do painel de controle do HTML Link Parser
As correspondências são realizadas usando nomes de protocolo , host , caminho e parâmetro . O amostrador de destino não pode conter parâmetros que não estejam nos links de resposta.
Se estiver usando testes distribuídos, certifique-se de alternar o modo (consulte jmeter.properties ) para que não seja um de remoção, consulte o Bug 56376
Exemplo de Spidering¶

Considere um exemplo simples: digamos que você queira que o JMeter "spider" pelo seu site, acessando link após link analisado do HTML retornado do seu servidor (isso não é realmente a coisa mais útil a fazer, mas serve como um bom exemplo) . Você criaria um Controlador Simples e adicionaria o "HTML Link Parser" a ele. Em seguida, crie uma solicitação HTTP e defina o domínio como " .* " e o caminho da mesma forma. Isso fará com que sua amostra de teste corresponda a qualquer link encontrado nas páginas retornadas. Se você quiser restringir o spidering a um domínio específico, altere o valor do domínio para o desejado. Então, apenas links para esse domínio serão seguidos.

Exemplo de enquete

Um exemplo mais útil: dado um aplicativo de pesquisa da Web, você pode ter uma página com várias opções de pesquisa como botões de opção para o usuário selecionar. Digamos que os valores das opções de pesquisa sejam muito dinâmicos - talvez gerados pelo usuário. Se você quisesse que o JMeter testasse a pesquisa, você poderia criar amostras de teste com valores codificados escolhidos ou deixar o HTML Link Parser analisar o formulário e inserir uma opção de pesquisa aleatória em sua amostra de teste de URL. Para fazer isso, siga o exemplo acima, exceto que, ao configurar as opções de URL do seu controlador de teste da Web, certifique-se de escolher " POST " como o método. Insira valores codificados para o domínio , caminho e quaisquer parâmetros de formulário adicionais. Então, para o parâmetro do botão de rádio real, coloque o nome (digamos que'poll_choice ") e depois " .* " para o valor desse parâmetro. Quando o modificador examina este exemplo de teste de URL, ele descobrirá que ele "corresponde" ao formulário de pesquisa (e não deve corresponder a nenhum outro formulário, dado que você especificou todos os outros aspectos do exemplo de teste de URL) e ele substituirá os parâmetros do formulário pelos parâmetros correspondentes do formulário. Como a expressão regular " .* " corresponderá a qualquer coisa, o modificador provavelmente terá uma lista de botões de opção para escolher. Ele escolherá aleatoriamente e substituirá o valor em sua amostra de teste de URL. A cada teste, um novo valor aleatório será escolhido.

Figura 18 - Exemplo de enquete online
Figura 18 - Exemplo de enquete online
Uma coisa importante a lembrar é que você deve criar uma amostra de teste imediatamente antes que retornará uma página HTML com os links e formulários relevantes para sua amostra de teste dinâmica.
^

Modificador de reescrita de URL HTTP

Este modificador funciona de forma semelhante ao HTML Link Parser, exceto que tem um propósito específico para o qual é mais fácil de usar do que o HTML Link Parser e mais eficiente. Para aplicativos da Web que usam a regravação de URL para armazenar ids de sessão em vez de cookies, esse elemento pode ser anexado no nível ThreadGroup, muito parecido com o HTTP Cookie Manager . Basta dar a ele o nome do parâmetro de ID de sessão e ele o encontrará na página e adicionará o argumento a cada solicitação desse ThreadGroup.

Como alternativa, esse modificador pode ser anexado a solicitações selecionadas e modificará apenas elas. Usuários inteligentes irão até mesmo determinar que este modificador pode ser usado para obter valores que iludem o HTML Link Parser .

Captura de tela para o painel de controle do modificador de regravação de URL HTTP
Captura de tela do painel de controle do modificador de regravação de URL HTTP

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo dado a este elemento na árvore de teste.
Não
Nome do argumento da sessão
O nome do parâmetro a ser obtido da resposta anterior. Este modificador encontrará o parâmetro em qualquer lugar na página e pegará o valor atribuído a ele, seja em um HREF ou em um formulário.
Sim
Extensão de caminho
Alguns aplicativos da Web reescrevem URLs anexando um ponto e vírgula mais o parâmetro de ID de sessão. Marque esta caixa se for assim.
Não
Não use equals na extensão do caminho
Alguns aplicativos da web reescrevem URLs sem usar um sinal " = " entre o nome e o valor do parâmetro (como Intershop Enfinity).
Não
Não use ponto de interrogação na extensão do caminho
Evita que a string de consulta termine na extensão do caminho (como Intershop Enfinity).
Não
ID da sessão de cache?
O valor do ID da sessão deve ser salvo para uso posterior quando o ID da sessão não estiver presente?
Sim
Codificação de URL
Valor de codificação de URL ao escrever o parâmetro
Não
Se estiver usando testes distribuídos, certifique-se de alternar o modo (consulte jmeter.properties ) para que não seja um de remoção, consulte Bug 56376 .
^

Parâmetros do usuário

Permite que o usuário especifique valores para variáveis ​​de usuário específicas para threads individuais.

As Variáveis ​​do Usuário também podem ser especificadas no Plano de Teste, mas não específicas para encadeamentos individuais. Este painel permite especificar uma série de valores para qualquer variável de usuário. Para cada thread, será atribuído à variável um dos valores da série em sequência. Se houver mais threads do que valores, os valores serão reutilizados. Por exemplo, isso pode ser usado para atribuir um ID de usuário distinto a ser usado por cada thread. As variáveis ​​do usuário podem ser referenciadas em qualquer campo de qualquer componente JMeter.

A variável é especificada clicando no botão Adicionar variável na parte inferior do painel e preenchendo o nome da variável na coluna ' Nome: '. Para adicionar um novo valor à série, clique no botão ' Adicionar usuário ' e preencha o valor desejado na coluna recém-adicionada.

Os valores podem ser acessados ​​em qualquer componente de teste no mesmo grupo de threads, usando a sintaxe da função : ${variable} .

Consulte também o elemento CSV Data Set Config , que é mais adequado para um grande número de parâmetros

Captura de tela do painel de controle dos parâmetros do usuário
Captura de tela do painel de controle de parâmetros do usuário

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Atualizar uma vez por iteração
Um sinalizador para indicar se o elemento Parâmetros do usuário deve atualizar suas variáveis ​​apenas uma vez por iteração. se você incorporar funções no UP, poderá precisar de maior controle sobre a frequência com que os valores das variáveis ​​são atualizados. Mantenha esta caixa marcada para garantir que os valores sejam atualizados a cada vez por meio do controlador pai do UP. Desmarque a caixa e o UP atualizará os parâmetros para cada solicitação de amostra feita dentro de seu escopo .
Sim
^

Pré-processador BeanShell

O BeanShell PreProcessor permite que código arbitrário seja aplicado antes de obter uma amostra.

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell.

A migração para JSR223 PreProcessor +Groovy é altamente recomendada para desempenho, suporte a novos recursos Java e manutenção limitada da biblioteca BeanShell.

O elemento de teste suporta os métodos ThreadListener e TestListener . Estes devem ser definidos no arquivo de inicialização. Consulte o arquivo BeanShellListeners.bshrc para obter definições de exemplo.

Captura de tela do painel de controle do BeanShell PreProcessor
Captura de tela do painel de controle do BeanShell PreProcessor

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore. O nome é armazenado na variável de script Label
Não
Redefinir bsh.Interpreter antes de cada chamada
Se esta opção for selecionada, o interpretador será recriado para cada amostra. Isso pode ser necessário para alguns scripts de execução longa. Para obter mais informações, consulte Práticas recomendadas - scripts do BeanShell .
Sim
Parâmetros
Parâmetros a serem passados ​​para o script BeanShell. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • bsh.args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script BeanShell a ser executado. O nome do arquivo é armazenado na variável de script FileName
Não
Roteiro
O script BeanShell. O valor de retorno é ignorado.
Sim (a menos que o arquivo de script seja fornecido)

Antes de invocar o script, algumas variáveis ​​são configuradas no interpretador BeanShell:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - classe java.util.Properties) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - dá acesso ao SampleResult anterior (se houver)
  • sampler - ( Sampler ) - dá acesso ao sampler atual

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

Se a propriedade beanshell.preprocessor.init estiver definida, ela é usada para carregar um arquivo de inicialização, que pode ser usado para definir métodos etc. para uso no script BeanShell.

^

Pré-processador JSR223

O JSR223 PreProcessor permite que o código de script JSR223 seja aplicado antes de obter uma amostra.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Linguagem
A linguagem JSR223 a ser usada
Sim
Parâmetros
Parâmetros a serem passados ​​para o script. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script a ser executado, se um caminho de arquivo relativo for usado, ele será relativo ao diretório referenciado por " user.dir " Propriedade do sistema
Não
Cache de compilação de script
String exclusiva no plano de teste que o JMeter usará para armazenar em cache o resultado da compilação do script se a linguagem usada suportar a interface compilável (Groovy é uma delas, java, beanshell e javascript não são)
Veja nota na propriedade JSR223 Sampler Java System se você estiver usando Groovy sem marcar esta opção
Não
Roteiro
O script a ser executado.
Sim (a menos que o arquivo de script seja fornecido)

As seguintes variáveis ​​JSR223 são configuradas para uso pelo script:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • Rótulo - o Rótulo da String
  • FileName - o nome do arquivo de script (se houver)
  • Parâmetros - os parâmetros (como uma String)
  • args - os parâmetros como um array String (dividido em espaço em branco)
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - classe java.util.Properties) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler ) - dá acesso ao sampler atual
  • OUT - System.out - ex: OUT.println("message")

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

^

Pré-Processador JDBC

O JDBC PreProcessor permite que você execute alguma instrução SQL imediatamente antes da execução de uma amostra. Isso pode ser útil se sua amostra JDBC exigir que alguns dados estejam no banco de dados e você não puder computar isso em um grupo de threads de configuração. Para obter detalhes, consulte Solicitação JDBC .

Veja o seguinte Plano de teste:

No plano de teste vinculado, " Criar Corte de Preço " JDBC PreProcessor chama um procedimento armazenado para criar um Corte de Preço no Banco de Dados, este será usado por " Calcular Corte de Preço ".

Criar pré-processador de corte de preço
Criar pré-processador de corte de preço
^

Parâmetros do usuário RegEx

Permite especificar valores dinâmicos para parâmetros HTTP extraídos de outra solicitação HTTP usando expressões regulares. Os parâmetros do usuário RegEx são específicos para threads individuais.

Este componente permite especificar o nome de referência de uma expressão regular que extrai nomes e valores de parâmetros de solicitação HTTP. Os números do grupo de expressões regulares devem ser especificados para o nome do parâmetro e também para o valor do parâmetro. A substituição ocorrerá apenas para parâmetros no Sampler que usa este RegEx User Parameters cujo nome corresponde

Captura de tela do painel de controle dos parâmetros do usuário RegEx
Captura de tela do painel de controle dos parâmetros do usuário RegEx

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Nome de referência de expressão regular
Nome de uma referência a uma expressão regular
Sim
Nomes de parâmetro número do grupo regexp
Número do grupo de expressão regular usado para extrair nomes de parâmetros
Sim
Número do grupo regex de valores de parâmetro
Número do grupo de expressão regular usado para extrair valores de parâmetro
Sim
Exemplo de Regexp¶

Suponha que temos uma solicitação que retorna um formulário com 3 parâmetros de entrada e queremos extrair o valor de 2 deles para injetá-los na próxima solicitação

  1. Criar expressão regular de pós-processador para a primeira solicitação HTTP
    • refName - define o nome de uma expressão regular Expression ( listParams )
    • expressão regular - expressão que irá extrair nomes de entrada e atributos de valores de entrada
      Ex: input name="([^"]+?)" value="([^"]+?)"
    • template - estaria vazio
    • match nr - -1 (para percorrer todas as correspondências possíveis)
  2. Criar parâmetros de usuário RegEx de pré-processador para a segunda solicitação HTTP
    • refName - defina o mesmo nome de referência de uma expressão regular, seria listParams em nosso exemplo
    • nomes de parâmetros número do grupo - número do grupo de expressão regular para nomes de parâmetros, seria 1 em nosso exemplo
    • valores de parâmetro número do grupo - número do grupo de expressão regular para valores de parâmetro, seria 2 em nosso exemplo

Veja também o elemento Extrator de Expressão Regular , que é usado para extrair nomes e valores de parâmetros

^

Tempo limite da amostra

Este pré-processador agenda uma tarefa de timer para interromper uma amostra se demorar muito para ser concluída. O tempo limite é ignorado se for zero ou negativo. Para que isso funcione, o amostrador deve implementar o Interruptible. Os seguintes amostradores são conhecidos por fazer isso:
AJP, BeanShell, FTP, HTTP, Soap, AccessLog, MailReader, JMS Subscriber, TCPSampler, TestAction, JavaSampler

O elemento de teste destina-se a ser usado onde os tempos limite individuais, como Tempo limite de conexão ou Tempo limite de resposta, são insuficientes ou quando o Amostrador não oferece suporte a tempos limite. O tempo limite deve ser definido suficientemente longo para que não seja acionado em testes normais, mas curto o suficiente para interromper as amostras que estão travadas.

[Por padrão, o JMeter usa um Callable para interromper o amostrador. Isso é executado no mesmo thread que o temporizador, portanto, se a interrupção demorar muito, poderá atrasar o processamento de tempos limite subsequentes. Não se espera que isso seja um problema, mas, se necessário, a propriedade InterruptTimer.useRunnable pode ser definida como true para usar um thread Runnable separado em vez do Callable.]

Captura de tela do painel de controle do tempo limite da amostra
Captura de tela do painel de controle do tempo limite da amostra

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este temporizador que é mostrado na árvore.
Não
Tempo limite da amostra
Se a amostra demorar mais para ser concluída, ela será interrompida.
Sim
^
^

18.8 Pós-Processadores

Como o nome sugere, os pós-processadores são aplicados após os amostradores. Observe que eles são aplicados a todos os amostradores no mesmo escopo, portanto, para garantir que um pós-processador seja aplicado apenas a um amostrador específico, adicione-o como filho do amostrador.

Observação: a menos que documentado de outra forma, os pós-processadores não são aplicados a subamostras (amostras filhas) - somente à amostra pai. No caso de pós-processadores JSR223 e BeanShell, o script pode recuperar subamostras usando o método prev.getSubResults() que retorna uma matriz de SampleResults. A matriz estará vazia se não houver nenhuma.

Os pós-processadores são executados antes das Asserções, portanto, eles não têm acesso a nenhum Resultado de Asserção, nem o status da amostra refletirá os resultados de nenhuma Asserção. Se você precisar de acesso aos Resultados da Asserção, tente usar um Ouvinte. Observe também que a variável JMeterThread.last_sample_ok é definida como " true " ou " false " após todas as asserções terem sido executadas.

Extrator de Expressão Regular

Permite que o usuário extraia valores de uma resposta do servidor usando uma expressão regular do tipo Perl. Como pós-processador, esse elemento será executado após cada solicitação de amostra em seu escopo, aplicando a expressão regular, extraindo os valores solicitados, gerando a string do modelo e armazenando o resultado no nome da variável fornecida.

Captura de tela do painel de controle do extrator de expressão regular
Captura de tela do painel de controle do extrator de expressão regular

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a extração deve ser aplicada ao conteúdo da variável nomeada
A correspondência é aplicada a todas as amostras qualificadas sucessivamente. Por exemplo, se houver uma amostra principal e 3 subamostras, cada uma contendo uma única correspondência para o regex (ou seja, 4 correspondências no total). Para match number = 3 , apenas subamostras, o extrator corresponderá à subamostra. Para o número de correspondência = 3 , Amostra principal e subamostras, o extrator corresponderá à subamostra (1ª correspondência é a amostra principal). Para número de correspondência = 0 ou negativo, todas as amostras qualificadas serão processadas. Para número de correspondência > 0 , a correspondência será interrompida assim que forem encontradas correspondências suficientes.
Sim
Campo a verificar
Os seguintes campos podem ser verificados:
  • Corpo - o corpo da resposta, por exemplo, o conteúdo de uma página da web (excluindo cabeçalhos)
  • Corpo (sem escape) - o corpo da resposta, com todos os códigos de escape Html substituídos. Observe que os escapes Html são processados ​​sem levar em conta o contexto, portanto, algumas substituições incorretas podem ser feitas.
    Observe que essa opção afeta muito o desempenho, portanto, use-a apenas quando for absolutamente necessário e esteja ciente de seus impactos
  • Corpo como um documento - o texto extraído de vários tipos de documentos via Apache Tika (consulte a seção Exibir documento da árvore de resultados ).
    Observe que a opção Body as a Document pode afetar o desempenho, portanto, verifique se está tudo bem para o seu teste
  • Cabeçalhos de solicitação - podem não estar presentes para amostras não HTTP
  • Cabeçalhos de resposta - podem não estar presentes para amostras não HTTP
  • URL
  • Código de resposta - por exemplo, 200
  • Mensagem de resposta - por exemplo, OK
Os cabeçalhos podem ser úteis para amostras HTTP; pode não estar presente para outros tipos de amostra.
Sim
Nome da variável criada
O nome da variável JMeter na qual armazenar o resultado. Observe também que cada grupo é armazenado como [refname]_g# , onde [refname] é a string que você digitou como o nome de referência e # é o número do grupo, onde o grupo 0 é a correspondência inteira, o grupo 1 é a correspondência do primeiro conjunto de parênteses, etc.
Sim
Expressão regular
A expressão regular usada para analisar os dados de resposta. Isso deve conter pelo menos um conjunto de parênteses " () " para capturar uma parte da string, a menos que esteja usando o grupo $0$ . Não coloque a expressão em / / - a menos que você queira combinar esses caracteres também.
Sim
Modelo
O modelo usado para criar uma string a partir das correspondências encontradas. Esta é uma string arbitrária com elementos especiais para se referir a grupos dentro da expressão regular. A sintaxe para se referir a um grupo é: ' $1$ ' para se referir ao grupo 1 , ' $2$ ' para se referir ao grupo 2 , etc. $0$ refere-se a qualquer correspondência da expressão inteira.
Sim
Partida nº (0 para Aleatório)
Indica qual correspondência usar. A expressão regular pode corresponder várias vezes.
  • Use um valor zero para indicar que o JMeter deve escolher uma correspondência aleatoriamente.
  • Um número positivo N significa selecionar a enésima correspondência.
  • Os números negativos são usados ​​em conjunto com o ForEach Controller - veja abaixo.
Sim
Valor padrão
Se a expressão regular não corresponder, a variável de referência será definida com o valor padrão. Isso é particularmente útil para testes de depuração. Se nenhum padrão for fornecido, será difícil dizer se a expressão regular não correspondeu, ou o elemento RE não foi processado ou talvez a variável errada esteja sendo usada.

No entanto, se você tiver vários elementos de teste que definem a mesma variável, convém deixar a variável inalterada se a expressão não corresponder. Nesse caso, remova o valor padrão quando a depuração estiver concluída.

Não, mas recomendado
Usar valor padrão vazio
Se a caixa de seleção estiver marcada e o Valor Padrão estiver vazio, o JMeter definirá a variável como string vazia em vez de não defini-la. Assim, quando você, por exemplo, usar ${var} (se o nome de referência for var) em seu plano de teste, se o valor extraído não for encontrado, ${var} será igual a string vazia em vez de conter ${var} que pode ser útil se o valor extraído for opcional.
Não

Se o número de correspondência for definido como um número não negativo e ocorrer uma correspondência, as variáveis ​​serão definidas da seguinte forma:

  • refName - o valor do modelo
  • refName_g n , onde n = 0 , 1 , 2 - os grupos para a partida
  • refName_g - o número de grupos no Regex (excluindo 0 )

Se nenhuma correspondência ocorrer, a variável refName será definida como padrão (a menos que isso esteja ausente). Além disso, as seguintes variáveis ​​são removidas:

  • refName_g0
  • refName_g1
  • refName_g

Se o número de correspondência for definido como um número negativo, todas as correspondências possíveis nos dados do amostrador serão processadas. As variáveis ​​são definidas da seguinte forma:

  • refName_matchNr - o número de correspondências encontradas; pode ser 0
  • refName_ n , onde n = 1 , 2 , 3 etc. - as strings geradas pelo modelo
  • refName_ n _g m , onde m = 0 , 1 , 2 - os grupos para correspondência n
  • refName - sempre definido com o valor padrão
  • refName_g n - não definido

Observe que a variável refName é sempre definida com o valor padrão neste caso e as variáveis ​​de grupo associadas não são definidas.

Consulte também Asserção de Resposta para obter alguns exemplos de como especificar modificadores e para obter mais informações sobre expressões regulares do JMeter.

^

CSS Selector Extractor (era: CSS/JQuery Extractor )

Permite que o usuário extraia valores de uma resposta HTML do servidor usando uma sintaxe de seletor de CSS. Como pós-processador, esse elemento será executado após cada solicitação de amostra em seu escopo, aplicando a expressão CSS/JQuery, extraindo os nós solicitados, extraindo o nó como texto ou valor de atributo e armazenando o resultado no nome da variável fornecida.

Captura de tela para o painel de controle do extrator de seletor de CSS
Captura de tela do painel de controle do extrator de seletor de CSS

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a extração deve ser aplicada ao conteúdo da variável nomeada
A correspondência é aplicada a todas as amostras qualificadas sucessivamente. Por exemplo, se houver uma amostra principal e 3 subamostras, cada uma contendo uma única correspondência para o regex (ou seja, 4 correspondências no total). Para match number = 3 , apenas subamostras, o extrator corresponderá à subamostra. Para o número de correspondência = 3 , Amostra principal e subamostras, o extrator corresponderá à subamostra (1ª correspondência é a amostra principal). Para número de correspondência = 0 ou negativo, todas as amostras qualificadas serão processadas. Para número de correspondência > 0 , a correspondência será interrompida assim que forem encontradas correspondências suficientes.
Sim
Implementação do seletor CSS
2 Implementações para sintaxe baseada em CSS/JQuery são suportadas: Se o seletor estiver vazio, a implementação padrão (JSoup) será usada.
Falso
Nome da variável criada
O nome da variável JMeter na qual armazenar o resultado.
Sim
Expressão CSS/JQuery
O seletor CSS/JQuery usado para selecionar nós dos dados de resposta. Seletor, combinação de seletores e pseudo-seletores são suportados, exemplos:
  • E[foo] - um elemento E com um atributo " foo "
  • filho ancestral - elementos filhos que descendem do ancestral, por exemplo, .body p encontra elementos p em qualquer lugar sob um bloco com a classe " body "
  • :lt(n) - encontra elementos cujo índice irmão (ou seja, sua posição na árvore DOM em relação ao pai) é menor que n ; por exemplo , td:lt(3)
  • :contains(texto) - encontra elementos que contêm o texto fornecido . A pesquisa não diferencia maiúsculas de minúsculas; por exemplo p:contém(jsoup)
Para obter mais detalhes sobre a sintaxe, consulte:
Sim
Atributo
Nome do atributo (conforme a sintaxe HTML) a ser extraído dos nós que correspondem ao seletor. Se estiver vazio, o texto combinado deste elemento e todos os seus filhos serão retornados.
Esta é a função Element#attr(name) equivalente para JSoup se um atributo for definido.
CSS Extractor com valor de atributo definido
CSS Extractor com valor de atributo definido

Se vazio, isso é o equivalente da função Element#text() para JSoup, se não for definido o valor para o atributo.
Extrator de CSS sem conjunto de atributos
Extrator de CSS sem conjunto de atributos
falso
Partida nº (0 para Aleatório)
Indica qual correspondência usar. O seletor CSS/JQuery pode corresponder várias vezes.
  • Use um valor zero para indicar que o JMeter deve escolher uma correspondência aleatoriamente.
  • Um número positivo N significa selecionar a enésima correspondência.
  • Os números negativos são usados ​​em conjunto com o ForEach Controller - veja abaixo.
Sim
Valor padrão
Se a expressão não corresponder, a variável de referência será definida com o valor padrão. Isso é particularmente útil para testes de depuração. Se nenhum padrão for fornecido, será difícil dizer se a expressão não correspondeu, ou o elemento CSS/JQuery não foi processado ou talvez a variável errada esteja sendo usada.

No entanto, se você tiver vários elementos de teste que definem a mesma variável, convém deixar a variável inalterada se a expressão não corresponder. Nesse caso, remova o valor padrão quando a depuração estiver concluída.

Não, mas recomendado
Usar valor padrão vazio
Se a caixa de seleção estiver marcada e o Valor Padrão estiver vazio, o JMeter definirá a variável como string vazia em vez de não defini-la. Assim, quando você, por exemplo, usar ${var} (se o nome de referência for var) em seu plano de teste, se o valor extraído não for encontrado, ${var} será igual a string vazia em vez de conter ${var} que pode ser útil se o valor extraído for opcional.
Não

Se o número de correspondência for definido como um número não negativo e ocorrer uma correspondência, as variáveis ​​serão definidas da seguinte forma:

  • refName - o valor do modelo

Se nenhuma correspondência ocorrer, a variável refName será definida como padrão (a menos que isso esteja ausente).

Se o número de correspondência for definido como um número negativo, todas as correspondências possíveis nos dados do amostrador serão processadas. As variáveis ​​são definidas da seguinte forma:

  • refName_matchNr - o número de correspondências encontradas; pode ser 0
  • refName_n , onde n = 1 , 2 , 3 , etc. - as strings geradas pelo modelo
  • refName - sempre definido com o valor padrão

Observe que a variável refName é sempre definida com o valor padrão neste caso.

^

Extrator XPath2

Este elemento de teste permite ao usuário extrair valor(es) da resposta estruturada - XML ​​ou (X)HTML - usando a linguagem de consulta XPath2.
Captura de tela do painel de controle do extrator XPath2
Captura de tela do painel de controle do extrator XPath2

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a extração deve ser aplicada ao conteúdo da variável nomeada
A correspondência XPath é aplicada a todas as amostras qualificadas, e todos os resultados correspondentes serão retornados.
Sim
Retorna o fragmento XPath inteiro em vez do conteúdo de texto?
Se selecionado, o fragmento será retornado em vez do conteúdo do texto.
Por exemplo //title retornaria " <title>Apache JMeter</title> " em vez de " Apache JMeter ".
Neste caso, //title/text() retornaria " Apache JMeter ".
Sim
Nome da variável criada
O nome da variável JMeter na qual armazenar o resultado.
Sim
Consulta XPath
Consulta de elemento na linguagem XPath 2.0. Pode retornar mais de uma correspondência.
Sim
Partida nº (0 para Aleatório)
Se a consulta XPath Path levar a muitos resultados, você pode escolher qual(is) extrair como Variáveis:
  • 0 : significa aleatório (valor padrão)
  • -1 significa extrair todos os resultados, eles serão nomeados como <nome da variável> _N (onde N vai de 1 a Número de resultados)
  • X : significa extrair o resultado X. Se este X - ésimo for maior que o número de correspondências, nada será retornado. O valor padrão será usado
Não
Valor padrão
Valor padrão retornado quando nenhuma correspondência foi encontrada. Também é retornado se o nó não tiver valor e a opção de fragmento não estiver selecionada.
sim
Lista de aliases de namespaces
Lista de aliases de namespaces que você deseja usar para analisar o documento, uma linha por declaração. Você deve especificá-los da seguinte forma: prefix=namespace . Essa implementação facilita o uso de namespaces do que com a versão XPathExtractor antiga.
Não

Para permitir o uso em um ForEach Controller , ele funciona exatamente da mesma forma que o XPath Extractor acima

XPath2 Extractor fornece algumas ferramentas interessantes, como uma sintaxe melhorada e muito mais funções do que em sua primeira versão.

Aqui estão alguns exemplos:

abs(/livro/página[2])
extrai o valor absoluto da página de um livro
avg(/librarie/book/page)
extrai o número médio de páginas de todos os livros nas bibliotecas
compare(/book[1]/page[2],/book[2]/page[2])
return Valor inteiro igual a 0 se a página do primeiro livro for igual à página do livro, senão retornar -1.

Para ver mais informações sobre essas funções, verifique as funções xPath2

^

Extrator XPath

Este elemento de teste permite ao usuário extrair valor(es) da resposta estruturada - XML ​​ou (X)HTML - usando a linguagem de consulta XPath.
Desde o JMeter 5.0, você deve usar o XPath2 Extractor , pois fornece gerenciamento de namespace melhor e mais fácil, melhor desempenho e suporte para XPath 2.0
Captura de tela do painel de controle do XPath Extractor
Captura de tela do painel de controle do XPath Extractor

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a extração deve ser aplicada ao conteúdo da variável nomeada
A correspondência XPath é aplicada a todas as amostras qualificadas, e todos os resultados correspondentes serão retornados.
Sim
Use Tidy (analisador tolerante)
Se marcado, use Tidy para analisar a resposta HTML em XHTML.
  • " Use Tidy " deve ser marcado para resposta HTML. Essa resposta é convertida em XHTML válido (HTML compatível com XML) usando Tidy
  • " Use Tidy " deve ser desmarcado para resposta XHTML ou XML (por exemplo, RSS)
Para HTML, CSS Selector Extractor é a solução correta e eficiente. Não use XPath para extrações de HTML.
Sim
Tranquilo
Define a bandeira Tidy Quiet
Se Arrumar for selecionado
Erros de relatório
Se ocorrer um erro de Tidy, defina a Asserção de acordo
Se Arrumar for selecionado
Mostrar avisos
Define a opção Tidy showWarnings
Se Arrumar for selecionado
Usar namespaces
Se marcado, o analisador XML usará a resolução de namespace. (veja a nota abaixo em NAMESPACES) Observe que atualmente apenas namespaces declarados no elemento raiz serão reconhecidos. Veja abaixo a definição do usuário de nomes de espaço de trabalho adicionais.
Se Arrumado não estiver selecionado
Validar XML
Verifique o documento em relação ao seu esquema.
Se Arrumado não estiver selecionado
Ignorar espaço em branco
Ignore o espaço em branco do elemento.
Se Arrumado não estiver selecionado
Buscar DTDs Externos
Se selecionado, DTDs externos são buscados.
Se Arrumado não estiver selecionado
Retorna o fragmento XPath inteiro em vez do conteúdo de texto?
Se selecionado, o fragmento será retornado em vez do conteúdo do texto.
Por exemplo //title retornaria " <title>Apache JMeter</title> " em vez de " Apache JMeter ".
Neste caso, //title/text() retornaria " Apache JMeter ".
Sim
Nome da variável criada
O nome da variável JMeter na qual armazenar o resultado.
Sim
Consulta XPath
Consulta de elemento na linguagem XPath. Pode retornar mais de uma correspondência.
Sim
Partida nº (0 para Aleatório)
Se a consulta XPath Path levar a muitos resultados, você pode escolher qual(is) extrair como Variáveis:
  • 0 : significa aleatório
  • -1 significa extrair todos os resultados (valor padrão), eles serão nomeados como <nome da variável> _N (onde N vai de 1 a Número de resultados)
  • X : significa extrair o resultado X. Se este X - ésimo for maior que o número de correspondências, nada será retornado. O valor padrão será usado
Não
Valor padrão
Valor padrão retornado quando nenhuma correspondência foi encontrada. Também é retornado se o nó não tiver valor e a opção de fragmento não estiver selecionada.

Para permitir o uso em um ForEach Controller , as seguintes variáveis ​​são definidas no retorno:

  • refName - definido para a primeira (ou única) correspondência; se não houver correspondência, defina como padrão
  • refName_matchNr - definido para o número de correspondências (pode ser 0 )
  • refName_n - n = 1 , 2 , 3 , etc. Defina para a , correspondência etc.
Nota: A próxima variável refName_n é definida como null - por exemplo, se houver 2 correspondências, refName_3 será definida como null e, se não houver correspondências, refName_1 será definida como null .

XPath é uma linguagem de consulta direcionada principalmente para transformações XSLT. No entanto, também é útil como linguagem de consulta genérica para dados estruturados. Consulte Referência XPath ou especificação XPath para obter mais informações. Aqui estão alguns exemplos:

/html/head/title
extrai o elemento title da resposta HTML
/livro/página[2]
extrai a página de um livro
/livro/página
extrai todas as páginas de um livro
//form[@name='countryForm']//select[@name='country']/option[text()='Czech Republic'])/@value
extrai o atributo de valor do elemento de opção que corresponde ao texto ' República Tcheca ' dentro do elemento de seleção com o atributo de nome ' país ' dentro do formulário com o atributo de nome ' paísForm '
Quando " Use Tidy " está marcado - o documento XML resultante pode diferir ligeiramente da resposta HTML original:
  • Todos os elementos e nomes de atributos são convertidos em minúsculas
  • Tidy tenta corrigir elementos aninhados incorretamente. Por exemplo - original (incorreto) ul/font/li se torna correto ul/li/font
Consulte a página inicial do Tidy para obter mais informações.
NAMESPACES
Como solução para as limitações de namespace do analisador Xalan XPath (implementação na qual o JMeter é baseado), você precisa:
  • forneça um arquivo de propriedades (se, por exemplo, seu arquivo for nomeado namespaces.properties ) que contém mapeamentos para os prefixos de namespace:
    prefix1=http\://foo.apache.org
    prefix2=http\://toto.apache.org
    …
    
  • faça referência a este arquivo no arquivo user.properties usando a propriedade:
    xpath.namespace.config=namespaces.properties

//mynamespace:tagname
//*[local-name()='tagname' e namespace-uri()='uri-for-namespace']
uri-para-namespace mynamespace
^

Extrator JSON JMESPath

Este elemento de teste permite ao usuário extrair valor(es) da resposta estruturada - XML ​​ou (X)HTML - usando a linguagem de consulta JMESPath.
Captura de tela do painel de controle do JSON JMESPath Extractor
Captura de tela do painel de controle do JSON JMESPath Extractor
No XPATH Extractor, oferecemos suporte para extrair vários xpaths ao mesmo tempo, mas no JMES Extractor apenas uma expressão JMES pode ser inserida por vez.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a extração deve ser aplicada ao conteúdo da variável nomeada
Sim
Nome da variável criada
O nome da variável JMeter na qual armazenar o resultado.
Sim
Expressões JMESPath
Consulta de elemento na linguagem de consulta JMESPath. Pode retornar o resultado correspondente.
Sim
Partida nº (0 para Aleatório)
Se a consulta JMESPath levar a muitos resultados, você pode escolher qual(is) extrair como Variáveis:
  • 0 : significa aleatório
  • -1 significa extrair todos os resultados (valor padrão), eles serão nomeados como <nome da variável> _N (onde N vai de 1 a Número de resultados)
  • X : significa extrair o resultado X. Se este X - ésimo for maior que o número de correspondências, nada será retornado. O valor padrão será usado
Não
Valor padrão
Valor padrão retornado quando nenhuma correspondência foi encontrada. Também é retornado se o nó não tiver valor e a opção de fragmento não estiver selecionada.

JMESPath é uma linguagem de consulta para JSON. Ele é descrito em uma gramática ABNF com uma especificação completa. Isso garante que a sintaxe da linguagem seja definida com precisão. Consulte Referência JMESPath para obter mais informações. Aqui também estão alguns exemplos JMESPath Example .

^

Manipulador de Ação de Status de Resultado

Este elemento de teste permite que o usuário interrompa o encadeamento ou todo o teste se o amostrador relevante falhar.
Captura de tela para o manipulador de ação de status de resultado do painel de controle
Captura de tela do Painel de Controle do Manipulador de Ação de Status de Resultado

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Ação a ser tomada após um erro do Sampler
Determina o que acontece se ocorrer um erro do amostrador, seja porque a amostra em si falhou ou uma asserção falhou. As escolhas possíveis são:
  • Continue - ignore o erro e continue com o teste
  • Start next thread loop - não executa samplers seguindo o sampler com erro para a iteração atual e reinicia o loop na próxima iteração
  • Stop Thread - o thread atual sai
  • Parar Teste - todo o teste é interrompido no final de qualquer amostra atual.
  • Parar teste agora - todo o teste é interrompido abruptamente. Quaisquer amostradores atuais são interrompidos, se possível.
Não
^

BeanShell PostProcessor

O BeanShell PreProcessor permite que código arbitrário seja aplicado após a coleta de uma amostra.

O pós-processador BeanShell não ignora mais amostras com dados de resultado de comprimento zero

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell.

A migração para JSR223 PostProcessor +Groovy é altamente recomendada para desempenho, suporte a novos recursos Java e manutenção limitada da biblioteca BeanShell.

O elemento de teste suporta os métodos ThreadListener e TestListener . Estes devem ser definidos no arquivo de inicialização. Consulte o arquivo BeanShellListeners.bshrc para obter definições de exemplo.

Captura de tela do painel de controle do BeanShell PostProcessor
Captura de tela do painel de controle do BeanShell PostProcessor

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore. O nome é armazenado na variável de script Label
Não
Redefinir bsh.Interpreter antes de cada chamada
Se esta opção for selecionada, o interpretador será recriado para cada amostra. Isso pode ser necessário para alguns scripts de execução longa. Para obter mais informações, consulte Práticas recomendadas - scripts do BeanShell .
Sim
Parâmetros
Parâmetros a serem passados ​​para o script BeanShell. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • bsh.args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script BeanShell a ser executado. O nome do arquivo é armazenado na variável de script FileName
Não
Roteiro
O script BeanShell. O valor de retorno é ignorado.
Sim (a menos que o arquivo de script seja fornecido)

As seguintes variáveis ​​do BeanShell são configuradas para uso pelo script:

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - classe java.util.Properties) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - dá acesso ao SampleResult anterior
  • data - (byte [])- dá acesso aos dados de amostra atuais

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

Se a propriedade beanshell.postprocessor.init estiver definida, ela é usada para carregar um arquivo de inicialização, que pode ser usado para definir métodos etc. para uso no script BeanShell.

^

Pós-processador JSR223

O JSR223 PostProcessor permite que o código de script JSR223 seja aplicado após obter uma amostra.

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Linguagem
A linguagem JSR223 a ser usada
Sim
Parâmetros
Parâmetros a serem passados ​​para o script. Os parâmetros são armazenados nas seguintes variáveis:
  • Parâmetros - string contendo os parâmetros como uma única variável
  • args - Array de string contendo parâmetros, divididos em espaço em branco
Não
Arquivo de script
Um arquivo contendo o script a ser executado, se um caminho de arquivo relativo for usado, ele será relativo ao diretório referenciado por " user.dir " Propriedade do sistema
Não
Cache de compilação de script
String exclusiva no plano de teste que o JMeter usará para armazenar em cache o resultado da compilação do script se a linguagem usada suportar a interface compilável (Groovy é uma delas, java, beanshell e javascript não são)
Veja nota na propriedade JSR223 Sampler Java System se você estiver usando Groovy sem marcar esta opção
Não
Roteiro
O script a ser executado.
Sim (a menos que o arquivo de script seja fornecido)

Antes de chamar o script, algumas variáveis ​​são configuradas. Observe que essas são variáveis ​​JSR223 - ou seja, elas podem ser usadas diretamente no script.

  • log - ( Logger ) - pode ser usado para gravar no arquivo de log
  • Rótulo - o Rótulo da String
  • FileName - o nome do arquivo de script (se houver)
  • Parâmetros - os parâmetros (como uma String)
  • args - os parâmetros como um array String (dividido em espaço em branco)
  • ctx - ( JMeterContext ) - dá acesso ao contexto
  • vars - ( JMeterVariables ) - dá acesso de leitura/gravação às variáveis:
    vars.get(chave);
    vars.put(chave,val);
    vars.putObject("OBJ1",new Object());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - classe java.util.Properties) - por exemplo , props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - dá acesso ao SampleResult anterior (se houver)
  • sampler - ( Sampler ) - dá acesso ao sampler atual
  • OUT - System.out - ex: OUT.println("message")

Para detalhes de todos os métodos disponíveis em cada uma das variáveis ​​acima, verifique o Javadoc

^

Pós-processador JDBC

O JDBC PostProcessor permite que você execute alguma instrução SQL logo após a execução de uma amostra. Isso pode ser útil se sua Amostra JDBC alterar alguns dados e você desejar redefinir o estado para o que era antes da execução da amostra JDBC.

No plano de teste vinculado, " JDBC PostProcessor " JDBC PostProcessor chama um procedimento armazenado para excluir do banco de dados o Price Cut-Off que foi criado pelo PreProcessor.

Pós-processador JDBC
Pós-processador JDBC
^

Extrator JSON¶

O JSON PostProcessor permite extrair dados de respostas JSON usando a sintaxe JSON-PATH. Este pós-processador é muito semelhante ao extrator de expressões regulares. Ele deve ser colocado como filho de HTTP Sampler ou qualquer outro sampler que tenha respostas. Ele permitirá que você extraia de maneira muito fácil o conteúdo de texto, consulte Sintaxe do caminho JSON .

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Nomes de variáveis ​​criadas
Nomes de variáveis ​​separados por ponto e vírgula que conterão os resultados de expressões JSON-PATH (devem corresponder ao número de expressões JSON-PATH)
Sim
Expressões de caminho JSON
Expressões JSON-PATH separadas por ponto e vírgula (deve corresponder ao número de variáveis)
Sim
Valores padrão
Valores padrão separados por ponto e vírgula se as expressões JSON-PATH não retornarem nenhum resultado (deve corresponder ao número de variáveis)
Não
Partida nº (0 para Aleatório)
Se a consulta do caminho JSON levar a muitos resultados, você poderá escolher qual(is) extrair como variáveis:
  • 0 : significa aleatório (valor padrão)
  • -1 significa extrair todos os resultados, eles serão nomeados como <nome da variável> _N (onde N vai de 1 a Número de resultados)
  • X : significa extrair o resultado X. Se este X - ésimo for maior que o número de correspondências, nada será retornado. O valor padrão será usado
Não
Calcular concatenação var
Se muitos resultados forem encontrados, o plugin irá concatená-los usando o separador ' , ' e armazená-lo em uma var chamada <variable name> _ALL
Não
Pós-processador JSON
Pós-processador JSON
^

Extrator de Limite

Permite que o usuário extraia valores de uma resposta do servidor usando os limites esquerdo e direito. Como pós-processador, esse elemento será executado após cada solicitação de amostra em seu escopo, testando os limites, extraindo os valores solicitados, gerando a string do modelo e armazenando o resultado no nome da variável fornecida.

Captura de tela do painel de controle do extrator de limite
Captura de tela do painel de controle do extrator de limite

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Aplicar a:
Isso é para uso com amostradores que podem gerar subamostras, por exemplo, Amostrador HTTP com recursos incorporados, Leitor de Correio ou amostras geradas pelo Controlador de Transação.
  • Apenas amostra principal - aplica-se apenas à amostra principal
  • Apenas subamostras - aplica-se apenas às subamostras
  • Amostra principal e subamostras - aplica-se a ambas.
  • Nome da variável JMeter a ser usada - a asserção deve ser aplicada ao conteúdo da variável nomeada
A correspondência é aplicada a todas as amostras qualificadas sucessivamente. Por exemplo, se houver uma amostra principal e 3 subamostras, cada uma contendo um único teste de correspondência (ou seja, 4 correspondências no total). Para match number = 3 , apenas subamostras, o extrator corresponderá à subamostra. Para o número de correspondência = 3 , Amostra principal e subamostras, o extrator corresponderá à subamostra (1ª correspondência é a amostra principal). Para número de correspondência = 0 ou negativo, todas as amostras qualificadas serão processadas. Para número de correspondência > 0 , a correspondência será interrompida assim que forem encontradas correspondências suficientes.
Sim
Campo a verificar
Os seguintes campos podem ser verificados:
  • Corpo - o corpo da resposta, por exemplo, o conteúdo de uma página da web (excluindo cabeçalhos)
  • Corpo (sem escape) - o corpo da resposta, com todos os códigos de escape Html substituídos. Observe que os escapes Html são processados ​​sem levar em conta o contexto, portanto, algumas substituições incorretas podem ser feitas.
    Observe que essa opção afeta muito o desempenho, portanto, use-a apenas quando for absolutamente necessário e esteja ciente de seus impactos
  • Corpo como um documento - o texto extraído de vários tipos de documentos via Apache Tika (consulte a seção Exibir documento da árvore de resultados ).
    Observe que a opção Body as a Document pode afetar o desempenho, portanto, verifique se está tudo bem para o seu teste
  • Cabeçalhos de solicitação - podem não estar presentes para amostras não HTTP
  • Cabeçalhos de resposta - podem não estar presentes para amostras não HTTP
  • URL
  • Código de resposta - por exemplo, 200
  • Mensagem de resposta - por exemplo, OK
Os cabeçalhos podem ser úteis para amostras HTTP; pode não estar presente para outros tipos de amostra.
Sim
Nome da variável criada
O nome da variável JMeter na qual armazenar o resultado. Observe também que cada grupo é armazenado como [refname]_g# , onde [refname] é a string que você digitou como o nome de referência e # é o número do grupo, onde o grupo 0 é a correspondência inteira, o grupo 1 é a correspondência do primeiro conjunto de parênteses, etc.
Sim
Limite Esquerdo
Limite esquerdo do valor a ser encontrado
Não
Limite Direito
Limite direito de valor a ser encontrado
Não
Partida nº (0 para Aleatório)
Indica qual correspondência usar. Os limites podem corresponder várias vezes.
  • Use um valor zero para indicar que o JMeter deve escolher uma correspondência aleatoriamente.
  • Um número positivo N significa selecionar a enésima correspondência.
  • Os números negativos são usados ​​em conjunto com o ForEach Controller - veja abaixo.
Sim
Valor padrão
Se os limites não corresponderem, a variável de referência será definida com o valor padrão. Isso é particularmente útil para testes de depuração. Se nenhum padrão for fornecido, será difícil dizer se os limites não correspondem ou talvez a variável errada esteja sendo usada.

No entanto, se você tiver vários elementos de teste que definem a mesma variável, convém deixar a variável inalterada se a expressão não corresponder. Nesse caso, remova o valor padrão quando a depuração estiver concluída.

Não, mas recomendado

Se o número de correspondência for definido como um número não negativo e ocorrer uma correspondência, as variáveis ​​serão definidas da seguinte forma:

  • refName - o valor da extração

Se nenhuma correspondência ocorrer, a variável refName será definida como padrão (a menos que isso esteja ausente).

Se o número de correspondência for definido como um número negativo, todas as correspondências possíveis nos dados do amostrador serão processadas. As variáveis ​​são definidas da seguinte forma:

  • refName_matchNr - o número de correspondências encontradas; pode ser 0
  • refName_ n , onde n = 1 , 2 , 3 etc. - as strings geradas pelo modelo
  • refName_ n _g m , onde m = 0 , 1 , 2 - os grupos para correspondência n
  • refName - sempre definido com o valor padrão

Observe que a variável refName é sempre definida com o valor padrão neste caso e as variáveis ​​de grupo associadas não são definidas.

Se os limites esquerdo e direito forem nulos, todos os dados selecionados no escopo serão retornados
^

18.9 Recursos Diversos


Plano de Teste

O Plano de Teste é onde as configurações gerais de um teste são especificadas.

Variáveis ​​estáticas podem ser definidas para valores que são repetidos ao longo de um teste, como nomes de servidor. Por exemplo, a variável SERVER pode ser definida como www.example.com e o restante do plano de teste pode se referir a ela como ${SERVER} . Isso simplifica a alteração do nome posteriormente.

Se o mesmo nome de variável for reutilizado em um ou mais elementos de Configuração de Variáveis ​​Definidas pelo Usuário , o valor será definido para a última definição no plano de teste (leitura de cima para baixo). Essas variáveis ​​devem ser usadas para itens que podem mudar entre as execuções de teste, mas que permanecem os mesmos durante uma execução de teste.

Observe que o Plano de Teste não pode fazer referência às variáveis ​​que ele define.
Se você precisar construir outras variáveis ​​das variáveis ​​do Plano de Teste, use um elemento de teste Variáveis ​​Definidas pelo Usuário .

A seleção de Functional Testing instrui o JMeter a salvar as informações de amostra adicionais - Dados de Resposta e Dados do Amostrador - em todos os arquivos de resultados. Isso aumenta os recursos necessários para executar um teste e pode afetar negativamente o desempenho do JMeter. Se mais dados forem necessários apenas para um amostrador específico, adicione um Ouvinte a ele e configure os campos conforme necessário.

A opção não afeta os arquivos de resultados CSV, que atualmente não podem armazenar essas informações.

Além disso, existe uma opção aqui para instruir o JMeter a executar o Thread Group serialmente em vez de em paralelo.

Executar grupos de threads tearDown após o desligamento dos threads principais: se selecionado, os grupos tearDown (se houver) serão executados após o desligamento normal dos threads principais. Os threads de tearDown não serão executados se o teste for interrompido à força.

O plano de teste agora fornece uma maneira fácil de adicionar a configuração do caminho de classe a um plano de teste específico. O recurso é aditivo, o que significa que você pode adicionar arquivos jar ou diretórios, mas a remoção de uma entrada requer a reinicialização do JMeter.

Observe que isso não pode ser usado para adicionar plugins JMeter GUI, porque eles são processados ​​anteriormente.
No entanto, pode ser útil para jars utilitários, como drivers JDBC. Os jars são incluídos apenas no caminho de pesquisa para o carregador JMeter, não para o carregador de classes do sistema.

As propriedades JMeter também fornecem uma entrada para carregar caminhos de classe adicionais. Em jmeter.properties , edite " user.classpath " ou " plugin_dependency_paths " para incluir bibliotecas adicionais. Consulte o Classpath do JMeter e Configurando o JMeter para obter detalhes.

Captura de tela do painel de controle do plano de teste
Captura de tela do Painel de Controle do Plano de Teste
^

Grupo de tópicos ¶

Um Thread Group define um pool de usuários que executará um caso de teste específico em seu servidor. Na GUI do Thread Group, você pode controlar o número de usuários simulados (número de threads), o tempo de aceleração (quanto tempo leva para iniciar todos os threads), o número de vezes para realizar o teste e, opcionalmente, um start e parar o tempo para o teste.

Consulte também tearDown Thread Group e setUp Thread Group .

Ao usar o agendador, o JMeter executa o grupo de encadeamentos até que o número de loops seja atingido ou a duração/tempo de término seja alcançado - o que ocorrer primeiro. Observe que a condição é verificada apenas entre amostras; quando a condição final for alcançada, esse encadeamento será interrompido. O JMeter não interrompe amostradores que estão aguardando uma resposta, portanto, o tempo de término pode ser atrasado arbitrariamente.

Captura de tela do painel de controle do grupo de threads
Captura de tela do painel de controle do grupo de threads

Desde o JMeter 3.0, você pode executar uma seleção de Thread Group selecionando-os e clicando com o botão direito. Um menu pop-up será exibido:

Menu pop-up para iniciar uma seleção de grupos de threads
Menu pop-up para iniciar uma seleção de grupos de threads

Observe que você tem três opções para executar a seleção de grupos de threads:
Começar
Iniciar apenas os grupos de tópicos selecionados
Iniciar sem pausas
Inicie apenas os grupos de threads selecionados, mas sem executar os temporizadores
Validar
Inicie os grupos de threads selecionados apenas usando o modo de validação. Por padrão, isso executa o Thread Group no modo de validação (veja abaixo)
Modo de validação:
Este modo permite a validação rápida de um grupo de threads executando-o com um thread, uma iteração, sem temporizadores e sem atraso de inicialização definido como 0 . O comportamento pode ser modificado com algumas propriedades configurando em user.properties :
testplan_validation.nb_threads_per_thread_group
Número de threads a serem usados ​​para validar um Thread Group, por padrão 1
testplan_validation.ignore_timers
Ignorar temporizadores ao validar o grupo de threads do plano, por padrão 1
testplan_validation.number_iterations
Número de iterações a serem usadas para validar um Thread Group
testplan_validation.tpc_force_100_pct
Se deve forçar o Controlador de taxa de transferência no modo de porcentagem a ser executado como se a porcentagem fosse 100%. Padrões para falso

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Ação a ser tomada após um erro do Sampler
Determina o que acontece se ocorrer um erro do amostrador, seja porque a amostra em si falhou ou uma asserção falhou. As escolhas possíveis são:
  • Continue - ignore o erro e continue com o teste
  • Start Next Thread Loop - ignore o erro, inicie o próximo loop e continue com o teste
  • Stop Thread - o thread atual sai
  • Parar Teste - todo o teste é interrompido no final de qualquer amostra atual.
  • Parar teste agora - todo o teste é interrompido abruptamente. Quaisquer amostradores atuais são interrompidos, se possível.
Não
Número de processos
Número de usuários para simular.
Sim
Período de aceleração
Quanto tempo o JMeter deve levar para iniciar todos os threads. Se houver 10 encadeamentos e um tempo de aceleração de 100 segundos, cada encadeamento começará 10 segundos após o início do encadeamento anterior, por um tempo total de 100 segundos para obter o teste totalmente atualizado.
O primeiro encadeamento sempre iniciará diretamente, portanto, se você configurou um encadeamento, o tempo de aceleração é efetivamente zero . Pela mesma razão, o décimo thread no exemplo acima será iniciado após 90 segundos e não 100 segundos.
Sim
Contagem de loops
Número de vezes para executar o caso de teste. Alternativamente, " infinito " pode ser selecionado fazendo com que o teste seja executado até que seja interrompido manualmente ou que o fim da vida útil do thread seja alcançado.
Sim, a menos que Infinito seja selecionado
Atrasar a criação do Thread até que seja necessário
Se selecionado, as roscas são criadas somente quando a proporção apropriada do tempo de aceleração tiver decorrido. Isso é mais apropriado para testes com um tempo de aceleração significativamente maior que o tempo para executar um único thread. Ou seja, onde os tópicos anteriores terminam antes do início dos posteriores.
Se não for selecionado, todos os encadeamentos serão criados quando o teste for iniciado (eles pausarão na proporção apropriada do tempo de aceleração). Este é o padrão original e é apropriado para testes em que os encadeamentos estão ativos durante a maior parte do teste.
Sim
Especificar vida útil do thread
Se selecionado, limita o tempo de operação do Thread aos limites fornecidos
Sim
Duração (segundos)
Se a caixa de seleção do agendador estiver marcada, pode-se escolher um horário de término relativo. O JMeter usará isso para calcular o Horário de término.
Não
Atraso de inicialização (segundos)
Se a caixa de seleção do agendador estiver marcada, pode-se escolher um atraso de inicialização relativo. O JMeter usará isso para calcular a hora de início.
Não
^

Bancada de trabalho

^

Gerenciador SSL¶

O SSL Manager é uma maneira de selecionar um certificado de cliente para que você possa testar aplicativos que usam a infraestrutura de chave pública (PKI). Só é necessário se você não tiver configurado as propriedades do sistema apropriadas.

Se você quiser testar a autenticação do certificado do cliente, consulte Configuração do armazenamento de chaves
Escolhendo um certificado de cliente

Você pode usar um armazenamento de chaves no formato Java Key Store (JKS) ou um arquivo Public Key Certificate Standard #12 (PKCS12) para seus certificados de cliente. Há um recurso das bibliotecas JSSE que exige que você tenha pelo menos uma senha de seis caracteres em sua chave (pelo menos para o utilitário keytool que vem com seu JDK).

Para selecionar o certificado do cliente, escolha Opções  →  Gerenciador SSL na barra de menus. Você será presenteado com um localizador de arquivos que procura por arquivos PKCS12 por padrão. Seu arquivo PKCS12 deve ter a extensão ' .p12 ' para que o SSL Manager o reconheça como um arquivo PKCS12. Qualquer outro arquivo será tratado como um armazenamento médio de chaves JKS. Se o JSSE estiver instalado corretamente, a senha será solicitada. A caixa de texto não oculta os caracteres que você digita neste momento - portanto, certifique-se de que ninguém esteja olhando por cima do seu ombro. A implementação atual assume que a senha para o keystore também é a senha para a chave privada do cliente como você deseja autenticar.

Ou você pode definir as propriedades apropriadas do sistema - consulte o arquivo system.properties .

Na próxima vez que você executar seu teste, o SSL Manager examinará seu armazenamento de chaves para ver se ele possui pelo menos uma chave disponível. Se houver apenas uma chave, o SSL Manager a selecionará para você. Se houver mais de uma chave, ele seleciona atualmente a primeira chave. Atualmente, não há como selecionar outras entradas no keystore, portanto, a chave desejada deve ser a primeira.

Coisas para observar

Você deve ter seu certificado de Autoridade de Certificação (CA) instalado corretamente se não estiver assinado por um dos cinco certificados de CA que acompanham seu JDK. Um método para instalá-lo é importar seu certificado de CA para um arquivo JKS e nomear o arquivo JKS como " jssecacerts ". Coloque o arquivo na pasta lib/security do seu JRE. Este arquivo será lido antes do arquivo " cacerts " no mesmo diretório. Tenha em mente que enquanto o arquivo " jssecacerts " existir, os certificados instalados em " cacerts " não serão utilizados. Isso pode causar problemas para você. Se você não se importa em importar seu certificado CA para o arquivo " cacerts", então você pode autenticar em todos os certificados de CA instalados.

^

Gravador de script de teste HTTP(S) (era: HTTP Proxy Server )

O HTTP(S) Test Script Recorder permite que o JMeter intercepte e registre suas ações enquanto você navega em seu aplicativo da web com seu navegador normal. O JMeter criará objetos de amostra de teste e os armazenará diretamente em seu plano de teste à medida que você avança (para que você possa visualizar amostras interativamente enquanto as cria).
Certifique-se de ler esta página wiki para configurar corretamente o JMeter.

Para usar o gravador, adicione o elemento HTTP(S) Test Script Recorder. Clique com o botão direito do mouse no elemento Plano de teste para obter o menu Adicionar: ( Adicionar  →  Elementos não-teste  →  Gravador de script de teste HTTP(S) ).

O gravador é implementado como um servidor proxy HTTP(S). Você precisa configurar seu navegador para usar o proxy para todas as solicitações HTTP e HTTPS.

Não use o JMeter como proxy para nenhum outro tipo de solicitação - FTP, etc. - pois o JMeter não pode lidar com eles.

Idealmente, use o modo de navegação privada ao gravar a sessão. Isso deve garantir que o navegador seja iniciado sem cookies armazenados e evitar que certas alterações sejam salvas. Por exemplo, o Firefox não permite que substituições de certificados sejam salvas permanentemente.

Gravação e certificados HTTPS

As conexões HTTPS usam certificados para autenticar a conexão entre o navegador e o servidor web. Ao se conectar via HTTPS, o servidor apresenta o certificado ao navegador. Para autenticar o certificado, o navegador verifica se o certificado do servidor está assinado por uma Autoridade de Certificação (CA) vinculada a uma de suas CAs raiz incorporadas.

Os navegadores também verificam se o certificado é para o host ou domínio correto e se é válido e não expirou.
Se alguma das verificações do navegador falhar, ele avisará o usuário que poderá decidir se permite que a conexão continue.

O JMeter precisa usar seu próprio certificado para habilitá-lo a interceptar a conexão HTTPS do navegador. Efetivamente, o JMeter tem que fingir ser o servidor de destino.

O JMeter gerará seu(s) próprio(s) certificado(s). Elas são geradas com um período de validade definido pela propriedade proxy.cert.validity , padrão de 7 dias e senhas aleatórias. Se o JMeter detectar que está sendo executado no Java 8 ou posterior, ele gerará certificados para cada servidor de destino conforme necessário (modo dinâmico), a menos que a seguinte propriedade seja definida: proxy.cert.dynamic_keys=false. Ao usar o modo dinâmico, o certificado será para o nome de host correto e será assinado por um certificado de CA gerado por JMeter. Por padrão, esse certificado CA não será confiável para o navegador, mas pode ser instalado como um certificado confiável. Feito isso, os certificados de servidor gerados serão aceitos pelo navegador. Isso tem a vantagem de que até mesmo recursos HTTPS incorporados podem ser interceptados e não há necessidade de substituir as verificações do navegador para cada novo servidor.

Os navegadores não solicitam recursos incorporados. Assim, com versões anteriores, os recursos incorporados seriam baixados apenas para servidores que já eram 'conhecidos' pelo navegador

A menos que um keystore seja fornecido (e você defina a propriedade proxy.cert.alias ), o JMeter precisa usar o aplicativo keytool para criar as entradas do keystore. O JMeter inclui código para verificar se o keytool está disponível procurando em vários locais padrão. Se o JMeter não conseguir localizar o aplicativo keytool, ele relatará um erro. Se necessário, a propriedade do sistema keytool.directory pode ser usada para informar ao JMeter onde encontrar keytool. Isso deve ser definido no arquivo system.properties .

Os certificados JMeter são gerados (se necessário) quando o botão Iniciar é pressionado.

A geração do certificado pode demorar algum tempo, durante o qual a GUI não responderá.
O cursor é alterado para uma ampulheta enquanto isso está acontecendo. Quando a geração do certificado estiver concluída, a GUI exibirá uma caixa de diálogo pop-up contendo os detalhes do certificado para a CA raiz. Este certificado precisa ser instalado pelo navegador para que ele aceite os certificados de host gerados pelo JMeter; veja abaixo para detalhes.

Se necessário, você pode forçar o JMeter a gerar novamente o keystore (e os certificados exportados - ApacheJMeterTemporaryRootCA[.usr|.crt] ) excluindo o arquivo de keystore proxyserver.jks do diretório JMeter.

Este certificado não é um dos certificados em que os navegadores normalmente confiam e não será para o host correto.
Como consequência:

  • O navegador deve exibir uma caixa de diálogo perguntando se você deseja aceitar o certificado ou não. Por exemplo:
    1) O nome do servidor " www.example.com " não corresponde ao nome do certificado
       " _ JMeter Root CA para gravação (INSTALE SOMENTE SE FOR SEU) ". Alguém pode estar tentando bisbilhotar você.
    2) O certificado para " _ JMeter Root CA para gravação (INSTALE SOMENTE SE FOR SEU) " é assinado pela Autoridade de Certificação desconhecida
       " _ JMeter Root CA para gravação (INSTALE SOMENTE SE FOR SEU) ". Não é possível verificar se este é um certificado válido.
    
    Você precisará aceitar o certificado para permitir que o JMeter Proxy intercepte o tráfego SSL para gravá-lo. No entanto, não aceite este certificado permanentemente; ele só deve ser aceito temporariamente. Os navegadores apenas solicitam essa caixa de diálogo para o certificado da URL principal, não para os recursos carregados na página, como imagens, arquivos CSS ou JavaScript hospedados em um CDN externo seguro. Se você tiver esses recursos (o Gmail tem, por exemplo), você terá que primeiro navegar manualmente para esses outros domínios para aceitar o certificado do JMeter para eles. Verifique no jmeter.log os domínios seguros para os quais você precisa registrar o certificado.
  • Se o navegador já tiver registrado um certificado validado para este domínio, o navegador detectará o JMeter como uma violação de segurança e se recusará a carregar a página. Nesse caso, você deve remover o certificado confiável do armazenamento de chaves do seu navegador.

As versões do JMeter de 2.10 em diante ainda suportam esse método e continuarão a fazê-lo se você definir a seguinte propriedade: proxy.cert.alias As seguintes propriedades podem ser usadas para alterar o certificado usado:

  • proxy.cert.directory - o diretório no qual encontrar o certificado (padrão = JMeter bin/ )
  • proxy.cert.file - nome do arquivo keystore (padrão " proxyserver.jks ")
  • proxy.cert.keystorepass - senha do keystore (padrão " senha ") [Ignorado se estiver usando o certificado JMeter]
  • proxy.cert.keypassword - senha da chave do certificado (padrão " senha ") [Ignorado se estiver usando o certificado JMeter]
  • proxy.cert.type - o tipo de certificado (padrão " JKS ") [Ignorado se estiver usando o certificado JMeter]
  • proxy.cert.factory - a fábrica (padrão " SunX509 ") [Ignorado se estiver usando o certificado JMeter]
  • proxy.cert.alias - o alias da chave a ser usada. Se isso for definido, o JMeter não tentará gerar seu(s) próprio(s) certificado(s).
  • proxy.ssl.protocol - o protocolo a ser usado (padrão " SSLv3 ")
Se o seu navegador atualmente usa um proxy (por exemplo, uma intranet da empresa pode rotear todas as solicitações externas por meio de um proxy), você precisa dizer ao JMeter para usar esse proxy antes de iniciar o JMeter, usando as opções de linha de comando -H e -P . Essa configuração também será necessária ao executar o plano de teste gerado.

Instalando o certificado JMeter CA para gravação HTTPS

Como mencionado acima, quando executado no Java 8, o JMeter pode gerar certificados para cada servidor. Para que isso funcione sem problemas, o certificado de assinatura de CA raiz usado pelo JMeter precisa ser confiável pelo navegador. Na primeira vez que o gravador for iniciado, ele gerará os certificados, se necessário. O certificado CA raiz é exportado para um arquivo com o nome ApacheJMeterTemporaryRootCA no diretório de ativação atual. Quando os certificados forem configurados, o JMeter mostrará uma caixa de diálogo com os detalhes do certificado atual. Neste ponto, o certificado pode ser importado para o navegador, conforme instruções abaixo.

Observe que, uma vez que o certificado da CA raiz tenha sido instalado como uma CA confiável, o navegador confiará em todos os certificados assinados por ele. Até que o certificado expire ou o certificado seja removido do navegador, ele não avisará o usuário de que o certificado está sendo confiável. Portanto, qualquer pessoa que possa obter o keystore e a senha pode usar o certificado para gerar certificados que serão aceitos por qualquer navegador que confie no certificado CA raiz do JMeter. Por esse motivo, a senha para o keystore e as chaves privadas são geradas aleatoriamente e um período de validade curto é usado. As senhas são armazenadas na área de preferências locais. Certifique-se de que apenas usuários confiáveis ​​tenham acesso ao host com o keystore.

O pop-up exibido quando você inicia o Gravador é um pop-up informativo:
Popup de certificado de instalação do gravador
Popup de certificado de instalação do gravador
Basta clicar em ok e prosseguir.
Instalando o certificado no Firefox

Escolha as seguintes opções:

  • Ferramentas / Opções
  • Avançado / Certificados
  • Ver certificados
  • Autoridades
  • Importar…
  • Navegue até o diretório de ativação do JMeter e clique no arquivo ApacheJMeterTemporaryRootCA.crt , pressione Abrir
  • Clique em View e verifique se os detalhes do certificado estão de acordo com os exibidos pelo JMeter Test Script Recorder
  • Se estiver OK, selecione " Confiar nesta CA para identificar sites da Web " e pressione OK
  • Feche as caixas de diálogo pressionando OK conforme necessário
Instalando o certificado no Chrome ou Internet Explorer

O Chrome e o Internet Explorer usam o mesmo armazenamento confiável para certificados.

  • Navegue até o diretório de ativação do JMeter e clique no arquivo ApacheJMeterTemporaryRootCA.crt e abra-o
  • Clique na guia " Detalhes " e verifique se os detalhes do certificado estão de acordo com os exibidos pelo JMeter Test Script Recorder
  • Se estiver OK, volte para a guia " Geral ", clique em " Instalar Certificado... " e siga as instruções do Assistente
Instalando o certificado no Opera
  • Ferramentas / Preferências / Avançado / Segurança
  • Gerenciar certificados…
  • Selecione a aba " Intermediário ", clique em " Importar … "
  • Navegue até o diretório de ativação do JMeter e clique no arquivo ApacheJMeterTemporaryRootCA.usr e abra-o
Captura de tela do painel de controle do gravador de script de teste HTTP(S)
Captura de tela do painel de controle do gravador de script de teste HTTP(S)

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Porta
A porta que o Gravador de Script de Teste HTTP(S) escuta. 8888 é o padrão, mas você pode alterá-lo.
Sim
Domínios HTTPS
Lista de nomes de domínio (ou host) para HTTPS. Use isso para pré-gerar certificados para todos os servidores que você deseja gravar.
Por exemplo, *.example.com,*.subdomain.example.com
Observe que os domínios curinga se aplicam apenas a um nível, ou seja, abc.subdomain.example.com corresponde a *.subdomain.example.com, mas não a *.example.com
Não
Controlador de destino
O controlador onde o proxy armazenará as amostras geradas. Por padrão, ele procurará um controlador de gravação e os armazenará onde quer que esteja.
Sim
Agrupamento
Se agrupar amostradores para solicitações de um único "clique" (solicitações recebidas sem separação de tempo significativa) e como representar esse agrupamento na gravação:
  • Não agrupar amostradores - armazene todos os amostradores gravados sequencialmente, sem nenhum agrupamento.
  • Adicione separadores entre grupos - adicione um controlador chamado " -------------- " para criar uma separação visual entre os grupos. Caso contrário, os amostradores são todos armazenados sequencialmente.
  • Coloque cada grupo em um novo controlador - crie um novo Controlador Simples para cada grupo e armazene todos os amostradores desse grupo nele.
  • Armazenar apenas o amostrador de cada grupo - somente o primeiro pedido de cada grupo será registrado. Os sinalizadores " Follow Redirects " e " Retrieve All Embedded Resources... " serão ativados nesses samplers.
  • Coloque cada grupo em um novo controlador de transação - crie um novo controlador de transação para cada grupo e armazene todos os amostradores desse grupo nele.
A propriedade proxy.pause determina o intervalo mínimo que o JMeter precisa entre os pedidos para tratá-los como "cliques" separados. O padrão é 5000 (milissegundos), ou seja, 5 segundos. Se você estiver usando agrupamento, certifique-se de deixar o espaço necessário entre os cliques.
Sim
Capturar cabeçalhos HTTP
Os cabeçalhos devem ser adicionados ao plano? Se especificado, um Header Manager será adicionado a cada HTTP Sampler. O servidor proxy sempre remove os cabeçalhos de Cookie e Autorização dos gerenciadores de cabeçalho gerados. Por padrão, ele também remove os cabeçalhos If-Modified-Since e If-None-Match . Eles são usados ​​para determinar se os itens de cache do navegador estão atualizados; ao gravar normalmente se quer baixar todo o conteúdo. Para alterar quais cabeçalhos adicionais são removidos, defina a propriedade JMeter proxy.headers.remove como uma lista de cabeçalhos separados por vírgula.
Sim
Adicionar declarações
Adicionar uma afirmação em branco a cada amostrador?
Sim
Correspondência de Regex
Use Regex Matching ao substituir variáveis? Se marcada, a substituição usará limites de palavras, ou seja, substituirá apenas valores correspondentes de palavras de variável, não parte de uma palavra. Um limite de palavra segue a definição Perl5 e é equivalente a \b . Mais informações abaixo no parágrafo sobre " Substituição de variável definida pelo usuário ".
Sim
Prefixo/nome da transação
Adicione um prefixo ao nome do amostrador durante a gravação (modo Prefixo). Ou substitua o nome do amostrador pelo nome escolhido pelo usuário (nome da transação)
Não
Esquema de nomenclatura
Selecione o esquema de nomenclatura para nomes de amostradores durante a gravação. O padrão é o nome da transação
Não
Formato de nomenclatura
Se Usar string de formato for selecionado como esquema de nomenclatura, um formato de estilo livre pode ser fornecido. Espaços reservados para o nome da transação, caminho e contador podem ser fornecidos por #{name} , #{path} e #{counter} . Um formato simples poderia ser " #{name}-#{counter} ", que seria equivalente ao esquema de nomenclatura padrão numerado. Para formatação mais complexa, a formatação Java para MessageFormat pode ser usada, como em " #{counter,number,000}: #{name}-#{path} ", que imprimiria o contador preenchido com até três zeros. O padrão é uma string vazia.
Não
Valor inicial do contador
Pode ser usado para redefinir o contador para um determinado valor. Observe que a próxima amostra será incrementada primeiro e, em seguida, usará o valor. Se o primeiro amostrador deve começar com 1 , redefina o contador para 0 .
Não
Criar nova transação após solicitação (ms)
Tempo de inatividade entre dois pedidos necessários para considerá-los em dois grupos separados.
Não
Modelo
Qual tipo de amostrador gerar (o padrão HTTPClient ou Java)
Sim
Redirecionar automaticamente
Definir redirecionamento automático nos amostradores gerados?
Sim
Seguir redirecionamentos
Definir seguir redirecionamentos nos amostradores gerados?
Observação: consulte a seção "Gravação e redirecionamentos" abaixo para obter informações importantes.
Sim
Use Keep-Alive
Defina Use Keep-Alive nos samplers gerados?
Sim
Recupere todos os recursos incorporados
Definir Recuperar todos os recursos incorporados nos amostradores gerados?
Sim
Filtro de tipo de conteúdo
Filtre as solicitações com base no tipo de conteúdo - por exemplo " text/html [;charset=utf-8 ] ". Os campos são expressões regulares que são verificadas para ver se estão contidas no tipo de conteúdo . [Não precisa corresponder ao campo inteiro]. O filtro de inclusão é verificado primeiro, depois o filtro de exclusão. As amostras filtradas não serão armazenadas.
Nota: esta filtragem é aplicada ao tipo de conteúdo da resposta
Não
Padrões a serem incluídos
Expressões regulares que são correspondidas com o URL completo que é amostrado. Permite a filtragem de solicitações que são registradas. Todas as solicitações passam, mas apenas aquelas que atendem aos requisitos dos campos Incluir / Excluir são registradas . Se incluir e excluir forem deixados vazios, tudo será gravado (o que pode resultar em dezenas de amostras gravadas para cada página, como imagens, folhas de estilo, etc. são gravadas).
Se houver pelo menos uma entrada no campo Incluir , somente as solicitações que correspondam a um ou mais padrões Incluir serão registradas
.
Não
Padrões a serem excluídos
Expressões regulares que são correspondidas com a URL que é amostrada.
Quaisquer solicitações que correspondam a um ou mais padrões de exclusão não são registradas
.
Não
Notificar os ouvintes filhos de amostradores filtrados
Notificar os ouvintes filhos de amostradores filtrados
Qualquer resposta que corresponda a um ou mais padrões de exclusão não é entregue aos ouvintes filhos (Exibir árvore de resultados)
.
Não
Botão de início
Inicie o servidor proxy. O JMeter grava a seguinte mensagem no console assim que o servidor proxy for inicializado e estiver pronto para receber solicitações: " Proxy instalado e funcionando! ".
N / D
Botão de parada
Pare o servidor proxy.
N / D
Botão Reiniciar
Para e reinicia o servidor proxy. Isso é útil quando você altera/adiciona/exclui uma expressão de filtro de inclusão/exclusão.
N / D

Gravação e redirecionamentos

Durante a gravação, o navegador seguirá uma resposta de redirecionamento e gerará uma solicitação adicional. O Proxy registrará a solicitação original e a solicitação redirecionada (sujeito a quaisquer exclusões configuradas). As amostras geradas têm " Follow Redirects " selecionado por padrão, porque geralmente é melhor.

Os redirecionamentos podem depender da solicitação original, portanto, repetir a amostra gravada originalmente pode nem sempre funcionar.

Agora, se o JMeter estiver configurado para seguir o redirecionamento durante a reprodução, ele emitirá a solicitação original e, em seguida, reproduzirá a solicitação de redirecionamento que foi gravada. Para evitar essa repetição duplicada, o JMeter tenta detectar quando uma amostra é o resultado de um redirecionamento anterior. Se a resposta atual for um redirecionamento, o JMeter salvará a URL de redirecionamento. Quando a próxima solicitação é recebida, ela é comparada com a URL de redirecionamento salva e, se houver correspondência, o JMeter desabilitará a amostra gerada. Ele também adiciona comentários à cadeia de redirecionamento. Isso pressupõe que todas as solicitações em uma cadeia de redirecionamento seguirão umas às outras sem nenhuma solicitação interveniente. Para desabilitar a detecção de redirecionamento, defina a propriedade proxy.redirect.disabling=false

Inclui e Exclui

Os padrões de inclusão e exclusão são tratados como expressões regulares (usando Jakarta ORO). Eles serão comparados com o nome do host, porta (real ou implícita), caminho e consulta (se houver) de cada solicitação do navegador. Se a URL que você está navegando for
" http://localhost/jmeter/index.html?username=xxxx ",
a expressão regular será testada em relação à string:
" localhost:80/jmeter/index.html?username=xxxx ".
Assim, se você deseja incluir todos os arquivos .html , sua expressão regular pode ser semelhante a:
" .*\.html(\?.*)? " - ou " .*\.html se você souber que não há string de consulta ou você quer apenas páginas html sem strings de consulta.

Se houver algum padrão de inclusão, o URL deverá corresponder a pelo menos um dos padrões , caso contrário, ele não será registrado. Se houver algum padrão de exclusão, o URL não deve corresponder a nenhum dos padrões , caso contrário, ele não será registrado. Usando uma combinação de inclusões e exclusões, você deve ser capaz de registrar o que lhe interessa e pular o que não lhe interessa.

NB a string que corresponde à expressão regular deve ser a mesma que toda a string host+path.
Assim, " \.html " não corresponderá a localhost:80/index.html

Capturando dados binários do POST

O JMeter é capaz de capturar dados binários do POST. Para configurar quais tipos de conteúdo são tratados como binários, atualize a propriedade do JMeter proxy.binary.types . As configurações padrão são as seguintes:

# Esses tipos de conteúdo serão tratados salvando a solicitação em um arquivo:
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# Os arquivos serão salvos neste diretório:
proxy.binary.directory=user.dir
# Os arquivos serão criados com este arquivo filesuffix:
proxy.binary.filesuffix=.binary

Adicionando temporizadores

Também é possível que o proxy adicione temporizadores ao script gravado. Para fazer isso, crie um timer diretamente no componente HTTP(S) Test Script Recorder. O proxy colocará uma cópia desse cronômetro em cada amostra registrada ou na primeira amostra de cada grupo se você estiver usando agrupamento. Esta cópia será então escaneada para ocorrências da variável ${T} em suas propriedades, e tais ocorrências serão substituídas pelo intervalo de tempo do amostrador anterior registrado (em milissegundos).

Quando estiver pronto para começar, clique em " iniciar ".

Você precisará editar as configurações de proxy do seu navegador para apontar para o servidor e porta apropriados, onde o servidor é a máquina em que o JMeter está sendo executado e o número da porta é do Painel de Controle de Proxy mostrado acima.

Onde as amostras são gravadas?

O JMeter coloca as amostras gravadas no controlador de destino que você escolher. Se você escolher a opção padrão " Usar Controlador de Gravação ", eles serão armazenados no primeiro Controlador de Gravação encontrado na árvore de objetos de teste (portanto, certifique-se de adicionar um Controlador de Gravação antes de iniciar a gravação).

Se o Proxy parece não registrar nenhuma amostra, isso pode ser porque o navegador não está realmente usando o proxy. Para verificar se este é o caso, tente parar o proxy. Se o navegador ainda baixa as páginas, então ele não estava enviando solicitações por meio do proxy. Verifique novamente as opções do navegador. Se você estiver tentando gravar de um servidor rodando no mesmo host, verifique se o navegador não está definido como " Ignorar servidor proxy para endereços locais " (este exemplo é do IE7, mas haverá opções semelhantes para outros navegadores). Se o JMeter não registrar URLs de navegador como http://localhost/ ou http://127.0.0.1/ , tente usar o nome de host ou endereço IP sem loopback, por exemplo, http://myhost/ ou http://192.168. 0,2/ .

Manipulação de padrões de solicitação HTTP

Se o HTTP(S) Test Script Recorder encontrar padrões de solicitação HTTP habilitados diretamente no controlador onde as amostras estão sendo armazenadas ou diretamente em qualquer um de seus controladores pai, as amostras gravadas terão campos vazios para os valores padrão que você especificou. Você pode controlar ainda mais esse comportamento colocando um elemento HTTP Request Defaults diretamente no HTTP(S) Test Script Recorder, cujos valores não em branco substituirão aqueles nos outros HTTP Request Defaults. Consulte Práticas recomendadas com o gravador de script de teste HTTP(S) para obter mais informações.

Substituição de variável definida pelo usuário

Da mesma forma, se o HTTP(S) Test Script Recorder encontrar variáveis ​​definidas pelo usuário (UDV) diretamente no controlador onde as amostras estão sendo armazenadas, ou diretamente em qualquer um de seus controladores pai, as amostras gravadas terão quaisquer ocorrências dos valores dessas variáveis substituído pela variável correspondente. Novamente, você pode colocar as Variáveis ​​Definidas pelo Usuário diretamente no Gravador de Script de Teste HTTP(S) para substituir os valores a serem substituídos. Consulte Práticas recomendadas com o Gravador de script de teste para obter mais informações.

Observe que a correspondência diferencia maiúsculas de minúsculas.

Substituição por Variáveis: por padrão, o servidor Proxy procura todas as ocorrências de valores UDV. Se você definir a variável WEB com o valor www , por exemplo, a string www será substituída por ${WEB} onde quer que seja encontrada. Para evitar que isso aconteça em todos os lugares, defina a caixa de seleção " Regex Matching ". Isso diz ao servidor proxy para tratar os valores como Regexes (usando os correspondentes regex compatíveis com perl5 fornecidos pelo ORO).

Se " Regex Matching " for selecionado, cada variável será compilada em um regex compatível com perl incluído em \b( e )\b . Dessa forma, cada correspondência começará e terminará em um limite de palavra.

Observe que os caracteres de limite não fazem parte do grupo de correspondência, por exemplo, n.* para corresponder nome de Você pode me chamar de 'nome' .

Se você não quiser que seu regex seja colocado entre os correspondentes de limite, você deve incluir seu regex entre parênteses, por exemplo ('.*?') para combinar 'name' de Você pode me chamar de 'name' .

As variáveis ​​serão verificadas em ordem aleatória. Portanto, certifique-se de que as correspondências em potencial não se sobreponham. Os correspondentes sobrepostos seriam .* (que corresponde a qualquer coisa) e www (que corresponde apenas a www ). Matchers não sobrepostos seriam a+ (corresponde a uma sequência de a 's) e b+ (corresponde a uma sequência de b 's).

Se você quiser corresponder apenas a uma string inteira, coloque-a entre (^ e $) , por exemplo (^thus$) . Os parênteses são necessários, pois os caracteres de limite normalmente adicionados impedirão que ^ e $ correspondam.

Se você deseja corresponder /images apenas no início de uma string, use o valor (^/images) . O Jakarta ORO também suporta a antecipação de largura zero, portanto, pode-se corresponder /images/… mas reter o / à direita na saída usando (^/images(?=/)) .

Observe que a versão atual do Jakarta ORO não suporta look-behind - ie (?<=…) ou (?<!…) .

Fique atento aos matchers sobrepostos. Por exemplo, o valor .* como regex em uma variável chamada regex corresponderá parcialmente a uma variável substituída anteriormente, o que resultará em algo como ${{regex} , que provavelmente não é o resultado desejado.

Se houver algum problema ao interpretar quaisquer variáveis ​​como padrões, eles serão relatados em jmeter.log , portanto, verifique isso se os UDVs não estiverem funcionando conforme o esperado.

Quando terminar de gravar suas amostras de teste, pare o servidor proxy (pressione o botão " parar "). Lembre-se de redefinir as configurações de proxy do seu navegador. Agora, você pode querer classificar e reordenar o script de teste, adicionar temporizadores, ouvintes, um gerenciador de cookies etc.

Como posso gravar as respostas do servidor também?

Basta colocar um listener View Results Tree como filho do HTTP(S) Test Script Recorder e as respostas serão exibidas. Você também pode adicionar um Salvar respostas a um arquivo pós-processador que salvará as respostas em arquivos.

Associando solicitações com respostas

Se você definir a propriedade proxy.number.requests=true , o JMeter incluirá um número em cada amostrador e em cada resposta. Observe que pode haver mais respostas do que amostradores se exclusões ou inclusões tiverem sido usadas. As respostas que foram excluídas terão rótulos entre [ e ], por exemplo [23 /favicon.ico]

Gerenciador de cookies

Se o servidor que você está testando usar cookies, lembre-se de adicionar um Gerenciador de cookies HTTP ao plano de teste quando terminar de gravá-lo. Durante a gravação, o navegador manipula quaisquer cookies, mas o JMeter precisa de um Cookie Manager para fazer o tratamento de cookies durante uma execução de teste. O servidor JMeter Proxy transmite todos os cookies enviados pelo navegador durante a gravação, mas não os salva no plano de teste porque é provável que eles mudem entre as execuções.

Gerente de autorização

O HTTP(S) Test Script Recorder pega o cabeçalho " Autenticação " e tenta calcular a Política de autenticação. Se o Authorization Manager foi adicionado ao controlador de destino manualmente, o HTTP(S) Test Script Recorder o encontrará e adicionará autorização (os correspondentes serão removidos). Caso contrário, o Authorization Manager será adicionado ao controlador de destino com o objeto de autorização. Você pode ter que corrigir valores calculados automaticamente após a gravação.

Fazendo upload de arquivos

Alguns navegadores (por exemplo, Firefox e Opera) não incluem o nome completo de um arquivo ao fazer upload de arquivos. Isso pode fazer com que o servidor proxy JMeter falhe. Uma solução é garantir que todos os arquivos a serem carregados estejam no diretório de trabalho do JMeter, copiando os arquivos para lá ou iniciando o JMeter no diretório que contém os arquivos.

Gravando protocolos não textuais baseados em HTTP não disponíveis nativamente no JMeter

Você pode ter que gravar um protocolo HTTP que não é tratado por padrão pelo JMeter (Protocolo Binário Personalizado, Adobe Flex, Microsoft Silverlight, …). Embora o JMeter não forneça uma implementação de proxy nativa para registrar esses protocolos, você pode gravar esses protocolos implementando um SamplerCreator . Este Sampler Creator traduzirá o formato binário em uma subclasse HTTPSamplerBase que pode ser adicionada ao Caso de Teste JMeter. Para obter mais detalhes, consulte "Estendendo o JMeter".

^

Servidor HTTP Mirror¶

O HTTP Mirror Server é um servidor HTTP muito simples - ele simplesmente espelha os dados enviados a ele. Isso é útil para verificar o conteúdo de solicitações HTTP.

Ele usa a porta padrão 8081 .

Captura de tela do painel de controle do servidor HTTP Mirror
Captura de tela do painel de controle do servidor HTTP Mirror

Parâmetros

Atributo
Descrição
Requeridos
Porta
A porta na qual o servidor Mirror atende, o padrão é 8081 .
Sim
Número máximo de threads
Se configurado para um valor > 0 , o número de threads que atendem as solicitações será limitado ao número configurado, se configurado para um valor ≤ 0 um novo thread será criado para atender a cada solicitação recebida. Padrões para 0
Não
Tamanho máximo da fila
Tamanho da fila usada para manter as tarefas antes de serem executadas pelo Thread Pool, quando o Thread pool for excedido, as solicitações recebidas serão retidas nesta fila e descartadas quando esta fila estiver cheia. Este parâmetro só é usado se o número máximo de threads for maior que 0 . Padrões para 25
Não
Observe que você pode obter mais controle sobre as respostas adicionando um gerenciador de cabeçalho HTTP com os seguintes pares de nome/valor:

Parâmetros

Atributo
Descrição
Requeridos
X-Sleep
Tempo para dormir em ms antes de enviar a resposta
Não
X-SetCookie
Cookies a serem definidos na resposta
Não
X-ResponseStatus
Status da resposta, consulte Respostas de status HTTP , exemplo 200 OK, 500 Internal Server Error, ….
Não
X-ResponseComprimento
Tamanho da resposta, isso reduz a resposta para o tamanho solicitado se for menor que o tamanho total
Não
Cabeçalhos X-Set
Lista de cabeçalhos separados por pipe, exemplo:
headerA: valueA|headerB: valueB definiria headerA para valueA e headerB para valueB .
Não

Você também pode usar os seguintes parâmetros de consulta:

Parâmetros

Atributo
Descrição
Requeridos
redirecionar
Gera um 302 (Redirecionamento Temporário) com o local fornecido, por exemplo ?redirect=/path
Não
status
Substitui o retorno de status padrão, por exemplo, ?status=404 Not Found
Não
v
Sinalizador detalhado, grava alguns detalhes na saída padrão, por exemplo, primeira linha e redireciona o local, se especificado
Não
^

Exibição de propriedade

A Exibição de Propriedades mostra os valores das propriedades System ou JMeter. Os valores podem ser alterados inserindo um novo texto na coluna Valor.

Captura de tela do painel de controle da exibição da propriedade
Captura de tela do Painel de Controle da Exibição da Propriedade

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
^

Amostrador de Depuração

O Debug Sampler gera uma amostra contendo os valores de todas as variáveis ​​e/ou propriedades do JMeter.

Os valores podem ser vistos no painel Exibir dados de resposta do ouvinte da árvore de resultados .

Captura de tela do painel de controle do amostrador de depuração
Captura de tela do painel de controle do amostrador de depuração

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Propriedades do JMeter
Incluir propriedades JMeter?
Sim
Variáveis ​​JMeter
Incluir variáveis ​​JMeter?
Sim
Propriedades do sistema
Incluir propriedades do sistema?
Sim
^

Depurar PostProcessor

O Debug PostProcessor cria uma subamostra com os detalhes das propriedades anteriores do Sampler, variáveis ​​JMeter, propriedades e/ou Propriedades do sistema.

Os valores podem ser vistos no painel Exibir dados de resposta do ouvinte da árvore de resultados .

Captura de tela do painel de controle do Debug PostProcessor
Captura de tela do painel de controle do Debug PostProcessor

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Não
Propriedades do JMeter
Se as propriedades do JMeter devem ser mostradas (padrão false ).
Sim
Variáveis ​​JMeter
Se as variáveis ​​JMeter devem ser mostradas (padrão false ).
Sim
Propriedades do amostrador
Se as propriedades do Sampler devem ser mostradas (padrão true ).
Sim
Propriedades do sistema
Se as propriedades do sistema devem ser mostradas (padrão false ).
Sim
^

Fragmento de Teste

O Fragmento de Teste é usado em conjunto com o Controlador de Inclusão e o Controlador de Módulo .

Captura de tela do painel de controle do fragmento de teste
Captura de tela do painel de controle do fragmento de teste

Parâmetros

Atributo
Descrição
Requeridos
Nome
Nome descritivo para este elemento que é mostrado na árvore.
Sim
Ao usar o Fragmento de Teste com o Module Controller , certifique-se de desabilitar o Fragmento de Teste para evitar a execução do próprio Fragmento de Teste. Isso é feito por padrão desde o JMeter 2.13.
^

configurar Grupo de Tópicos

Um tipo especial de ThreadGroup que pode ser utilizado para executar ações de pré-teste. O comportamento dessas threads é exatamente como um elemento normal do Thread Group . A diferença é que esses tipos de threads são executados antes que o teste prossiga para a execução de Thread Groups regulares.

Captura de tela do painel de controle do grupo de threads de configuração
Captura de tela do painel de controle do grupo de threads de configuração
^

Grupo de tópicos de desmontagem

Um tipo especial de ThreadGroup que pode ser utilizado para executar ações pós-teste. O comportamento dessas threads é exatamente como um elemento normal do Thread Group . A diferença é que esses tipos de threads são executados após o teste terminar de executar seus grupos de threads regulares.

Captura de tela do painel de controle do grupo de threads de desmontagem
Captura de tela do painel de controle do grupo de threads de desmontagem
Observe que, por padrão, ele não será executado se o teste for desligado normalmente, se você quiser executá-lo neste caso, certifique-se de marcar a opção " Executar grupos de threads de desmontagem após o desligamento dos threads principais " no elemento Plano de Teste. Se o Plano de Teste for interrompido, o tearDown não será executado mesmo se a opção estiver marcada.
Figura 1 - Executar grupos de threads de desmontagem após o desligamento dos threads principais
Figura 1 - Executar grupos de threads de desmontagem após o desligamento dos threads principais
^
^
Go to top