14. Gerando o Painel de Relatório

O JMeter suporta a geração de relatórios do painel para obter gráficos e estatísticas de um plano de teste.
Este capítulo descreve como configurar e usar o gerador.

14.1 Visão geral

O gerador de painel é uma extensão modular do JMeter. Seu comportamento padrão é ler e processar amostras de arquivos CSV para gerar arquivos HTML contendo visualizações de gráficos. Pode gerar o relatório ao final de um teste de carga ou sob demanda.

Este relatório fornece as seguintes métricas:

  • Tabela APDEX (Application Performance Index) que calcula para cada transação o APDEX com base em valores configuráveis ​​para limites tolerados e satisfeitos
  • Um gráfico de resumo de solicitação mostrando a porcentagem de solicitações bem-sucedidas e com falha (os resultados da amostra do Transaction Controller não são levados em consideração):
  • Uma tabela de estatísticas fornecendo em uma tabela um resumo de todas as métricas por transação, incluindo 3 percentis configuráveis:
  • Uma tabela de erros que fornece um resumo de todos os erros e sua proporção no total de solicitações:
  • Uma tabela dos 5 principais erros por amostrador fornecendo para cada amostrador (excluindo o controlador de transação por padrão) os 5 principais erros:
  • Gráfico com zoom onde você pode marcar/desmarcar cada transação para mostrá-la/ocultá-la para:
    • Tempos de resposta ao longo do tempo (inclui resultados de amostra do controlador de transação):
    • Tempos de resposta Percentis ao longo do tempo (somente respostas bem-sucedidas):
    • Tópicos ativos ao longo do tempo:
    • Taxa de transferência de bytes ao longo do tempo (ignora resultados de amostra do controlador de transação):
    • Latências ao longo do tempo (inclui resultados de amostra do controlador de transação):
    • Conectar ao longo do tempo (inclui resultados de amostra do controlador de transação):
    • Hits por segundo (ignora resultados de amostra do Transaction Controller):
    • Códigos de resposta por segundo (ignora resultados de amostra do Transaction Controller):
    • Transações por segundo (inclui resultados de amostra do controlador de transações):
    • Tempo de resposta vs solicitação por segundo (ignora resultados da amostra do controlador de transação):
    • Latência x solicitação por segundo (ignora resultados de amostra do controlador de transação):
    • Visão geral do tempo de resposta (exclui resultados de amostra do controlador de transação):
    • Percentis de tempos de resposta (inclui resultados de amostra do controlador de transação):
    • Times vs Threads (inclui resultados de amostra do controlador de transação):
      No modo distribuído, este gráfico mostra em um eixo horizontal o número de threads para 1 servidor. É uma limitação atual
    • Distribuição do tempo de resposta (inclui resultados de amostra do controlador de transação):

14.2 Configurando a Geração do Painel

A geração do painel usa as propriedades do JMeter para customizar o relatório. Algumas propriedades são usadas para configurações gerais e outras são usadas para uma configuração de gráfico específica ou configuração de exportador.

Todas as propriedades do gerador de relatórios podem ser encontradas no arquivo reportgenerator.properties . Para customizar essas propriedades, você deve copiá-las no arquivo user.properties e modificá-las.

14.2.1 Requisitos

14.2.1.1 Configuração de filtragem

Certifique-se de definir a propriedade jmeter.reportgenerator.exporter.html.series_filter para manter apenas as transações desejadas no relatório, caso não deseje tudo.
No exemplo abaixo você deve apenas modificar Search|Order , mantenha o resto:
jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$

14.2.1.2 Salvar configuração do serviço

Para permitir que o gerador funcione, o arquivo CSV gerado pelo JMeter deve incluir certos dados necessários que estão corretos por padrão na última versão ativa do JMeter.
Se você modificou essas configurações, verifique se a configuração do JMeter segue essas configurações (esses são os padrões):

jmeter.save.saveservice.bytes = true
# Disponível apenas com HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
jmeter.save.saveservice.connect_time = true
jmeter.save.saveservice.assertion_results_failure_message = true
# o formato de carimbo de data/hora deve incluir a hora e a data.
# Por exemplo, o padrão, que é milissegundos desde a época:
jmeter.save.saveservice.timestamp_format = ms
# Ou o seguinte também seria adequado
# jmeter.save.saveservice.timestamp_format = aaaa/MM/dd HH:mm:ss
                        

