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.
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 ¶
jmeter.reportgenerator.
Paramètres
Par défaut : "Tableau de bord Apache JMeter"
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).
Exemple : jj/MM/aaaa HH:mm:ss zzz
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
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
Par défaut : 1500
Utilisez des exemples de noms ou d'expressions régulières.
Le format est sample_name:satisfaction|tolerance[;]
Les valeurs sont en millisecondes.
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\ échantillons12:3000|4000;\ scénario01-12:5000|6000
Format : Expression régulière.
Défaut: ""
Par défaut : temp
Par défaut : 20000
- aggregate_rpt_pct1 : 90 par défaut
- aggregate_rpt_pct2 : 95 par défaut
- aggregate_rpt_pct3 : 99 par défaut
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
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.
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>.propertyLe 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=150induit 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.exportersuivi 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
La classe de l'exportateur doit implémenter org.apache.jmeter.report.dashboard.DataExporter .
Format : expression régulière. Défaut: ""
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
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
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.
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 |
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 |
- 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
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 :
Pour chaque paramètre voir le tableau suivant :
Paramètres
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
14.4 Graphiques par défaut ¶
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 :
|
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
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.