-
18 Introdução
-
18.1 Amostradores
- Solicitação de FTP
- Solicitação HTTP
- Solicitação JDBC
- Solicitação Java
- Solicitação LDAP
- Solicitação estendida de LDAP
- Amostrador de log de acesso
- Amostrador BeanShell
- Amostrador JSR223
- Amostrador TCP
- Editora JMS
- Assinante JMS
- JMS ponto a ponto
- Solicitação de JUnit
- Amostrador de Leitor de Correio
- Ação de controle de fluxo (era: Ação de teste)
- Amostrador SMTP
- Amostrador de processos do SO
- Script MongoDB (OBSOLETO)
- Solicitação de Parafuso
-
18.2 Controladores Lógicos
- Controlador simples
- Controlador de loop
- Uma vez apenas controlador
- Controlador de intercalação
- Controlador Aleatório
- Controlador de ordem aleatória
- Controlador de taxa de transferência
- Controlador de tempo de execução
- Se Controlador
- Enquanto Controlador
- Controlador de interruptor
- Para Cada Controlador
- Controlador de módulo
- Incluir controlador
- Controlador de transações
- Controlador de Gravação
- Controlador de Seção Crítica
-
18.3 Ouvintes
- Configuração de Salvamento de Resultado de Amostra
- Resultados do gráfico
- Resultados da declaração
- Ver árvore de resultados
- Relatório agregado
- Ver resultados na tabela
- Gravador de dados simples
- Gráfico agregado
- Gráfico de tempo de resposta
- Visualizador de mala direta
- BeanShell Listener
- Relatório resumido
- Salvar respostas em um arquivo
- Ouvinte JSR223
- Gerar resultados resumidos
- Visualizador de declaração de comparação
- Ouvinte de back-end
-
18.4 Elementos de Configuração
- Configuração do conjunto de dados CSV
- Padrões de solicitação de FTP
- Gerenciador de cache DNS
- Gerenciador de autorização HTTP
- Gerenciador de cache HTTP
- Gerenciador de cookies HTTP
- Padrões de solicitação HTTP
- Gerenciador de cabeçalho HTTP
- Padrões de solicitação Java
- Configuração de conexão JDBC
- Configuração do armazenamento de chaves
- Elemento de configuração de login
- Padrões de solicitação LDAP
- Padrões de solicitação estendida do LDAP
- Configuração do Amostrador TCP
- Variáveis definidas pelo usuário
- Variável aleatória
- Contador
- Elemento de configuração simples
- Configuração de origem do MongoDB (OBSOLETO)
- Configuração de conexão de parafuso
- 18.5 Afirmações
- 18.6 Temporizadores
- 18.7 Pré Processadores
- 18.8 Pós-processadores
-
18.9 Recursos Diversos
- Plano de teste
- Grupo de tópicos
- Bancada de trabalho
- Gerenciador de SSL
- Gravador de script de teste HTTP(S) (era: HTTP Proxy Server )
- Servidor de espelho HTTP
- Exibição de propriedade
- Amostrador de depuração
- Pós-processador de depuração
- Fragmento de teste
- Configurar Grupo de Tópicos
- Grupo de tópicos de desmontagem
18 Introdução ¶
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 ¶
A latência é definida para o tempo que leva para fazer login.
Parâmetros ¶
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
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=truePor 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
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.
Parâmetros ¶
- é fornecido por HTTP Request Defaults
- ou um URL completo incluindo esquema, host e porta ( esquema://host:port ) é definido no campo Caminho
Uma Asserção de Duração pode ser usada para detectar respostas que demoram muito para serem concluídas.
Mais métodos podem ser predefinidos para o HttpClient4 usando a propriedade JMeter httpsampler.user_defined_methods .
"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
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: ' ', ' < ', ' > ', ' # ', ' % ', …
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.
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.)
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.
Os parâmetros a seguir estão disponíveis apenas para solicitação HTTP do GraphQL :
Parâmetros ¶
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
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.)
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=0No entanto, o amostrador Java suporta apenas conexões HTTPS lentas.
Cálculo do tamanho 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
httpclient4.request_sent_retry_enabled=true
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.
- Afirmação
- Construindo um Plano de Teste da Web
- Construindo um Plano Avançado de Teste da Web
- Gerenciador de autorização HTTP
- Gerenciador de cookies HTTP
- Gerenciador de cabeçalho HTTP
- Analisador de links HTML
- Gravador de script de teste HTTP(S)
- Padrões de solicitação HTTP
- Solicitações HTTP e IDs de sessão: reescrita de URL
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.
Parâmetros ¶
- 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
- 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
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: "
Estes são definidos como campos na classe java.sql.Types , veja por exemplo:
Javadoc para java.sql.Types .
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.
columnValue = vars.getObject("resultObject").get(0).get("Nome da coluna");
- 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.
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.
Parâmetros ¶
Os parâmetros a seguir se aplicam às implementações SleepTest e JavaTest :
Parâmetros ¶
O tempo de sono é calculado da seguinte forma:
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)
Os parâmetros a seguir se aplicam adicionalmente à implementação do JavaTest :
Parâmetros ¶
Solicitação 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.Há duas maneiras de criar casos de teste para testar um servidor LDAP.
- Casos de teste embutidos.
- Casos de teste definidos pelo usuário.
Há quatro cenários de teste de teste do LDAP. Os testes são dados abaixo:
- Adicionar teste
- 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.
- 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.
- Teste embutido:
- Modificar teste
- 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.
- 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.
- Teste embutido:
- Teste de pesquisa
- 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.
- 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.
- Teste embutido:
- Excluir teste
- Teste embutido:
Isso criará primeiro uma entrada predefinida e, em seguida, será excluída do servidor LDAP. O tempo de execução é calculado.
- 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.
- Teste embutido:
Parâmetros ¶
Solicitação Estendida 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 estendida do LDAP para não precisar inserir as mesmas informações para cada solicitação 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoNome do servidorO nome (ou endereço IP) do servidor LDAP.SimPortaO 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ãoDNO 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ãoNome de usuárioNome distinto completo do usuário ao qual você deseja vincular.NãoSenhaSenha 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ãoTempo limite de conexão (em milissegundos)Tempo limite para conexão, se a conexão for excedida será abortadaNãoUsar protocolo LDAP seguroUse o esquema ldaps:// em vez de ldap://NãoConfiar em todos os certificadosConfiar em todos os certificados, usado apenas se Usar protocolo LDAP seguro estiver marcadoNão - Desvincular thread
-
Esta é simplesmente a operação para encerrar uma sessão. É igual à operação " unbind " do LDAP.
Parâmetros
AtributoDescriçãoRequeridosNomeNome 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoNome de usuárioNome distinto completo do usuário ao qual você deseja vincular.SimSenhaSenha 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoNome de entrada antigoO nome distinto atual do objeto que você deseja renomear ou mover, em relação ao DN fornecido na operação de encadeamento.SimNovo nome distintoO 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoDN de entradaNome distinto do objeto que você deseja adicionar, em relação ao DN fornecido na operação de encadeamento.SimAdicionar testeUma 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoExcluirNome 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoBase de pesquisaNome 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ãoFiltro de pesquisasearchfilter, deve ser especificado na sintaxe LDAP.SimAlcanceUse 0 para baseobject-, 1 para onelevel- e 2 para uma pesquisa de subárvore. (Padrão= 0 )NãoLimite de tamanhoEspecifique 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 4NãoLimite de tempoEspecifique 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ãoAtributosEspecifique os atributos que você deseja que sejam retornados, separados por ponto e vírgula. Um campo vazio retornará todos os atributosNãoDevolver objetoSe o objeto será retornado ( true ) ou não ( false ). padrão = falsoNãoDesreferenciar aliasesSe true , desreferenciará os aliases, se false , não os seguirá (default= false )NãoAnalisar 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoNome da entradaNome distinto do objeto que você deseja modificar, em relação ao DN fornecido na operação de ligação de encadeamentoSimTeste de modificaçãoO 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
AtributoDescriçãoRequeridosNomeNome descritivo para este amostrador que é mostrado na árvore.NãoDN de entradaO nome distinto atual do objeto do qual você deseja comparar um atributo, relativo ao DN fornecido na operação de encadeamento.SimComparar filtroNo 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
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 .
(Código Beta)
Parâmetros ¶
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.
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.
Parâmetros ¶
- 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
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.
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.
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:
jsr223.compiled_scripts_cache_size=100
props.get("START.HMS"); props.put("PROP1","1234");
Parâmetros ¶
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.
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
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
- 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 soquetes são desconectados no final de uma execução de teste.
Parâmetros ¶
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.
Parâmetros ¶
- 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
- 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
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
nome, String, Exemplo tamanho, inteiro, 1234
- 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
A tabela a seguir mostra alguns valores que podem ser úteis ao configurar o JMS:
Apache ActiveMQ | Valor(es) | Comente |
---|---|---|
Fábrica de contexto | org.apache.activemq.jndi.ActiveMQInitialContextFactory | . |
URL do provedor | vm://localhost | |
URL do provedor | vm:(corretor:(vm://localhost)?persistent=false) | Desativar persistência |
Referência da fila | dynamicQueues/QUEUENAME | Defina dinamicamente o QUEUENAME para JNDI |
Referência do tópico | dynamicTopics/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.
Parâmetros ¶
- 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.
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
Parâmetros ¶
- 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.
- 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.
- 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.
Solicitação JUnit¶
- 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 ".
classe pública meuTestCase { public myTestCase() {} }Construtor de strings:
classe pública meuTestCase { public myTestCase(String texto) { super(texto); } }
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 .
Parâmetros ¶
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
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).
Parâmetros ¶
Caso contrário, no diretório que contém o script de teste (arquivo JMX).
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) ¶
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.
Parâmetros ¶
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.
Parâmetros ¶
Caso contrário, no diretório que contém o script de teste (arquivo JMX).
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
Parâmetros ¶
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
Parâmetros ¶
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.
Parâmetros ¶
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.
Parâmetros ¶
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.
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.
Parâmetros ¶
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.
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.
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.
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.
Parâmetros ¶
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.
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.
Parâmetros ¶
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.
Iteração de loop | Cada thread JMeter envia essas solicitações HTTP |
---|---|
1 | Página de notícias |
1 | Página de registro |
2 | Página de perguntas frequentes |
2 | Página de registro |
3 | Página Gump |
3 | Página de registro |
4 | Como 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. |
4 | Página de registro |
5 | Página de perguntas frequentes |
5 | Página de registro |
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.
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.
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.
Parâmetros ¶
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.
Parâmetros ¶
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.
Parâmetros ¶
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).
Parâmetros ¶
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}
- Opção 2: Use uma função ( ${__jexl3()} é recomendado) para avaliar uma expressão que deve retornar verdadeiro ou falso
"${minhaVar}" == "\${minhaVar}"Ou use:
"${minhaVar}" != "\${minhaVar}"para testar se uma variável está definida e não é nula.
Parâmetros ¶
- ${COUNT} < 10
- "${VAR}" == "abcd"
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.
- ${__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 ".
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 "
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
Parâmetros ¶
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.
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.
Parâmetros ¶
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.
É 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.
Parâmetros ¶
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.
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.
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
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.
Parâmetros ¶
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.
No entanto, se a propriedade includecontroller.prefix for definida, o conteúdo será usado para prefixar o nome do caminho.
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.
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.
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.
Parâmetros ¶
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.
Parâmetros ¶
Controlador de Seção Crítica ¶
O Controlador de Seção Crítica garante que seus elementos filhos (amostradores/controladores, etc.)
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
Parâmetros ¶
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.
Se você quiser limpar qualquer dado atual antes de carregar um novo arquivo, use o item de menu
ou 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 .
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.
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 .
A figura abaixo mostra um exemplo do painel de configuração do arquivo de resultado
Parâmetros
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 ".
Resultados do gráfico ¶
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.
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 ¶
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.
Exibir Árvore de Resultados ¶
Existem várias maneiras de visualizar a resposta, selecionáveis por uma caixa suspensa na parte inferior do painel esquerdo.
Renderizador | Descriçã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 1º 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
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 ).
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.
Relatório Agregado ¶
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.
- 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.
A figura abaixo mostra um exemplo de seleção da caixa de seleção " Incluir nome do grupo ".
Visualizar resultados na tabela ¶
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.
Gravador de Dados Simples ¶
Gráfico Agregado ¶
A figura abaixo mostra um exemplo de configurações para desenhar este gráfico.
Parâmetros ¶
- 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.
Gráfico de tempo de resposta ¶
A figura abaixo mostra um exemplo de configurações para desenhar este gráfico.
Parâmetros ¶
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.
Parâmetros ¶
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.
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.
Parâmetros ¶
- 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
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¶
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.
A figura abaixo mostra um exemplo de seleção da caixa de seleçã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.
Parâmetros ¶
Se as pastas pai no prefixo não existirem, o JMeter as criará e interromperá o teste se falhar.
Ouvinte JSR223 ¶
O Ouvinte JSR223 permite que o código de script JSR223 seja aplicado aos resultados de amostra.
Parâmetros ¶
- 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
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 ¶
# 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=trueEste 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.
Isso não é um bug, mas uma escolha de design que permite resumir entre grupos de threads.
Parâmetros ¶
Visualizador de Asserção de Comparação ¶
Parâmetros ¶
Ouvinte de back-end ¶
Parâmetros ¶
Os parâmetros a seguir se aplicam à implementação do GraphiteBackendListenerClient :
Parâmetros ¶
Consulte também Resultados em tempo real para obter mais detalhes.
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 ¶
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 ¶
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 ".
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.
Parâmetros ¶
- 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.
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.
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 .
Parâmetros ¶
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
Parâmetros ¶
- Java
- BÁSICO
- HttpClient 4
- BASIC , DIGEST e Kerberos
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.
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 ".
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.
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.
Parâmetros ¶
Gerenciador de Cookies HTTP¶
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.
Parâmetros ¶
[Observação: se você tiver um site para testar com endereço IPv6, escolha HC4CookieHandler (compatível com IPv6)]
O " domínio " é o nome do host do servidor (sem http:// ); a porta é ignorada no momento.
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.
Parâmetros ¶
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.
Parâmetros ¶
Padrões de Solicitação Java ¶
O componente Java Request Defaults permite definir valores padrão para teste Java. Consulte a Solicitação Java .
Configuração de Conexão JDBC ¶
Parâmetros ¶
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.
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
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
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]
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:
- Crie seus certificados com o utilitário Java keytool ou através de seu PKI
- Se criado por PKI, importe suas chaves no Java Key Store convertendo-as em um formato aceitável por JKS
- 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 .
Parâmetros ¶
- 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.
Parâmetros ¶
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 .
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 .
Configuração do Amostrador TCP¶
O TCP Sampler Config fornece dados padrão para o TCP Sampler
Parâmetros ¶
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 .
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.
Parâmetros ¶
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.
Parâmetros ¶
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 .
Parâmetros ¶
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.
Parâmetros ¶
Configuração de origem do MongoDB (OBSOLETO) ¶
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"); …
Parâmetros ¶
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).
- 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.
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.
O padrão é 0 , o que significa usar o padrão 15s se autoConnectRetry estiver ativado.
O padrão é 120.000 .
O padrão é 0 e significa que não há tempo limite.
O padrão é false .
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 .
Se w , wtimeout , fsync ou j forem especificados, essa configuração será ignorada.
O padrão é falso .
O padrão é falso .
O padrão é falso .
O padrão é 0 .
O padrão é 0 .
Configuração de Conexão de Parafuso ¶
Parâmetros ¶
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.
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:
ou o seguinteSe 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.
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
- (?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.
Parâmetros ¶
- 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
- 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 ).
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.- 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)
O padrão é uma expressão regular no estilo Perl5, mas sem os colchetes.
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.
Parâmetros ¶
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.
Parâmetros ¶
- 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
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.
Parâmetros ¶
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.
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.
Parâmetros ¶
- 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
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.
Parâmetros ¶
Asserção HTML¶
A Asserção HTML permite que o usuário verifique a sintaxe HTML dos dados de resposta usando JTidy.
Parâmetros ¶
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
Parâmetros ¶
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
Parâmetros ¶
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.
Parâmetros ¶
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 ¶
- 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
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 ¶
Parâmetros ¶
Asserção SMIME ¶
- bcmail-xxx.jar (BouncyCastle SMIME/CMS)
- bcprov-xxx.jar (Provedor 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.
Parâmetros ¶
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.
Parâmetros ¶
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.
Parâmetros ¶
18.6 Temporizadores ¶
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:
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.
Parâmetros ¶
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.
Parâmetros ¶
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.
Parâmetros ¶
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.
Parâmetros ¶
- 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.
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.
Parâmetros ¶
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.
Parâmetros ¶
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.
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.
Parâmetros ¶
- 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
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 ¶
- 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
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 .
Parâmetros ¶
18.7 Pré Processadores ¶
Os pré-processadores são usados para modificar os Samplers em seu escopo.
Analisador de links HTML ¶
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.
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.
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.
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 .
Parâmetros ¶
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
Parâmetros ¶
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.
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.
Parâmetros ¶
- 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
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 ¶
- 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
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 ".
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
Parâmetros ¶
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
- 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)
- 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.]
Parâmetros ¶
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.
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.
Parâmetros ¶
- 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
- 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
- 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.
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.
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.
Parâmetros ¶
- 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
- 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)
- …
Esta é a função Element#attr(name) equivalente para JSoup se um atributo for definido.
Se vazio, isso é o equivalente da função Element#text() para JSoup, se não for definido o valor para o atributo.
- 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.
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.
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 ¶
Parâmetros ¶
- 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
Por exemplo //title retornaria " <title>Apache JMeter</title> " em vez de " Apache JMeter ".
Neste caso, //title/text() retornaria " Apache JMeter ".
- 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
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 2º 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 2ª página do primeiro livro for igual à 2ª página do 2º livro, senão retornar -1.
Para ver mais informações sobre essas funções, verifique as funções xPath2
Extrator XPath ¶
Parâmetros ¶
- 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
- " 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)
Por exemplo //title retornaria " <title>Apache JMeter</title> " em vez de " Apache JMeter ".
Neste caso, //title/text() retornaria " Apache JMeter ".
- 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
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 1ª , 2ª 3ª correspondência etc.
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 2ª 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 '
- 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
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 ¶
Parâmetros ¶
- 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
- 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
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 ¶
Parâmetros ¶
- 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.
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.
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.
Parâmetros ¶
- 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
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 ¶
- 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
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.
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 ¶
- 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
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.
Parâmetros ¶
- 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
- 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
- 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.
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.
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.
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.
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.
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.
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.
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.
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:
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)
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 ¶
- 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.
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.
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.
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 .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.
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 '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 observarVocê 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: (
).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.
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.
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.
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.
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 ")
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.
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
Parâmetros ¶
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 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 1º 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.
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.
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.
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 ".
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.
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.
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' .
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(?=/)) .
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 .
Parâmetros ¶
Parâmetros ¶
headerA: valueA|headerB: valueB definiria headerA para valueA e headerB para valueB .
Você também pode usar os seguintes parâmetros de consulta:
Parâmetros ¶
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.
Parâmetros ¶
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 .
Parâmetros ¶
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 .
Parâmetros ¶
Fragmento de Teste ¶
O Fragmento de Teste é usado em conjunto com o Controlador de Inclusão e o Controlador de Módulo .
Parâmetros ¶
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.
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.