14.2.1.3 Configuração do Controlador de Transação

Se você usa o Transaction Controller s, para garantir resultados mais precisos:

  • desmarque a caixa ( esta é a configuração padrão ): Gerar amostra pai
  • Se o Transaction Controller for usado como um Container para representar uma solicitação para uma página HTML que acionará chamadas Ajax e você quiser apenas em seu relatório o Transaction Controller, clique com o botão direito do mouse no nó e Apply Naming Policy
    Você obterá isso:

14.2.2 Configurações gerais

Todas as propriedades devem ser prefixadas com
jmeter.reportgenerator.

Parâmetros

Atributo
Descrição
Requeridos
report_title
Título usado no relatório gerado.
Padrão: "Painel do Apache JMeter"
Não
Formato de data
Formato de data padrão da API Java SimpleDateFormat com Locale.ENGLISH.
O formato de data padrão é yyyyMMddHHmmss
Útil quando você deseja gerar um relatório após o teste de carga e o arquivo de resultados contém carimbo de data/hora em outro fuso horário. Nesse caso, o formato de data deve incluir o fuso horário (zzz).
Se jmeter.save.saveservice.timestamp_format não contiver ano, use 1970 como ano

Exemplo: dd/MM/aaaa HH:mm:ss zzz
Não
data de início
Data de início do intervalo de dados a ser usado para o relatório.
O formato de data é definido pela propriedade date_format.
Padrão: não preenchido, o que significa que o intervalo de dados será usado desde o início
Não
data final
Data de término do intervalo de dados a ser usado para o relatório.
O formato de data é definido pela propriedade date_format.
Padrão: não preenchido, o que significa que o intervalo de dados será usado até o final
Não
global_granularity
Granularidade de gráficos ao longo do tempo. Os dados são agregados para ter tiques de 1 minuto.
A granularidade deve ser maior que 1 segundo (1000), caso contrário os gráficos de taxa de transferência estarão incorretos
Padrão: "60000" (1 minuto)
Não
apdex_satisfied_threshold
Define o limite de satisfação para o cálculo do APDEX (em ms).
Padrão: 500
Não
apdex_tolerated_threshold
Define o limite de tolerância para o cálculo do APDEX (em ms).
Padrão: 1500
Não
jmeter.reportgenerator.apdex_per_transaction
Define o limite de satisfação e tolerância para amostras específicas.
Use nomes de amostra ou expressão regular.
O formato é sample_name:satisfaction|tolerance[;]
Os valores estão em milissegundos.
Observe os dois pontos entre o nome e os valores da amostra, o tubo entre os limites e o ponto e vírgula no final para separar as diferentes amostras. Não se esqueça de escapar após o ponto e vírgula para abranger várias linhas.
Exemplo:
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\
    amostras12:3000|4000;\
    cenário01-12:5000|6000
Não
amostra_filtro
Define o filtro de amostras a ser mantido para geração de gráficos e estatísticas. Um valor vazio desativa a filtragem.
Formato: Expressão regular.
Predefinição: ""
Não
temp_dir
Configura o diretório temporário usado pelo processo de geração se precisar de operações de E/S de arquivo.
Padrão: temporário
Não
statistic_window
Define o tamanho da janela deslizante usada pela avaliação de percentil. Cuidado: um valor mais alto fornece uma precisão melhor, mas precisa de mais memória.
Padrão: 20.000
Não
Os percentis usados ​​pela tabela de resumo e gráficos de percentil podem ser ajustados para valores diferentes usando as 3 propriedades:
  • agregado_rpt_pct1: O padrão é 90
  • agregado_rpt_pct2: O padrão é 95
  • agregado_rpt_pct3 : O padrão é 99
Os caminhos relativos são construídos a partir do diretório de trabalho do JMeter (padrão: bin ).

Você pode definir algumas propriedades gerais que são usadas pela configuração do gerador. Estas propriedades são nomeadas livremente mas você deve usar o prefixo

jmeter.reportgenerator.
para evitar sobreposição de propriedades.

Por exemplo:

