JMeter admite la generación de informes del tablero para obtener gráficos y estadísticas de un plan de prueba.
Este capítulo describe cómo configurar y utilizar el generador.
El generador de tableros es una extensión modular de JMeter. Su comportamiento predeterminado es leer y procesar muestras de archivos CSV para generar archivos HTML que contienen vistas de gráficos. Puede generar el informe al final de una prueba de carga o bajo demanda.
Este informe proporciona las siguientes métricas:
Tabla APDEX (Índice de rendimiento de aplicaciones) que calcula para cada transacción el APDEX en función de valores configurables para umbrales tolerados y satisfechos
Un gráfico de resumen de solicitud que muestra el porcentaje de solicitudes exitosas y fallidas (los resultados de muestra de Transaction Controller no se tienen en cuenta):
Una tabla de estadísticas que proporciona en una tabla un resumen de todas las métricas por transacción, incluidos 3 percentiles configurables:
Una tabla de errores que proporciona un resumen de todos los errores y su proporción en el total de solicitudes:
Una tabla de los 5 errores principales por muestreador que proporciona para cada muestreador (excluyendo Transaction Controller de forma predeterminada) los 5 errores principales:
Gráfico ampliable donde puede marcar/desmarcar cada transacción para mostrarla/ocultarla para:
Tiempos de respuesta a lo largo del tiempo (incluye resultados de muestra del controlador de transacciones):
Tiempos de respuesta Percentiles a lo largo del tiempo (solo respuestas exitosas):
Subprocesos activos a lo largo del tiempo:
Rendimiento de bytes a lo largo del tiempo (ignora los resultados de muestra del controlador de transacciones):
Latencias a lo largo del tiempo (incluye resultados de muestra del controlador de transacciones):
Tiempo de conexión a lo largo del tiempo (incluye resultados de muestra del controlador de transacciones):
Hits por segundo (ignora los resultados de muestra del controlador de transacciones):
Códigos de respuesta por segundo (ignora los resultados de muestra de Transaction Controller):
Transacciones por segundo (incluye resultados de muestra del controlador de transacciones):
Tiempo de respuesta frente a solicitud por segundo (ignora los resultados de muestra del controlador de transacciones):
Latencia frente a solicitud por segundo (ignora los resultados de muestra del controlador de transacciones):
Descripción general del tiempo de respuesta (excluye los resultados de muestra de Transaction Controller):
Percentiles de tiempos de respuesta (incluye resultados de muestra de Transaction Controller):
Tiempos frente a subprocesos (incluye resultados de muestra del controlador de transacciones):
En modo distribuido, este gráfico muestra en un eje horizontal el número de subprocesos para 1 servidor. Es una limitación actual.
Distribución del tiempo de respuesta (incluye resultados de muestra del controlador de transacciones):
La generación de paneles utiliza las propiedades de JMeter para personalizar el informe. Algunas propiedades se utilizan para la configuración general y otras se utilizan para una configuración de gráfico particular o una configuración de exportador.
Todas las propiedades del generador de informes se pueden encontrar en el archivo reportgenerator.properties . Para personalizar estas propiedades, debe copiarlas en el archivo user.properties y modificarlas.
Asegúrese de configurar la propiedad jmeter.reportgenerator.exporter.html.series_filter para mantener solo las transacciones que desea en el informe si no desea todo.
En el ejemplo de abajo solo debes modificar Search|Order , mantén el resto:
Para permitir que el generador funcione, el archivo CSV generado por JMeter debe incluir ciertos datos requeridos que son correctos de manera predeterminada en la última versión en vivo de JMeter.
Si modificó esas configuraciones, verifique que su configuración de JMeter siga estas configuraciones (estos son los valores predeterminados):
jmeter.save.saveservice.bytes = verdadero
# Solo disponible con HttpClient4
#jmeter.save.saveservice.sent_bytes=verdadero
jmeter.save.saveservice.label = verdadero
jmeter.save.saveservice.latency = verdadero
jmeter.save.saveservice.response_code = verdadero
jmeter.save.saveservice.response_message = verdadero
jmeter.save.saveservice.successful = verdadero
jmeter.save.saveservice.thread_counts = verdadero
jmeter.save.saveservice.thread_name = verdadero
jmeter.save.saveservice.time = verdadero
jmeter.save.saveservice.connect_time = verdadero
jmeter.save.saveservice.assertion_results_failure_message = verdadero
# el formato de la marca de tiempo debe incluir la hora y debe incluir la fecha.
# Por ejemplo, el valor predeterminado, que es milisegundos desde la época:
jmeter.save.saveservice.timestamp_format=ms
# O lo siguiente también sería adecuado
# jmeter.save.saveservice.timestamp_format = aaaa/MM/dd HH:mm:ss
14.2.1.3 Configuración del controlador de transacciones ¶
Si usa Transaction Controller , para garantizar resultados más precisos:
desmarque la casilla ( esta es la configuración predeterminada ):
Generar muestra principal
Si Transaction Controller se usa como contenedor para representar una solicitud de una página HTML que activará llamadas Ajax y solo desea en su informe Transaction Controller, haga clic con el botón derecho en el nodo y aplique la política de nomenclatura.
Obtendrás esto:
Título utilizado en el informe generado.
Valor predeterminado: "Panel de Apache JMeter"
No
formato de fecha
Formato de fecha predeterminado de
SimpleDateFormat Java API con Locale.ENGLISH.
El formato de fecha predeterminado es aaaaMMddHHmmss
Útil cuando desea generar un informe después de la prueba de carga y el archivo de resultados contiene una marca de tiempo en otra zona horaria. En este caso, el formato de fecha debe incluir la zona horaria (zzz).
Si jmeter.save.saveservice.timestamp_format no contiene el año, use 1970 como año
Ejemplo: dd/MM/aaaa HH:mm:ss zzz
No
fecha de inicio
Fecha de inicio del rango de datos a utilizar para el informe.
El formato de fecha está definido por la propiedad date_format.
Predeterminado: no completado, lo que significa que el rango de datos se usará desde el principio
No
fecha final
Fecha de finalización del rango de datos que se utilizará para el informe.
El formato de fecha está definido por la propiedad date_format.
Predeterminado: no lleno, lo que significa que el rango de datos se usará hasta el final
No
granularidad_general
Granularidad de los gráficos a lo largo del tiempo. Los datos se agregan para tener marcas de 1 minuto.
La granularidad debe ser superior a 1 segundo (1000), de lo contrario, los gráficos de rendimiento serán incorrectos
Predeterminado: "60000" (1 minuto)
No
apdex_satisfied_threshold
Establece el umbral de satisfacción para el
cálculo de APDEX
(en ms).
Predeterminado: 500
No
apdex_tolerated_threshold
Establece el umbral de tolerancia para el cálculo de APDEX (en ms).
Predeterminado: 1500
No
jmeter.reportgenerator.apdex_per_transaction
Establece el umbral de satisfacción y tolerancia para muestras específicas.
Use nombres de muestra o expresiones regulares.
El formato es nombre_muestra:satisfacción|tolerancia[;]
Los valores están en milisegundos.
Observe los dos puntos entre el nombre de la muestra y los valores, la tubería entre los umbrales y el punto y coma al final para separar diferentes muestras. No olvide escapar después del punto y coma para abarcar varias líneas.
Establece el filtro de muestras a mantener para generar gráficos y estadísticas. Un valor vacío desactiva el filtrado.
Formato: expresión regular.
Defecto: ""
No
temp_dir
Establece el directorio temporal utilizado por el proceso de generación si necesita operaciones de E/S de archivos.
Predeterminado: temperatura
No
ventana_estadística
Establece el tamaño de la ventana deslizante utilizada por la evaluación de percentiles. Precaución: un valor más alto proporciona una mayor precisión pero necesita más memoria.
Predeterminado: 20000
No
Los percentiles utilizados por la tabla de resumen y los gráficos de percentiles se pueden ajustar a diferentes valores utilizando las 3 propiedades:
added_rpt_pct1 : Predeterminado a 90
added_rpt_pct2 : Predeterminado a 95
added_rpt_pct3 : Predeterminado a 99
Las rutas relativas se construyen desde el directorio de trabajo de JMeter (predeterminado: bin ).
Puede definir algunas propiedades generales que utiliza la configuración del generador. Estas propiedades se nombran libremente, pero debe usar el prefijo
El nombre de clase completo del gráfico
La clase del gráfico debe extenderse
org.apache.jmeter.report.processor.graph.AbstractGraphConsumer .
Consulte
la sección Gráfico predeterminado
para obtener más detalles.
Sí
excluir_controladores
Define si el gráfico descarta las muestras del controlador. Predeterminado: falso
Las propiedades específicas del gráfico deben usar el prefijo:
jmeter.reportgenerator.graph.<graph_id>.property
El nombre de la propiedad se mapeará usando la transformación camel case y el método de coincidencia de la clase se llamará con el valor de la propiedad como argumento.
El nombre de clase completo del exportador
La clase del exportador debe implementar
org.apache.jmeter.report.dashboard.DataExporter
.
Sí
filtros_solo_muestra_series
Define si series_filter (ver a continuación) se aplica solo en series de muestra. Valor predeterminado: verdadero
No
serie_filtro
Establece el filtro de serie. Un valor vacío desactiva el filtrado. Si no está vacío, la expresión regular debe terminar con (-success|-failure)?$
Formato: expresión regular. Defecto: ""
No
mostrar_controladores_solo
Define si solo se muestran las series de controladores. Predeterminado: falso
A diferencia del filtrado en la sección
Propiedades generales
que descarta los datos antes de los cálculos, aquí el filtrado se realiza después de los cálculos y sirve para simplificar el informe final.
La propiedad series_filter
permite filtrar qué serie de un gráfico (resp. filas de una tabla de resumen) usando una expresión regular que coincida con el nombre de la serie (resp. de la fila). Sin embargo, incluso si el nombre de la serie (resp. fila) coincide con el filtro, la configuración de las otras propiedades de filtrado puede provocar su descarte. Por el contrario, si no hay coincidencia, las otras propiedades pueden permitir mantenerla.
Las siguientes tablas muestran cómo funciona la configuración de las propiedades de filtrado.
Casos de descarte cuando hay coincidencia de patrones
filter_only_sample_series
Graph/Summary admite discriminación de controladores
La serie actual es una serie de controlador.
mostrar_controladores_solo
Descartado
Falso
Falso
-
Falso
Falso
Verdadero
-
Falso
Verdadero
Verdadero
Falso
Falso
Verdadero
Verdadero
Falso
Verdadero
Verdadero
Falso
-
Falso
Verdadero
-
Falso
Verdadero
Verdadero
Falso
Falso
Verdadero
Verdadero
Verdadero
Falso
Falso
Verdadero
Casos de retención cuando no hay coincidencia de patrones
filter_only_sample_series
Graph/Summary admite discriminación de controladores
Mantuvo
Falso
Falso
Falso
Verdadero
Verdadero
Falso
Verdadero
Verdadero
Falso
La configuración incorrecta del filtro puede generar gráficos/tablas de resumen vacías:
Si establece la propiedad
show_controllers_only
y el gráfico está configurado para excluir controladores.
Si la propiedad
series_filter
no coincide con ninguna serie.
Puede copiar la siguiente configuración en su archivo user.properties para probar el generador de informes.
# Configure esta propiedad para cambiar el título del informe
#jmeter.reportgenerator.report_title=Panel de Apache JMeter
# Cambie este parámetro si desea cambiar la granularidad de los gráficos a lo largo del tiempo.
# La granularidad debe ser superior a 1000 (1 segundo), de lo contrario, los gráficos de rendimiento serán incorrectos
# ver error 60149
#jmeter.reportgenerator.overall_granularity=60000
Cambie este parámetro si desea cambiar la granularidad de la distribución del tiempo de respuesta.
# Establecido en 100 ms por defecto
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100
# Cambie este parámetro si desea anular el umbral de satisfacción de APDEX.
jmeter.reportgenerator.apdex_satisfied_threshold=1500
# Cambie este parámetro si desea anular el umbral de tolerancia de APDEX.
jmeter.reportgenerator.apdex_tolerated_threshold=3000
# Establece el directorio de destino para las páginas html generadas, es mejor cambiarlo para cada generación
# Esto anulará el valor establecido a través de la opción de línea de comando -o
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report
# Indica qué series de gráficos se filtran (expresión regular)
# En el siguiente ejemplo, filtramos en Buscar y Ordenar muestras
# Tenga en cuenta que el final del patrón siempre debe incluir (-success|-failure)?$
# Transacciones por segundo sufijos Transacciones con "-éxito" o "-fracaso" según
# en el resultado
#jmeter.reportgenerator.exporter.html.series_filter=^(Buscar|Pedido)(-éxito|-fallo)?$
# Indica si el filtro de serie se aplica solo en series de muestra
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
Adapte el parámetro
output_dir
a su entorno.
Esta configuración permite generar un informe donde:
Los gráficos a lo largo del tiempo tienen una granularidad de tiempo igual a 1 minuto.
El umbral de satisfacción para el cálculo de ADPEX es de 1 segundo y medio.
El umbral de tolerancia para el cálculo de ADPEX es de 3 segundos.
Los archivos HTML se generan en el directorio /tmp/test-report .
Solo se muestran las series cuyo nombre comienza con " s0 " o " s1 ".
El filtro anterior solo se aplica a gráficos (resp. tablas de resumen) donde las series (resp. filas) coinciden con muestras
La generación de informes se puede realizar como un proceso independiente a partir de un archivo de registro de muestra o automáticamente después de ejecutar la prueba de carga.
14.3.1 Generación a partir de un archivo de registro CSV de muestra existente ¶
Usa el siguiente comando:
jmeter -g <archivo de registro> -o <Ruta a la carpeta de salida>
Debido a las limitaciones de esta versión anterior, cada gráfico predeterminado debe declararse en las propiedades de JMeter. De lo contrario, las vistas de gráficos estarán vacías.
Todos los gráficos proporcionados por este motor de informes se encuentran en el paquete
org.apache.jmeter.report.processor.graph.impl
El generador de paneles proporciona las siguientes clases de gráficos:
Grafico
Descripción
Admite la discriminación del controlador
ActiveThreadsGraphConsumer
Este gráfico representa el número de subprocesos activos a lo largo del tiempo.
Falso
BytesRendimientoGráficoConsumidor
Este gráfico representa el rendimiento de los datos recibidos y enviados a lo largo del tiempo.
Falso
CodesPerSecondGraphConsumer
Este gráfico representa la tasa de códigos de respuesta a lo largo del tiempo.
Falso
HitsPerSecondGraphConsumer
Este gráfico representa la tasa de solicitudes finalizadas a lo largo del tiempo.
Falso
LatencyOverTimeGraphConsumer
Este gráfico representa el tiempo de latencia promedio a lo largo del tiempo.
Verdadero
ConnectTimeOverTimeGraphConsumer
Este gráfico representa el tiempo de conexión a lo largo del tiempo.
Verdadero
LatenciaVSRequestGraphConsumer
Este gráfico representa el tiempo de latencia medio y promedio según la cantidad de solicitudes actuales.
Falso
ResponseTimeDistributionGraphConsumer
Este gráfico representa la distribución de las muestras en función de su tiempo transcurrido y nombre.
Verdadero
ResponseTimeOverTimeGraphConsumer
Este gráfico representa el tiempo de respuesta promedio a lo largo del tiempo.
Verdadero
RespuestaTiempoPercentilesGráficoConsumidor
Este gráfico representa los percentiles del tiempo transcurrido en el tiempo.
Verdadero
RespuestaTiempoPercentilesA lo largo del tiempoGráficoConsumidor
Este gráfico muestra el tiempo de respuesta mínimo/máximo y 3 percentiles a lo largo del tiempo.
Verdadero
ResponseTimeVSRequestGraphConsumer
Este gráfico representa la mediana y el tiempo de respuesta promedio según la cantidad de solicitudes actuales.
Falso
TiempoVSHiloGráficoConsumidor
Este gráfico representa el tiempo de respuesta promedio según la cantidad de subprocesos activos actuales.
La serie agregada * representa el tiempo de respuesta promedio independientemente de la cantidad de subprocesos activos actuales. Estas series están representadas por un solo punto porque el número de subprocesos activos actuales se agrega a un promedio. Así que para estos puntos:
La abscisa es el promedio del número de subprocesos activos actuales cuando finalizan las muestras de la serie.
La ordenada es el promedio del tiempo de respuesta de las muestras de la serie, independientemente del número de subprocesos activos actuales.
Verdadero
TransactionsPerSecondGraphConsumer
Este gráfico representa la tasa de transacción por nombre de muestra a lo largo del tiempo.
Verdadero
14.5 Generando gráficos personalizados a lo largo del tiempo ¶
Puede graficar cualquier muestra_variable en CSV a lo largo del tiempo, puede personalizar sus gráficos configurando sus propiedades en el archivo user.properties.
Deben usar el prefijo id custom_ :
Establece el mensaje que se muestra cuando el cursor está en un punto del gráfico.
Sí
establecer_nombre_de_variable_de_muestra
Nombre de la columna que desea graficar en el csv.
Sí
Aquí hay un ejemplo de una configuración gráfica personalizada que representa gráficamente la variable 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 visitas
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=A lo largo del tiempo
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 visitas: