14. Génération du tableau de bord du rapport

JMeter prend en charge la génération de rapports de tableau de bord pour obtenir des graphiques et des statistiques à partir d'un plan de test.
Ce chapitre décrit comment configurer et utiliser le générateur.

14.1 Présentation

Le générateur de tableau de bord est une extension modulaire de JMeter. Son comportement par défaut est de lire et de traiter des échantillons à partir de fichiers CSV pour générer des fichiers HTML contenant des vues graphiques. Il peut générer le rapport à la fin d'un test de charge ou à la demande.

Ce rapport fournit les statistiques suivantes :

  • Table APDEX (Application Performance Index) qui calcule pour chaque transaction l'APDEX en fonction de valeurs configurables pour les seuils tolérés et satisfaits
  • Un graphique récapitulatif des requêtes indiquant le pourcentage de requêtes réussies et échouées (les résultats de l'échantillon de contrôleur de transaction ne sont pas pris en compte) :
  • Un tableau Statistiques fournissant dans un seul tableau un récapitulatif de toutes les métriques par transaction incluant 3 centiles paramétrables :
  • Un tableau des erreurs récapitulant toutes les erreurs et leur proportion dans le total des requêtes :
  • Un tableau Top 5 Errors by Sampler fournissant pour chaque Sampler (hors Transaction Controller par défaut) les 5 top Errors :
  • Graphique zoomable où vous pouvez cocher/décocher chaque transaction pour l'afficher/la masquer pour :
    • Temps de réponse au fil du temps (comprend les résultats d'exemple du contrôleur de transaction) :
    • Temps de réponse Centiles dans le temps (réponses réussies uniquement) :
    • Threads actifs au fil du temps :
    • Débit d'octets dans le temps (ignore les résultats de l'échantillon du contrôleur de transaction) :
    • Latences au fil du temps (comprend les résultats d'exemple du contrôleur de transaction) :
    • Connexion au fil du temps (comprend des exemples de résultats de contrôleur de transaction) :
    • Coups par seconde (ignore les résultats de l'exemple de contrôleur de transaction) :
    • Codes de réponse par seconde (ignore les résultats de l'échantillon de contrôleur de transaction) :
    • Transactions par seconde (comprend des exemples de résultats de contrôleur de transaction) :
    • Temps de réponse vs demande par seconde (ignore les résultats de l'échantillon du contrôleur de transaction) :
    • Latence vs demande par seconde (ignore les résultats de l'échantillon de contrôleur de transaction) :
    • Présentation du temps de réponse (exclut les résultats des exemples de contrôleur de transaction) :
    • Centiles des temps de réponse (comprend des exemples de résultats de contrôleur de transaction) :
    • Times vs Threads (comprend des exemples de résultats de contrôleur de transaction) :
      En mode distribué, ce graphique montre sur un axe horizontal le nombre de threads pour 1 serveur. C'est une limitation actuelle
    • Répartition des temps de réponse (comprend des exemples de résultats de contrôleur de transaction) :

14.2 Configuration de la génération de tableau de bord

La génération de tableau de bord utilise les propriétés JMeter pour personnaliser le rapport. Certaines propriétés sont utilisées pour les paramètres généraux et d'autres sont utilisées pour une configuration de graphique ou une configuration d'exportateur particulière.

Toutes les propriétés du générateur de rapport se trouvent dans le fichier reportgenerator.properties . Pour personnaliser ces propriétés, vous devez les copier dans le fichier user.properties et les modifier.

14.2.1 Exigences

14.2.1.1 Configuration du filtrage

Assurez-vous de définir la propriété jmeter.reportgenerator.exporter.html.series_filter pour ne conserver que les transactions souhaitées dans le rapport si vous ne voulez pas tout.
Dans l'exemple ci-dessous vous devez uniquement modifier Search|Order , gardez le reste :
jmeter.reportgenerator.exporter.html.series_filter=^(Recherche|Commande)(-succès|-échec) ?$

14.2.1.2 Enregistrer la configuration du service

Pour permettre au générateur de fonctionner, le fichier CSV généré par JMeter doit inclure certaines données requises qui sont correctes par défaut dans la dernière version live de JMeter.
Si vous avez modifié ces paramètres, vérifiez que votre configuration JMeter respecte ces paramètres (ce sont les valeurs par défaut) :

jmeter.save.saveservice.bytes = vrai
# Uniquement disponible avec HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.label = vrai
jmeter.save.saveservice.latency = vrai
jmeter.save.saveservice.response_code = vrai
jmeter.save.saveservice.response_message = vrai
jmeter.save.saveservice.successful = vrai
jmeter.save.saveservice.thread_counts = vrai
jmeter.save.saveservice.thread_name = vrai
jmeter.save.saveservice.time = vrai
jmeter.save.saveservice.connect_time = vrai
jmeter.save.saveservice.assertion_results_failure_message = vrai
# le format d'horodatage doit inclure l'heure et doit inclure la date.
# Par exemple, la valeur par défaut, qui est en millisecondes depuis l'époque :
jmeter.save.saveservice.timestamp_format = ms
# Ou ce qui suit conviendrait également
# jmeter.save.saveservice.timestamp_format = aaaa/MM/jj HH:mm:ss
                        

14.2.1.3 Configuration du contrôleur de transactions

Si vous utilisez des contrôleurs de transaction , pour garantir des résultats plus précis :

  • décochez la case ( il s'agit de la configuration par défaut ) : Générer un échantillon parent
  • Si le contrôleur de transaction est utilisé comme conteneur pour représenter une demande de page HTML qui déclenchera des appels Ajax et que vous ne voulez que le contrôleur de transaction dans votre rapport, cliquez avec le bouton droit sur le nœud et appliquez la politique de nommage.
    Vous obtiendrez ceci :

14.2.2 Paramètres généraux

Toutes les propriétés doivent être précédées de
jmeter.reportgenerator.

Paramètres

Attribut
La description
Obligatoire
report_title
Titre utilisé dans le rapport généré.
Par défaut : "Tableau de bord Apache JMeter"
Non
format de date
Format de date par défaut de l'API Java SimpleDateFormat avec Locale.ANGLAIS.
Le format de date par défaut est aaaaMMjjHHmmss
Utile lorsque vous souhaitez générer un rapport après le test de charge et que le fichier de résultats contient un horodatage dans un autre fuseau horaire. Dans ce cas, le format de la date doit inclure le fuseau horaire (zzz).
Si jmeter.save.saveservice.timestamp_format ne contient pas d'année, utilisez 1970 comme année

Exemple : jj/MM/aaaa HH:mm:ss zzz
Non
date de début
Date de début de la plage de données à utiliser pour le rapport.
Le format de date est défini par la propriété date_format.
Par défaut : non rempli, ce qui signifie que la plage de données sera utilisée depuis le début
Non
date de fin
Date de fin de la plage de données à utiliser pour le rapport.
Le format de date est défini par la propriété date_format.
Par défaut : non rempli, ce qui signifie que la plage de données sera utilisée jusqu'à la fin
Non
granularité_globale
Granularité des graphiques dans le temps. Les données sont agrégées pour avoir des ticks de 1 minute.
La granularité doit être supérieure à 1 seconde (1 000), sinon les graphiques de débit seront incorrects.
Par défaut : "60000" (1 minute)
Non
apdex_satisfied_threshold
Définit le seuil de satisfaction pour le calcul APDEX (en ms).
Par défaut : 500
Non
apdex_tolerated_threshold
Définit le seuil de tolérance pour le calcul APDEX (en ms).
Par défaut : 1500
Non
jmeter.reportgenerator.apdex_per_transaction
Définit le seuil de satisfaction et de tolérance pour des échantillons spécifiques.
Utilisez des exemples de noms ou d'expressions régulières.
Le format est sample_name:satisfaction|tolerance[;]
Les valeurs sont en millisecondes.
Remarquez les deux-points entre le nom de l'échantillon et les valeurs, le tuyau entre les seuils et le point-virgule à la fin pour séparer les différents échantillons. N'oubliez pas d'échapper après le point-virgule pour couvrir plusieurs lignes.
Exemple:
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\
    échantillons12:3000|4000;\
    scénario01-12:5000|6000
Non
sample_filter
Définit le filtre d'échantillons à conserver pour générer des graphiques et des statistiques. Une valeur vide désactive le filtrage.
Format : Expression régulière.
Défaut: ""
Non
temp_dir
Définit le répertoire temporaire utilisé par le processus de génération s'il a besoin d'opérations d'E/S de fichier.
Par défaut : temp
Non
fenêtre_statistique
Définit la taille de la fenêtre glissante utilisée par l'évaluation des centiles. Attention : une valeur plus élevée offre une meilleure précision mais nécessite plus de mémoire.
Par défaut : 20000
Non
Les centiles utilisés par le tableau récapitulatif et les graphiques de centiles peuvent être ajustés à différentes valeurs à l'aide des 3 propriétés :
  • aggregate_rpt_pct1 : 90 par défaut
  • aggregate_rpt_pct2 : 95 par défaut
  • aggregate_rpt_pct3 : 99 par défaut
Les chemins relatifs sont construits à partir du répertoire de travail JMeter (par défaut : bin ).

Vous pouvez définir certaines propriétés générales qui sont utilisées par la configuration du générateur. Ces propriétés sont nommées librement mais vous devez utiliser le préfixe

jmeter.reportgenerator.
afin d'éviter les chevauchements de propriétés.

Par exemple:

Définition de la propriété :
jmeter.reportgenerator.overall_granularity=60000
Référence de la propriété :
${jmeter.reportgenerator.overall_granularity}

14.2.3 Paramètres du graphique

Chaque propriété décrivant une configuration de graphe doit être préfixée par

jmeter.reportgenerator.graph.
suivi de l'identifiant du graphique.

14.2.3.1 Propriétés générales

Tous les graphiques prennent en charge ces propriétés :

Paramètres

Attribut
La description
Obligatoire
nom du cours
Le nom de classe complet du graphe
La classe du graphe doit étendre org.apache.jmeter.report.processor.graph.AbstractGraphConsumer .
Voir la section Graphique par défaut pour plus de détails.
Oui
exclus_controllers
Définit si le graphique ignore les échantillons de contrôleur. Par défaut : faux
Non
Titre
Définit le titre du graphique. Défaut: ""
Non

14.2.3.2 Propriétés spécifiques

Les propriétés de graphique spécifiques doivent utiliser le préfixe :

jmeter.reportgenerator.graph.<graph_id>.property
Le nom de la propriété sera mappé à l'aide de la transformation de casse camel et la méthode correspondante de la classe sera appelée avec la valeur de la propriété comme argument.

Par exemple:

jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150
induit l'appel de la méthode setGranularity(150) sur l'instance du graphe.

14.2.4 Exporter les paramètres

Chaque propriété décrivant une configuration d'exportateur doit être préfixée par

jmeter.reportgenerator.exporter
suivi de l'identifiant de l'exportateur.

14.2.4.1 Propriétés générales

Tous les exportateurs prennent en charge ces propriétés :

Paramètres

Attribut
La description
Obligatoire
nom du cours
Le nom de classe complet de l'exportateur
La classe de l'exportateur doit implémenter org.apache.jmeter.report.dashboard.DataExporter .
Oui
filter_only_sample_series
Définit si series_filter (voir ci-dessous) s'applique uniquement aux exemples de séries. Par défaut : vrai
Non
series_filter
Définit le filtre de série. Une valeur vide désactive le filtrage. Si elle n'est pas vide, la regex doit se terminer par (-success|-failure)?$
Format : expression régulière. Défaut: ""
Non
show_controllers_only
Définit si seules les séries de contrôleurs sont affichées. Par défaut : faux
Non

14.2.4.2 Propriétés spécifiques

Les propriétés d'exportateur spécifiques doivent utiliser le préfixe

jmeter.reportgenerator.exporter.<exporter_id>.property

Paramètres

Attribut
La description
Obligatoire
rép_sortie
Définit le répertoire de destination des pages html générées. Par défaut : sortie de rapport
Non
template_dir
Définit le répertoire source des fichiers modèles à partir desquels les pages html sont générées. Par défaut : modèle de rapport
Non

14.2.4.3 Propriétés du graphe

Les propriétés de graphique permettent aux exportateurs d'écraser certaines données de graphique.
Ils doivent utiliser le préfixe :

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

Paramètres

Attribut
La description
Obligatoire
friponne
Définit l'abscisse minimale du graphique.
Non
maxX
Définit l'abscisse maximale du graphique.
Non
minY
Définit l'ordonnée minimale du graphique.
Non
maxY
Définit l'ordonnée maximale du graphique.
Non

14.2.4.4 Mécanismes de filtrage

Contrairement au filtrage dans la section Propriétés générales qui écarte les données avant les calculs, ici le filtrage est effectué après les calculs et sert à simplifier le rapport final.

La propriété series_filter permet de filtrer quelle série d'un graphe (resp. lignes d'un tableau récapitulatif) à l'aide d'une expression régulière correspond au nom de la série (resp. de la ligne). Cependant, même si le nom de la série (resp. ligne) correspond au filtre, le paramétrage des autres propriétés de filtrage peut conduire à son rejet. A l'inverse s'il n'y a pas de correspondance, les autres propriétés peuvent permettre de la conserver.

Les tableaux suivants montrent comment fonctionne le paramétrage des propriétés de filtrage.

Cas d'abandon lorsqu'il y a correspondance de modèle
filter_only_sample_series Le graphique/résumé prend en charge la discrimination des contrôleurs La série actuelle est une série de contrôleurs show_controllers_only Mis au rebut
Faux Faux - Faux Faux
Vrai
- Faux
Vrai
Vrai Faux Faux
Vrai
Vrai Faux
Vrai
Vrai Faux - Faux
Vrai
- Faux
Vrai
Vrai Faux Faux
Vrai Vrai
Vrai Faux Faux
Vrai

Cas de rétention lorsqu'il n'y a pas de correspondance de modèle
filter_only_sample_series Le graphique/résumé prend en charge la discrimination des contrôleurs Gardé
Faux Faux Faux
Vrai
Vrai Faux Vrai
Vrai Faux

Une configuration incorrecte du filtre peut entraîner la génération de graphiques/tableaux récapitulatifs vides :
  • Si vous définissez la propriété show_controllers_only et que le graphique est configuré pour exclure les contrôleurs.
  • Si la propriété series_filter ne correspond à aucune série.

14.2.5 Exemple de configuration

Vous pouvez copier la configuration suivante dans votre fichier user.properties afin de tester le générateur de rapport.

# Configurez cette propriété pour changer le titre du rapport
#jmeter.reportgenerator.report_title=Tableau de bord Apache JMeter

# Modifiez ce paramètre si vous souhaitez modifier la granularité des graphiques dans le temps.
# La granularité doit être supérieure à 1000 (1 seconde) sinon les graphiques de débit seront incorrects
# voir bogue 60149
#jmeter.reportgenerator.overall_granularity=60000

 Modifiez ce paramètre si vous souhaitez modifier la granularité de la distribution du temps de réponse
# Réglé sur 100 ms par défaut
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100

# Modifiez ce paramètre si vous souhaitez remplacer le seuil de satisfaction APDEX.
jmeter.reportgenerator.apdex_satisfied_threshold=1500

# Modifiez ce paramètre si vous souhaitez remplacer le seuil de tolérance APDEX.
jmeter.reportgenerator.apdex_tolerated_threshold=3000

# Définit le répertoire de destination des pages html générées, il est préférable de le changer à chaque génération
# Cela remplacera la valeur définie via l'option de ligne de commande -o
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report

# Indique quelles séries de graphes sont filtrées (expression régulière)
# Dans l'exemple ci-dessous, nous filtrons sur les échantillons de recherche et de commande
# Notez que la fin du motif doit toujours inclure (-success|-failure)?$
# Transactions par seconde suffixes Transactions avec "-success" ou "-failure" selon
# sur le résultat
#jmeter.reportgenerator.exporter.html.series_filter=^(Recherche|Commande)(-succès|-échec) ?$

# Indique si le filtre de série s'applique uniquement aux séries d'échantillons
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
                    
Adaptez le paramètre output_dir à votre environnement.

Cette configuration permet de générer un rapport où :

  • Les graphiques dans le temps ont une granularité temporelle égale à 1 minute.
  • Le seuil de satisfaction pour le calcul ADPEX est de 1 seconde et demi.
  • Le seuil de tolérance pour le calcul ADPEX est de 3 secondes.
  • Les fichiers HTML sont générés dans le répertoire /tmp/test-report .
  • Seules les séries dont le nom commence par " s0 " ou " s1 " sont affichées.
  • Le filtre précédent ne s'applique qu'aux graphiques (resp. tableaux récapitulatifs) dont les séries (resp. lignes) correspondent à des échantillons

14.3 Génération de rapports

La génération de rapport peut être effectuée en tant que processus autonome à partir d'un exemple de fichier journal ou automatiquement après l'exécution d'un test de charge.

14.3.1 Génération à partir d'un exemple de fichier journal CSV existant

Utilisez la commande suivante :

jmeter -g <fichier journal> -o <Chemin d'accès au dossier de sortie>

14.3.2 Génération après test de charge

Utilisez la commande suivante :

jmeter -n -t <fichier JMX de test> -l <fichier journal de test> -e -o <chemin d'accès au dossier de sortie>

14.3.3 Génération à l'aide du menu Outils de l'interface graphique

Vous pouvez générer le rapport HTML en utilisant l'élément de menu Outils → Générer un rapport HTML :

Figure 14.1.  Menu de la boîte de dialogue Rapport HTML
Figure 14.1. Menu de la boîte de dialogue Rapport HTML

Pour chaque paramètre voir le tableau suivant :

Paramètres

Attribut
La description
Obligatoire
Fichier de résultats (csv ou jtl)
La sortie CSV d'une exécution de tes
Oui
fichier user.properties
Le fichier user.properties utilisé pour exécuter le test de charge
Oui
Répertoire de sortie
Le répertoire où vous voulez que le rapport soit créé (doit être vide)
Non

Si aucun répertoire de sortie n'est défini, le contrôleur utilisera ${JMETER_HOME}/bin/report-output .

Il vous suffit ensuite de cliquer sur le bouton Générer un rapport et d'attendre qu'une boîte de dialogue d'information apparaisse

Si la génération du rapport prend plus de deux minutes, ajustez la propriété generate_report_ui.generation_timeout

14.4 Graphiques par défaut

En raison des limitations de cette première version, chaque graphique par défaut doit être déclaré dans les propriétés JMeter. Sinon, les vues du graphique seront vides.

Tous les graphiques fournis par ce moteur de rapport sont situés dans le package org.apache.jmeter.report.processor.graph.impl

Le générateur de tableau de bord fournit les classes de graphique suivantes :

Graphique La description Prend en charge la discrimination du contrôleur
ActiveThreadsGraphConsumer Ce graphique représente le nombre de threads actifs au fil du temps. Faux
BytesThroughputGraphConsumer Ce graphique représente le débit des données reçues et envoyées au fil du temps. Faux
CodesPerSecondGraphConsumer Ce graphique représente le taux de codes de réponse au fil du temps. Faux
HitsPerSecondGraphConsumer Ce graphique représente le taux de demandes terminées au fil du temps. Faux
LatencyOverTimeGraphConsumer Ce graphique représente le temps de latence moyen dans le temps. Vrai
ConnectTimeOverTimeGraphConsumer Ce graphique représente le temps de connexion dans le temps. Vrai
LatencyVSRequestGraphConsumer Ce graphique représente le temps de latence médian et moyen en fonction du nombre de requêtes en cours. Faux
ResponseTimeDistributionGraphConsumer Ce graphique représente la répartition des échantillons en fonction de leur temps écoulé et de leur nom. Vrai
ResponseTimeOverTimeGraphConsumer Ce graphique représente le temps de réponse moyen dans le temps. Vrai
ResponseTimePercentilesGraphConsumer Ce graphique représente les centiles du temps écoulé au fil du temps. Vrai
ResponseTimePercentilesOverTimeGraphConsumer Ce graphique montre le temps de réponse Min/Max et 3 percentiles au fil du temps. Vrai
ResponseTimeVSRequestGraphConsumer Ce graphique représente le temps de réponse médian et moyen en fonction du nombre de requêtes en cours. Faux
TimeVSThreadGraphConsumer Ce graphique représente le temps de réponse moyen en fonction du nombre de threads actifs en cours.

Les séries *-agrégées représentent le temps de réponse moyen quel que soit le nombre de threads actifs actuels. Ces séries sont représentées par un seul point car le nombre de threads actifs actuels est agrégé à une moyenne. Alors pour ces points :

  • L'abscisse est la moyenne du nombre de threads actifs actuels lorsque les échantillons de la série se terminent.
  • L'ordonnée est la moyenne des temps de réponse pour les échantillons de la série quel que soit le nombre de threads actifs en cours.

Vrai
TransactionsPerSecondGraphConsumer Ce graphique représente le taux de transaction par nom d'échantillon au fil du temps. Vrai

14.5 Génération de graphes douaniers au fil du temps

Vous pouvez représenter graphiquement n'importe quelle sample_variable dans CSV au fil du temps, vous pouvez personnaliser vos graphiques en définissant leurs propriétés dans le fichier user.properties.
Ils doivent utiliser le préfixe id custom_ :

jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>
Pour préciser que ce graphe est personnalisé :
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer

Paramètres

Attribut
La description
Obligatoire
set_X_Axis
Définit le nom de l'axe X du graphique.
Oui
set_Y_Axis
Définit le nom de l'axe Y du graphique.
Oui
set_Content_Message
Définit le message affiché lorsque le curseur se trouve sur un point du graphique.
Oui
set_Sample_Variable_Name
Nom de la colonne que vous souhaitez représenter graphiquement dans le csv.
Oui

Voici un exemple de configuration graphique personnalisée qui représente graphiquement la variable ts-hit :

jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=Haut de bloc
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Nombre de résultats
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Au fil du temps
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=Nombre d'accès :
                        

14.6 Vous souhaitez améliorer le tableau de bord des rapports ?

Si vous souhaitez contribuer à de nouveaux graphiques ou améliorer les graphiques actuels, vous pouvez lire cette documentation développeur .
Lisez cette documentation sur la contribution.
Go to top