Definição da propriedade:
jmeter.reportgenerator.overall_granularity=60000
Referência da propriedade:
${jmeter.reportgenerator.overall_granularity}

14.2.3 Configurações do gráfico

Cada propriedade que descreve uma configuração de gráfico deve ser prefixada com

jmeter.reportgenerator.graph.
seguido pelo identificador do gráfico.

14.2.3.1 Propriedades gerais

Todos os gráficos suportam estas propriedades:

Parâmetros

Atributo
Descrição
Requeridos
nome da classe
O nome completo da classe do gráfico
A classe do gráfico deve estender org.apache.jmeter.report.processor.graph.AbstractGraphConsumer .
Consulte a seção Gráfico padrão para obter mais detalhes.
Sim
exclude_controllers
Define se o gráfico descarta amostras do controlador. Padrão: falso
Não
título
Define o título do gráfico. Predefinição: ""
Não

14.2.3.2 Propriedades específicas

Propriedades de gráfico específicas devem usar o prefixo:

jmeter.reportgenerator.graph.<graph_id>.property
O nome da propriedade será mapeado usando a transformação camel case e o método de correspondência da classe será chamado com o valor da propriedade como argumento.

Por exemplo:

jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150
induz a chamada do método setGranularity(150) na instância do gráfico.

14.2.4 Configurações de exportação

Cada propriedade que descreve uma configuração de exportador deve ser prefixada com

jmeter.reportgenerator.exporter
seguido pelo identificador do exportador.

14.2.4.1 Propriedades gerais

Todos os exportadores são compatíveis com estas propriedades:

Parâmetros

Atributo
Descrição
Requeridos
nome da classe
O nome completo da classe do exportador
A classe do exportador deve implementar org.apache.jmeter.report.dashboard.DataExporter .
Sim
filter_only_sample_series
Define se series_filter (veja abaixo) se aplica apenas em séries de amostra. Padrão: verdadeiro
Não
series_filter
Define o filtro de série. Um valor vazio desativa a filtragem. Se não estiver vazio, regex deve terminar com (-success|-failure)?$
Formato: expressão regular. Predefinição: ""
Não
show_controllers_only
Define se apenas as séries do controlador são mostradas. Padrão: falso
Não

14.2.4.2 Propriedades específicas

Propriedades específicas do exportador devem usar o prefixo

jmeter.reportgenerator.exporter.<exporter_id>.property

Parâmetros

Atributo
Descrição
Requeridos
output_dir
Configura o diretório de destino para páginas html geradas. Padrão: saída de relatório
Não
template_dir
Configura o diretório de origem dos arquivos de modelo a partir dos quais as páginas html são geradas. Padrão: modelo de relatório
Não

14.2.4.3 Propriedades do gráfico

As propriedades do gráfico permitem que os exportadores sobrescrevam alguns dados do gráfico.
Eles devem usar o prefixo:

jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id>

Parâmetros

Atributo
Descrição
Requeridos
sirigaita
Define a abcissa mínima para o gráfico.
Não
maxX
Define a abcissa máxima para o gráfico.
Não
minY
Define a ordenada mínima para o gráfico.
Não
maxY
Define a ordenada máxima para o gráfico.
Não

14.2.4.4 Mecanismos de filtragem

Diferentemente da filtragem na seção Propriedades gerais que descarta os dados antes dos cálculos, aqui a filtragem é realizada após os cálculos e serve para simplificar o relatório final.

A propriedade series_filter permite filtrar qual série de um gráfico (resp. linhas de uma tabela de resumo) usando a expressão regular que corresponde ao nome da série (resp. da linha). No entanto, mesmo que o nome da série (linha resp.) corresponda ao filtro, a configuração das outras propriedades de filtragem pode levar ao seu descarte. Por outro lado, se não houver correspondência, as outras propriedades podem permitir mantê-la.

As tabelas a seguir mostram como funciona a configuração das propriedades de filtragem.

Casos de descarte quando há correspondência de padrões
filter_only_sample_series Gráfico/Resumo suporta discriminação de controladores A série atual é uma série de controladores show_controllers_only Descartado
Falso Falso - Falso Falso
Verdadeiro
- Falso
Verdadeiro
Verdadeiro Falso Falso
Verdadeiro
Verdadeiro Falso
Verdadeiro
Verdadeiro Falso - Falso
Verdadeiro
- Falso
Verdadeiro
Verdadeiro Falso Falso
Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Verdadeiro

