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.
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):
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.
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:
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:
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.
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
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
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.
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
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.
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
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>
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_ :
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: