12. Introdução aos ouvintes ¶
Um ouvinte é um componente que mostra os resultados das amostras. Os resultados podem ser mostrados em uma árvore, tabelas, gráficos ou simplesmente gravados em um arquivo de log. Para visualizar o conteúdo de uma resposta de qualquer amostrador, inclua um dos Ouvintes " Exibir árvore de resultados " ou " Exibir resultados na tabela " a um plano de teste. Para visualizar o tempo de resposta graficamente, adicione os resultados do gráfico. A seção de ouvintes da página de componentes tem descrições completas de todos os ouvintes.
O botão " Configurar " pode ser usado para especificar quais campos devem ser gravados no arquivo e se devem ser gravados como CSV ou XML. Os arquivos CSV são muito menores que os arquivos XML, portanto, use CSV se estiver gerando muitas amostras.
O nome do arquivo pode ser especificado usando um nome de caminho relativo ou absoluto. Os caminhos relativos são resolvidos em relação ao diretório de trabalho atual (que tem como padrão o diretório bin/ ). O JMeter também suporta caminhos relativos ao diretório que contém o plano de teste atual (arquivo JMX). Se o nome do caminho começar com " ~/ " (ou o que estiver na propriedade JMeter jmeter.save.saveservice.base_prefix ), o caminho será considerado relativo ao local do arquivo JMX.
Se você deseja gravar apenas alguns samples, adicione o Listener como filho do sampler. Ou você pode usar um Simple Controller para agrupar um conjunto de samplers e adicionar o Listener a ele. O mesmo nome de arquivo pode ser usado por vários samplers - mas certifique-se de que todos usem a mesma configuração!
12.1 Configuração Padrão ¶
Os itens padrão a serem salvos podem ser definidos no arquivo jmeter.properties (ou user.properties ). As propriedades são usadas como as configurações iniciais para o pop-up Listener Config e também são usadas para o arquivo de log especificado pelo sinalizador de linha de comando -l (comumente usado para execuções de teste do modo CLI).
Para alterar o formato padrão, localize a seguinte linha em jmeter.properties :
jmeter.save.saveservice.output_format=
As informações a serem salvas são configuráveis. Para obter o máximo de informações, escolha " xml " como formato e especifique " Modo de teste funcional " no elemento Plano de teste. Se esta caixa não estiver marcada, os dados salvos padrão incluirão um carimbo de hora (o número de milissegundos desde a meia-noite de 1º de janeiro de 1970 UTC), o tipo de dados, o nome do encadeamento, o rótulo, o tempo de resposta, a mensagem e o código, e um indicador de sucesso. Se marcado, todas as informações, incluindo os dados de resposta completos, serão registradas.
O exemplo a seguir indica como definir propriedades para obter um formato delimitado por barra vertical (" | ") que produzirá resultados como:.
timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage 02/06/03 08:21:42|1187|Home|200|Thread Group-1|text|true| 02/06/03 08:21:42|47|Login|200|Thread Group-1|text|false|Teste falhou: deve conter: senha etc.
Os jmeter.properties correspondentes que precisam ser configurados são mostrados abaixo. Uma curiosidade neste exemplo é que o output_format é definido como csv , que normalmente indica valores separados por vírgula. No entanto, o default_delimiter foi definido como uma barra vertical em vez de uma vírgula, portanto, a tag csv é um nome incorreto neste caso. (Pense em CSV como significando valores separados por caracteres)
jmeter.save.saveservice.output_format=csv jmeter.save.saveservice.assertion_results_failure_message=true jmeter.save.saveservice.default_delimiter=|
O conjunto completo de propriedades que afetam a saída do arquivo de resultados é mostrado abaixo.
#------------------------------------------------- -------------------------- # Configuração do arquivo de resultados #------------------------------------------------- -------------------------- # Esta seção ajuda a determinar como os dados de resultados serão salvos. # Os valores comentados são os padrões. # valores legítimos: xml, csv, db. Apenas xml e csv são suportados atualmente. #jmeter.save.saveservice.output_format=csv # true quando o campo deve ser salvo; falso caso contrário # assertion_results_failure_message afeta apenas a saída CSV #jmeter.save.saveservice.assertion_results_failure_message=true # # valores legítimos: nenhum, primeiro, todos #jmeter.save.saveservice.assertion_results=nenhum # #jmeter.save.saveservice.data_type=true #jmeter.save.saveservice.label=true #jmeter.save.saveservice.response_code=true # response_data não é compatível atualmente com saída CSV #jmeter.save.saveservice.response_data=false # Salvar ResponseData para amostras com falha #jmeter.save.saveservice.response_data.on_error=false #jmeter.save.saveservice.response_message=true #jmeter.save.saveservice.successful=true #jmeter.save.saveservice.thread_name=true #jmeter.save.saveservice.time=true #jmeter.save.saveservice.subresults=true #jmeter.save.saveservice.assertions=true #jmeter.save.saveservice.latency=true #jmeter.save.saveservice.connect_time=true #jmeter.save.saveservice.samplerData=false #jmeter.save.saveservice.responseHeaders=false #jmeter.save.saveservice.requestHeaders=false #jmeter.save.saveservice.encoding=false #jmeter.save.saveservice.bytes=true #jmeter.save.saveservice.sent_bytes=true #jmeter.save.saveservice.url=false #jmeter.save.saveservice.filename=false #jmeter.save.saveservice.hostname=false #jmeter.save.saveservice.thread_counts=true #jmeter.save.saveservice.sample_count=false #jmeter.save.saveservice.idle_time=true # Formato de carimbo de data/hora - isso afeta apenas os arquivos de saída CSV # valores legítimos: none, ms ou um formato adequado para SimpleDateFormat #jmeter.save.saveservice.timestamp_format=ms #jmeter.save.saveservice.timestamp_format=aaaa/MM/dd HH:mm:ss.SSS # Para uso com arquivos de valores separados por vírgula (CSV) ou outros formatos # onde os valores dos campos são separados por delimitadores especificados. # Predefinição: #jmeter.save.saveservice.default_delimiter=, # Para TAB, desde o JMeter 2.3 pode-se usar: #jmeter.save.saveservice.default_delimiter=\t # Aplica-se apenas a arquivos no formato CSV: # Imprime os nomes dos campos como primeira linha no CSV #jmeter.save.saveservice.print_field_names=true # Lista opcional de nomes de variáveis JMeter cujos valores devem ser salvos nos arquivos de dados de resultados. # Use vírgulas para separar os nomes. Por exemplo: #sample_variables=SESSION_ID,REFERENCE # NB A implementação atual salva os valores em XML como atributos, # então os nomes devem ser nomes XML válidos. # JMeter envia a variável para todos os servidores # para garantir que os dados corretos estejam disponíveis no cliente. # Instrução de processamento xml opcional para a linha 2 do arquivo: #jmeter.save.saveservice.xml_pi=<?xml-stylesheet type="text/xsl" href="sample.xsl"?> # Prefixo usado para identificar nomes de arquivos que são relativos à base atual #jmeter.save.saveservice.base_prefix=~/ # AutoFlush em cada linha escrita na saída XML ou CSV # Definir isso como verdadeiro resultará em menos perda de dados de resultados de teste em caso de falha # mas com impacto nas performances, principalmente para testes intensivos (poucas ou sem pausas) # Desde o JMeter 2.10, isso é falso por padrão #jmeter.save.saveservice.autoflush=false # Coloque o carimbo de hora de início nos logs em vez do fim sampleresult.timestamp.start=true # Se deve usar System.nanoTime() - caso contrário, use apenas System.currentTimeMillis() #sampleresult.useNanoTime=true # Use um thread em segundo plano para calcular o deslocamento nanoTime # Defina isso como ≤ 0 para desabilitar o thread em segundo plano #sampleresult.nanoThreadSleep=5000
O formato de data a ser usado para timestamp_format é descrito em SimpleDateFormat . O formato timestamp é usado para gravar e ler arquivos. Se o formato estiver definido como " ms " e a coluna não for analisada como um inteiro longo, o JMeter (2.9+) tentará os seguintes formatos:
- aaaa/MM/dd HH:mm:ss.SSS
- aaaa/MM/dd HH:mm:ss
- aaaa-MM-dd HH:mm:ss.SSS
- aaaa-MM-dd HH:mm:ss
- MM/dd/aa HH:mm:ss (isso é para compatibilidade com versões anteriores; não é recomendado como formato)
12.1.1 Variáveis de Amostra ¶
O JMeter suporta a propriedade sample_variables para definir uma lista de variáveis JMeter adicionais que devem ser salvas com cada amostra nos arquivos JTL. Os valores são gravados em arquivos CSV como colunas adicionais e como atributos adicionais em arquivos XML. Veja acima um exemplo.
12.1.2 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 seção Configuração padrão do ouvinte acima. 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 ".
12.2 execuções de teste do modo CLI (lote) ¶
Ao executar no modo CLI, o sinalizador -l pode ser usado para criar um ouvinte de nível superior para a execução de teste. Isso é um acréscimo a quaisquer Ouvintes definidos no plano de teste. A configuração deste listener é controlada por entradas no arquivo jmeter.properties conforme descrito na seção anterior.
Esse recurso pode ser usado para especificar dados e arquivos de log diferentes para cada execução de teste, por exemplo:
jmeter -n -t plano de teste.jmx -l plano de teste_01.jtl -j plano de teste_01.log jmeter -n -t plano de teste.jmx -l plano de teste_02.jtl -j plano de teste_02.log
Observe que as mensagens de log do JMeter são gravadas no arquivo jmeter.log por padrão. Este arquivo é recriado a cada vez, portanto, se você quiser manter os arquivos de log para cada execução, precisará renomeá-lo usando a opção -j , conforme acima.
O JMeter suporta variáveis no nome do arquivo de log. Se o nome do arquivo contiver aspas simples pareadas, o nome será processado como um formato SimpleDateFormat aplicado à data atual, por exemplo: log_file='jmeter_'yyyyMMddHHmmss'.tmp' . Isso pode ser usado para gerar um nome exclusivo para cada execução de teste.
12.3 Uso de recursos ¶
A maioria dos ouvintes atualmente mantém uma cópia de todas as amostras que exibem, além de:
- Gravador de dados simples
- Ouvinte BeanShell/JSR223
- Visualizador de mala direta
- Monitorar resultados
- 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.
12.4 Formato de log CSV ¶
O formato de log CSV depende de quais itens de dados são selecionados na configuração. Apenas os itens de dados especificados são registrados no arquivo. A ordem de aparecimento das colunas é fixa e é a seguinte:
- timeStamp - em milissegundos desde 01/01/1970
- decorrido - em milissegundos
- rótulo - rótulo do amostrador
- código de resposta - por exemplo , 200 , 404
- responseMessage - por exemplo, OK
- nome do tópico
- dataType - por exemplo , texto
- sucesso - verdadeiro ou falso
- mensagem de falha - se houver
- bytes - número de bytes na amostra
- sentBytes - número de bytes enviados para a amostra
- grpThreads - número de threads ativos neste grupo de threads
- allThreads - número total de threads ativos em todos os grupos
- URL
- Nome do arquivo - se Salvar resposta no arquivo foi usado
- latência - tempo até a primeira resposta
- connect - tempo para estabelecer a conexão
- codificação
- SampleCount - número de amostras (1, a menos que várias amostras sejam agregadas)
- ErrorCount - número de erros (0 ou 1, a menos que várias amostras sejam agregadas)
- Nome do host - onde a amostra foi gerada
- IdleTime - número de milissegundos de tempo 'Ocioso' (normalmente 0)
- Variáveis , se especificadas
12.5 Formato de log XML 2.1 ¶
O formato do XML atualizado (2.1) é o seguinte (as quebras de linha serão diferentes):
<?xml version="1.0" encoding="UTF-8"?> <testResults version="1.2"> -- Amostra HTTP, com amostras aninhadas <httpAmostra t="1392" lt="351" ts="1144371014619" s="true" lb="Solicitação HTTP" rc="200" rm="OK" tn="Ouvir 1-1" dt="texto" de="iso-8859-1" by="12407"> <httpAmostra t="170" lt="170" ts="1144371015471" s="true" lb="http://www.apache.org/style/style.css" rc="200" rm="OK" tn="Ouvir 1-1" dt="texto" de="ISO-8859-1" by="1002"> <responseHeader class="java.lang.String">HTTP/1.1 200 OK Data: Sex, 07 de abril de 2006 00:50:14 GMT ⋮ Tipo de conteúdo: texto/css </responseHeader> <requestHeader class="java.lang.String">MeuCabeçalho: MeuValor</requestHeader> <responseData class="java.lang.String">corpo, td, th { tamanho da fonte: 95%; família de fontes: Arial, Genebra, Helvetica, sem serifa; cor preta; cor de fundo: branco; } ⋮ </responseData> <cookies class="java.lang.String"></cookies> <method class="java.lang.String">GET</method> <queryString class="java.lang.String"></queryString> <url>http://www.apache.org/style/style.css</url> </httpAmostra> <httpAmostra t="200" lt="180" ts="1144371015641" s="true" lb="http://www.apache.org/images/asf_logo_wide.gif" rc="200" rm="OK" tn="Ouvir 1-1" dt="bin" de="ISO-8859-1" by="5866"> <responseHeader class="java.lang.String">HTTP/1.1 200 OK Data: Sex, 07 de abril de 2006 00:50:14 GMT ⋮ Tipo de conteúdo: imagem/gif </responseHeader> <requestHeader class="java.lang.String">MeuCabeçalho: MeuValor</requestHeader> <responseData class="java.lang.String">http://www.apache.org/asf.gif</responseData> <responseFile class="java.lang.String">Mixed1.html</responseFile> <cookies class="java.lang.String"></cookies> <method class="java.lang.String">GET</method> <queryString class="java.lang.String"></queryString> <url>http://www.apache.org/asf.gif</url> </httpAmostra> <responseHeader class="java.lang.String">HTTP/1.1 200 OK Data: Sex, 07 de abril de 2006 00:50:13 GMT ⋮ Tipo de conteúdo: texto/html; conjunto de caracteres=ISO-8859-1 </responseHeader> <requestHeader class="java.lang.String">MeuCabeçalho: MeuValor</requestHeader> <responseData class="java.lang.String"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ⋮ <html> <cabeça> ⋮ </head> <corpo> ⋮ </body> </html> </responseData> <cookies class="java.lang.String"></cookies> <method class="java.lang.String">GET</method> <queryString class="java.lang.String"></queryString> <url>http://www.apache.org/</url> </httpAmostra> -- amostra não HTTP <sample t="0" lt="0" ts="1144372616082" s="true" lb="Exemplo de amostra" rc="200" rm="OK" tn="Ouvir 1-1" dt="texto" de="ISO-8859-1" by="10"> <responseHeader class="java.lang.String"></responseHeader> <requestHeader class="java.lang.String"></requestHeader> <responseData class="java.lang.String">Ouça 1-1</responseData> <responseFile class="java.lang.String">Mixed2.unknown</responseFile> <samplerData class="java.lang.String">ssssss</samplerData> </amostra> </testResults>
Observe que o nome do nó de amostra pode ser " amostra " ou " httpSample ".
12.6 Formato de log XML 2.2 ¶
O formato dos arquivos JTL é idêntico para 2.2 e 2.1. O formato 2.2 afeta apenas arquivos JMX.
12.7 Atributos de Amostra ¶
Os atributos de amostra têm o seguinte significado:
Atributo | Contente |
---|---|
por | Bytes |
sby | Bytes enviados |
de | Codificação de dados |
dt | Tipo de dados |
ec | Contagem de erros (0 ou 1, a menos que várias amostras sejam agregadas) |
hn | Nome do host em que a amostra foi gerada |
isto | Tempo ocioso = tempo não gasto na amostragem (milissegundos) (geralmente 0) |
Libra | Etiqueta |
lt | Latência = tempo para resposta inicial (milissegundos) - nem todos os samplers suportam isso |
ct | Connect Time = tempo para estabelecer a conexão (milissegundos) - nem todos os samplers suportam isso |
n / D | Número de threads ativos para todos os grupos de threads |
ng | Número de tópicos ativos neste grupo |
rc | Código de resposta (por exemplo , 200 ) |
rm | Mensagem de resposta (por exemplo , OK ) |
s | Sinalizador de sucesso ( verdadeiro / falso ) |
sc | Contagem de amostras (1, a menos que várias amostras sejam agregadas) |
t | Tempo decorrido (milissegundos) |
tn | Nome do Tópico |
ts | timeStamp (milissegundos desde a meia-noite de 1º de janeiro de 1970 UTC) |
varname | Valor da variável nomeada |
12.8 Salvando dados de resposta ¶
Conforme mostrado acima, os dados de resposta podem ser salvos no arquivo de log XML, se necessário. No entanto, isso pode tornar o arquivo bastante grande e o texto deve ser codificado para que ainda seja um XML válido. Além disso, as imagens não podem ser incluídas. Apenas respostas de amostra com o tipo TEXT podem ser salvas.
Outra solução é usar o Post-Processor Save_Responses_to_a_file . Isso gera um novo arquivo para cada amostra e salva o nome do arquivo com a amostra. O nome do arquivo pode então ser incluído na saída do log de amostra. Os dados serão recuperados do arquivo, se necessário, quando o arquivo de log de amostra for recarregado.
12.9 Carregando (lendo) dados de resposta ¶
Para visualizar um arquivo de resultados existente, você pode usar o botão Arquivo " Procurar… " para selecionar um arquivo. Se necessário, basta criar um plano de teste fictício com o Listener apropriado.
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 foram salvos. Para interpretar corretamente um arquivo CSV sem cabeçalho, as propriedades apropriadas do JMeter devem ser configuradas.
12.10 Salvando dados da GUI do Listener ¶
JMeter é capaz de salvar qualquer ouvinte como um arquivo PNG. Para fazer isso, selecione o ouvinte no painel esquerdo. Clique
. Uma caixa de diálogo de arquivo será exibida. Digite o nome desejado e salve o ouvinte.Os ouvintes que geram saída como tabelas também podem ser salvos usando Copiar/Colar. Selecione as células desejadas na tabela e use o atalho de cópia do SO (normalmente Ctrl + C ). Os dados serão salvos na área de transferência, de onde podem ser colados em outro aplicativo, por exemplo, uma planilha ou editor de texto.