Casos de retenção quando não há correspondência de padrões
filter_only_sample_series Gráfico/Resumo suporta discriminação de controladores Mantido
Falso Falso Falso
Verdadeiro
Verdadeiro Falso Verdadeiro
Verdadeiro Falso

A configuração incorreta do filtro pode gerar gráficos/tabelas de resumo vazios:
  • Se você definir a propriedade show_controllers_only e o gráfico estiver configurado para excluir controladores.
  • Se a propriedade series_filter não corresponder a nenhuma série.

14.2.5 Configuração de amostra

Você pode copiar a configuração a seguir para o arquivo user.properties para testar o gerador de relatórios.

# Configure esta propriedade para alterar o título do relatório
#jmeter.reportgenerator.report_title=Painel do Apache JMeter

# Altere este parâmetro se desejar alterar a granularidade dos gráficos ao longo do tempo.
# A granularidade deve ser maior que 1000 (1 segundo), caso contrário, os gráficos de taxa de transferência estarão incorretos
# veja o Bug 60149
#jmeter.reportgenerator.overall_granularity=60000

 Altere este parâmetro se desejar alterar a granularidade da distribuição do tempo de resposta
# Configurado para 100 ms por padrão
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100

# Altere este parâmetro se desejar substituir o limite de satisfação do APDEX.
jmeter.reportgenerator.apdex_satisfied_threshold=1500

# Altere este parâmetro se desejar substituir o limite de tolerância APDEX.
jmeter.reportgenerator.apdex_tolerated_threshold=3000

# Define o diretório de destino para as páginas html geradas, é melhor alterá-lo a cada geração
# Isso substituirá o valor definido através da opção de linha de comando -o
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report

# Indica quais séries de gráficos são filtradas (expressão regular)
# No exemplo abaixo, filtramos as amostras de pesquisa e pedido
# Observe que o final do padrão deve sempre incluir (-success|-failure)?$
# Transações por segundo sufixos Transações com "-success" ou "-failure" dependendo
# no resultado
#jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$

# Indica se o filtro de série se aplica apenas em séries de amostra
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
                    
Adapte o parâmetro output_dir ao seu ambiente.

Esta configuração permite gerar um relatório onde:

  • Os gráficos ao longo do tempo têm uma granularidade de tempo igual a 1 minuto.
  • O limite de satisfação para o cálculo do ADPEX é de 1 segundo e meio.
  • O limite de tolerância para cálculo de ADPEX é de 3 segundos.
  • Os arquivos HTML são gerados no diretório /tmp/test-report .
  • Apenas as séries cujo nome começa com " s0 " ou " s1 " são mostradas.
  • O filtro anterior se aplica apenas a gráficos (tabelas de resumo de resp.) em que as séries (linhas de resp.) correspondem a amostras

14.3 Gerando relatórios

A geração do relatório pode ser feita como um processo autônomo a partir de um arquivo de log de amostra ou automaticamente após a execução do teste de carga.

14.3.1 Geração de um arquivo de log CSV de amostra existente

Use o seguinte comando:

jmeter -g <arquivo de log> -o <Caminho para a pasta de saída>

14.3.2 Geração após teste de carga

Use o seguinte comando:

jmeter -n -t <arquivo JMX de teste> -l <arquivo de log de teste> -e -o <Caminho para a pasta de saída>

14.3.3 Geração usando o menu Ferramentas GUI

Você pode gerar o relatório HTML usando o item de menu Ferramentas → Gerar relatório HTML :

Figura 14.1.  Menu de diálogo de relatório HTML
Figura 14.1. Menu de diálogo de relatório HTML

Para cada parâmetro veja a tabela a seguir:

Parâmetros

Atributo
Descrição
Requeridos
Arquivo de resultados (csv ou jtl)
A saída CSV de uma execução de teste
Sim
arquivo user.properties
O arquivo user.properties usado para executar o teste de carga
Sim
Diretório de saída
O diretório onde você deseja que o relatório seja criado (deve estar vazio)
Não

Se nenhum diretório de saída for definido, o controlador usará ${JMETER_HOME}/bin/report-output .

Você só precisa clicar no botão Gerar relatório e esperar que uma caixa de diálogo de informações apareça

Se a geração do relatório demorar mais de dois minutos, ajuste a propriedade generate_report_ui.generation_timeout

14.4 Gráficos padrão

Devido às limitações desta versão inicial, cada gráfico padrão deve ser declarado nas propriedades do JMeter. Caso contrário, as visualizações do gráfico estarão vazias.

Todos os gráficos fornecidos por este mecanismo de relatório estão localizados no pacote org.apache.jmeter.report.processor.graph.impl

O gerador de painel fornece as seguintes classes de gráfico:

Gráfico Descrição Suporta discriminação do controlador
ActiveThreadsGraphConsumer Este gráfico representa o número de threads ativos ao longo do tempo. Falso
BytesThroughputGraphConsumer Este gráfico representa a taxa de transferência de dados recebidos e enviados ao longo do tempo. Falso
CódigosPor SegundoGráficoConsumidor Este gráfico representa a taxa de códigos de resposta ao longo do tempo. Falso
HitsPerSecondGraphConsumer Este gráfico representa a taxa de solicitações concluídas ao longo do tempo. Falso
LatencyOverTimeGraphConsumer Este gráfico representa o tempo médio de latência ao longo do tempo. Verdadeiro
ConnectTimeOverTimeGraphConsumer Este gráfico representa o tempo de conexão ao longo do tempo. Verdadeiro
LatencyVSRequestGraphConsumer Este gráfico representa a mediana e o tempo médio de latência, dependendo do número de solicitações atuais. Falso
ResponseTimeDistributionGraphConsumer Este gráfico representa a distribuição das amostras dependendo do tempo decorrido e do nome. Verdadeiro
ResponseTimeOverTimeGraphConsumer Este gráfico representa o tempo médio de resposta ao longo do tempo. Verdadeiro
ResponseTimePercentilesGraphConsumer Este gráfico representa os percentis do tempo decorrido ao longo do tempo. Verdadeiro
ResponseTimePercentilesOverTimeGraphConsumer Este gráfico mostra o tempo de resposta Mín/Máx e 3 percentis ao longo do tempo. Verdadeiro
ResponseTimeVSRequestGraphConsumer Este gráfico representa a mediana e o tempo médio de resposta dependendo do número de solicitações atuais. Falso
TimeVSThreadGraphConsumidor Este gráfico representa o tempo médio de resposta dependendo do número de threads ativos atuais.

A série agregada * representa o tempo médio de resposta, independentemente do número de encadeamentos ativos atuais. Essas séries são representadas por um único ponto porque o número de threads ativos atuais é agregado a uma média. Então para esses pontos:

  • A abscissa é a média do número de threads ativos atuais quando as amostras da série terminam.
  • A ordenada é a média do tempo de resposta para as amostras da série independente do número de threads ativos atuais.

Verdadeiro
TransactionsPer SecondGraphConsumer Este gráfico representa a taxa de transação por nome de amostra ao longo do tempo. Verdadeiro

14.5 Geração de gráficos alfandegários ao longo do tempo

Você pode representar graficamente qualquer sample_variable em CSV ao longo do tempo, você pode personalizar seus gráficos configurando suas propriedades no arquivo user.properties.
Eles devem usar o prefixo de id custom_ :

jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>
Para especificar que este gráfico é personalizado:
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer

Parâmetros

Atributo
Descrição
Requeridos
set_X_Axis
Define o nome do eixo X do gráfico.
Sim
set_Y_Axis
Define o nome do eixo Y do gráfico.
Sim
set_Content_Message
Define a mensagem exibida quando o cursor está em um ponto do gráfico.
Sim
set_Sample_Variable_Name
Nome da coluna que você deseja representar graficamente no csv.
Sim

Aqui está um exemplo de uma configuração de gráfico personalizada que representa graficamente a variável ts-hit :

jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=Chunk Hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Número de Ocorrências
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Ao longo do tempo
jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000
jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=Número de Ocorrências:
                        

14.6 Quer melhorar o Painel de Relatórios?

Se você quiser contribuir com novos gráficos ou melhorar os atuais, leia esta documentação do desenvolvedor .
Leia esta documentação sobre como contribuir.
Go to top