JMeter unterstützt die Erstellung von Dashboard-Berichten, um Diagramme und Statistiken aus einem Testplan zu erhalten.
Dieses Kapitel beschreibt die Konfiguration und Verwendung des Generators.
Der Dashboard-Generator ist eine modulare Erweiterung von JMeter. Sein Standardverhalten besteht darin, Beispiele aus CSV-Dateien zu lesen und zu verarbeiten, um HTML-Dateien mit Diagrammansichten zu generieren. Es kann den Bericht am Ende eines Belastungstests oder auf Anfrage generieren.
Dieser Bericht enthält die folgenden Messwerte:
APDEX-Tabelle (Application Performance Index), die für jede Transaktion den APDEX basierend auf konfigurierbaren Werten für tolerierte und erfüllte Schwellenwerte berechnet
Ein Anforderungszusammenfassungsdiagramm, das den Prozentsatz erfolgreicher und fehlgeschlagener Anforderungen (Beispielergebnisse des Transaktionscontrollers werden nicht berücksichtigt) zeigt:
Eine Statistiktabelle, die in einer Tabelle eine Zusammenfassung aller Metriken pro Transaktion bereitstellt, einschließlich 3 konfigurierbarer Perzentile:
Eine Fehlertabelle mit einer Zusammenfassung aller Fehler und deren Anteil an den Gesamtanfragen :
Eine Tabelle mit den 5 häufigsten Fehlern nach Sampler, die für jeden Sampler (standardmäßig mit Ausnahme des Transaktionscontrollers) die 5 häufigsten Fehler enthält:
Zoombares Diagramm, in dem Sie jede Transaktion aktivieren / deaktivieren können, um sie anzuzeigen / auszublenden für:
Reaktionszeiten im Laufe der Zeit (einschließlich Beispielergebnisse des Transaktionscontrollers):
Antwortzeiten Perzentile im Zeitverlauf (nur erfolgreiche Antworten) :
Aktive Threads im Laufe der Zeit:
Byte-Durchsatz im Laufe der Zeit (Ignoriert Beispielergebnisse des Transaktionscontrollers):
Latenzen im Laufe der Zeit (einschließlich Beispielergebnisse des Transaktionscontrollers):
Verbinden Sie sich im Laufe der Zeit (einschließlich Beispielergebnisse des Transaktionscontrollers):
Treffer pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
Antwortcodes pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
Transaktionen pro Sekunde (einschließlich Beispielergebnisse des Transaktionscontrollers):
Antwortzeit vs. Anfrage pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
Latenz im Vergleich zu Anfragen pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
Übersicht über die Reaktionszeit (ohne Beispielergebnisse des Transaktionscontrollers):
Perzentile der Antwortzeiten (einschließlich Beispielergebnisse des Transaktionscontrollers):
Zeiten vs. Threads (einschließlich Transaktionscontroller-Beispielergebnisse):
Im verteilten Modus zeigt dieses Diagramm auf einer horizontalen Achse die Anzahl der Threads für 1 Server. Es ist eine aktuelle Einschränkung
Antwortzeitverteilung (einschließlich Beispielergebnisse des Transaktionscontrollers):
Die Dashboard-Generierung verwendet JMeter-Eigenschaften, um den Bericht anzupassen. Einige Eigenschaften werden für allgemeine Einstellungen verwendet, andere für eine bestimmte Diagrammkonfiguration oder Exportprogrammkonfiguration.
Alle Eigenschaften des Berichtsgenerators finden Sie in der Datei reportgenerator.properties . Um diese Eigenschaften anzupassen, sollten Sie sie in die Datei user.properties kopieren und ändern.
Stellen Sie sicher, dass Sie die Eigenschaft jmeter.reportgenerator.exporter.html.series_filter so einstellen , dass nur die gewünschten Transaktionen im Bericht enthalten sind, wenn Sie nicht alles möchten.
Im folgenden Beispiel müssen Sie nur Search|Order ändern , den Rest behalten:
Damit der Generator funktioniert, muss die von JMeter generierte CSV-Datei bestimmte erforderliche Daten enthalten, die in der letzten Live-Version von JMeter standardmäßig korrekt sind .
Wenn Sie diese Einstellungen geändert haben, überprüfen Sie, ob Ihre JMeter-Konfiguration diesen Einstellungen folgt (dies sind die Standardeinstellungen):
jmeter.save.saveservice.bytes = wahr
# Nur verfügbar mit HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.label = wahr
jmeter.save.saveservice.latency = wahr
jmeter.save.saveservice.response_code = wahr
jmeter.save.saveservice.response_message = wahr
jmeter.save.saveservice.successful = wahr
jmeter.save.saveservice.thread_counts = wahr
jmeter.save.saveservice.thread_name = wahr
jmeter.save.saveservice.time = wahr
jmeter.save.saveservice.connect_time = wahr
jmeter.save.saveservice.assertion_results_failure_message = wahr
# Das Zeitstempelformat muss die Uhrzeit enthalten und sollte das Datum enthalten.
# Zum Beispiel der Standard, der Millisekunden seit der Epoche ist:
jmeter.save.saveservice.timestamp_format = ms
# Oder folgendes wäre auch geeignet
# jmeter.save.saveservice.timestamp_format = jjjj/MM/tt HH:mm:ss
14.2.1.3 Konfiguration des Transaktionscontrollers ¶
Wenn Sie Transaktionscontroller verwenden , um möglichst genaue Ergebnisse zu gewährleisten:
Deaktivieren Sie das Kontrollkästchen ( dies ist die Standardkonfiguration ):
Generate parent sample
Wenn der Transaktionscontroller als Container verwendet wird, um eine Anforderung für eine HTML-Seite darzustellen, die Ajax-Aufrufe auslöst, und Sie nur den Transaktionscontroller in Ihrem Bericht haben möchten, klicken Sie mit der rechten Maustaste auf den Knoten und wenden Sie die Benennungsrichtlinie an
Sie erhalten dies:
Allen Eigenschaften muss das Präfix vorangestellt werden
jmeter.reportgenerator.
Parameter
Attribut
Beschreibung
Erforderlich
Berichtstitel
Im generierten Bericht verwendeter Titel.
Standard: "Apache JMeter-Dashboard"
Nein
Datumsformat
Standarddatumsformat von
SimpleDateFormat Java API mit Locale.ENGLISH.
Das Standarddatumsformat ist jjjjMMttHHmmss
Nützlich, wenn Sie nach dem Belastungstest einen Bericht generieren möchten und die Ergebnisdatei einen Zeitstempel in einer anderen Zeitzone enthält. In diesem Fall muss das Datumsformat die Zeitzone (zzz) enthalten.
Wenn jmeter.save.saveservice.timestamp_format kein Jahr enthält, verwenden Sie 1970 als Jahr
Beispiel: tt/MM/jjjj HH:mm:ss zzz
Nein
Anfangsdatum
Startdatum des Datenbereichs, der für den Bericht verwendet werden soll.
Das Datumsformat wird durch die Eigenschaft date_format definiert.
Standard: nicht gefüllt, was bedeutet, dass der Datenbereich von Anfang an verwendet wird
Nein
Endtermin
Enddatum des Datenbereichs, der für den Bericht verwendet werden soll.
Das Datumsformat wird durch die Eigenschaft date_format definiert.
Standard: nicht gefüllt, dh der Datenbereich wird bis zum Ende verwendet
Nein
Gesamtgranularität
Granularität von Diagrammen über die Zeit. Die Daten werden aggregiert, um 1-Minuten-Ticks zu haben.
Die Granularität muss höher als 1 Sekunde (1000) sein, andernfalls sind die Durchsatzdiagramme nicht korrekt
Voreinstellung: „60000“ (1 Minute)
Nein
apdex_satisfied_threshold
Legt den Zufriedenheitsschwellenwert für die
APDEX-
Berechnung (in ms) fest.
Standard: 500
Nein
apdex_tolerated_threshold
Legt die Toleranzschwelle für die APDEX-Berechnung (in ms) fest.
Standard: 1500
Nein
jmeter.reportgenerator.apdex_per_transaction
Legt die Zufriedenheits- und Toleranzschwelle für bestimmte Proben fest.
Verwenden Sie Beispielnamen oder reguläre Ausdrücke.
Das Format ist Beispielname: Zufriedenheit|Toleranz[;] Die
Werte sind in Millisekunden angegeben.
Beachten Sie den Doppelpunkt zwischen Probenname und Werten, die Pipe zwischen Schwellenwerten und das Semikolon am Ende, um verschiedene Proben zu trennen. Vergessen Sie nicht, nach dem Semikolon zu entkommen, um mehrere Zeilen zu umfassen.
Legt den Filter der Stichproben fest, die zum Generieren von Diagrammen und Statistiken beibehalten werden sollen. Ein leerer Wert deaktiviert die Filterung.
Format: Regulärer Ausdruck.
Standard: ""
Nein
temp_dir
Legt das temporäre Verzeichnis fest, das vom Generierungsprozess verwendet wird, wenn Datei-E/A-Operationen erforderlich sind.
Standard: Temp
Nein
Statistikfenster
Legt die Größe des gleitenden Fensters fest, das von der Perzentilauswertung verwendet wird. Achtung: ein höherer Wert bietet eine bessere Genauigkeit, benötigt aber mehr Speicher.
Standard: 20000
Nein
Perzentile, die von Übersichtstabellen und Perzentildiagrammen verwendet werden, können mithilfe der 3 Eigenschaften auf unterschiedliche Werte angepasst werden:
aggregat_rpt_pct1 : Standardmäßig 90
aggregat_rpt_pct2 : Standardmäßig 95
aggregat_rpt_pct3 : Standardmäßig 99
Relative Pfade werden aus dem JMeter-Arbeitsverzeichnis erstellt (Standard: bin ).
Sie können einige allgemeine Eigenschaften definieren, die von der Generatorkonfiguration verwendet werden. Diese Eigenschaften sind frei benannt, aber Sie sollten das Präfix verwenden
Der vollständig qualifizierte Klassenname des Diagramms
.
Die Klasse des Diagramms muss
org.apache.jmeter.report.processor.graph.AbstractGraphConsumer erweitern .
Weitere Einzelheiten
finden Sie im Abschnitt Standarddiagramm
.
Ja
Ausschluss_Controller
Definiert, ob der Graph Controller-Samples verwirft. Standard: falsch
Bestimmte Diagrammeigenschaften müssen das Präfix verwenden:
jmeter.reportgenerator.graph.<graph_id>.property
Der Name der Eigenschaft wird mithilfe der Camel-Case-Transformation abgebildet und die Übereinstimmungsmethode der Klasse wird mit dem Eigenschaftswert als Argument aufgerufen.
Der vollständig qualifizierte Klassenname des Exporters
.
Die Klasse des Exporters muss
org.apache.jmeter.report.dashboard.DataExporter implementieren
.
Ja
filter_only_sample_series
Definiert, ob series_filter (siehe unten) nur auf Probenserien angewendet wird. Standard: wahr
Nein
series_filter
Legt den Serienfilter fest. Ein leerer Wert deaktiviert die Filterung. Wenn nicht leer, sollte Regex mit (-success|-failure)?$ enden
Format: regulärer Ausdruck. Standard: ""
Nein
show_controllers_only
Legt fest, ob nur Controller-Serien angezeigt werden. Standard: falsch
Anders als bei der Filterung im Abschnitt
Allgemeine Eigenschaften
, die Daten vor Berechnungen verwirft, erfolgt die Filterung hier nach den Berechnungen und dient der Vereinfachung des Abschlussberichts.
Die Eigenschaft series_filter
erlaubt es, welche Reihe eines Diagramms (bzw. Zeilen einer Übersichtstabelle) mit einem regulären Ausdruck zu filtern, der dem Namen der Reihe (bzw. der Zeile) entspricht. Aber auch wenn der Name der Serie (bzw. Zeile) mit dem Filter übereinstimmt, kann das Setzen der anderen Filtereigenschaften zu dessen Verwerfen führen. Wenn umgekehrt keine Übereinstimmung vorhanden ist, können die anderen Eigenschaften zulassen, dass sie beibehalten wird.
Die folgenden Tabellen zeigen, wie die Einstellung der Filtereigenschaften funktioniert.
Fälle des Verwerfens, wenn ein Musterabgleich vorliegt
Sie können die folgende Konfiguration in Ihre user.properties-Datei kopieren, um den Berichtsgenerator zu testen.
# Konfigurieren Sie diese Eigenschaft, um den Berichtstitel zu ändern
#jmeter.reportgenerator.report_title=Apache JMeter-Dashboard
# Ändern Sie diesen Parameter, wenn Sie die Granularität von Zeitdiagrammen ändern möchten.
# Die Granularität muss höher als 1000 (1 Sekunde) sein, andernfalls sind die Durchsatzdiagramme nicht korrekt
# Siehe Fehler 60149
#jmeter.reportgenerator.overall_granularity=60000
Ändern Sie diesen Parameter, wenn Sie die Granularität der Antwortzeitverteilung ändern möchten
# Standardmäßig auf 100 ms eingestellt
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100
# Ändern Sie diesen Parameter, wenn Sie den APDEX-Zufriedenheitsschwellenwert überschreiben möchten.
jmeter.reportgenerator.apdex_satisfied_threshold=1500
# Ändern Sie diesen Parameter, wenn Sie die APDEX-Toleranzschwelle überschreiben möchten.
jmeter.reportgenerator.apdex_tolerated_threshold=3000
# Legt das Zielverzeichnis für generierte HTML-Seiten fest, es ist besser, es für jede Generation zu ändern
# Dadurch wird der durch die Befehlszeilenoption -o festgelegte Wert überschrieben
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report
# Gibt an, welche Diagrammreihen gefiltert werden (regulärer Ausdruck)
# Im folgenden Beispiel filtern wir nach Such- und Bestellmustern
# Beachten Sie, dass das Ende des Musters immer (-success|-failure)?$ enthalten sollte
# Transaktionen pro Sekunde Suffixe Transaktionen mit "-success" oder "-failure", je nachdem
# auf das Ergebnis
#jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$
# Gibt an, ob der Serienfilter nur auf Probenserien angewendet wird
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
Passen Sie den Parameter
output_dir
an Ihre Umgebung an.
Diese Konfiguration ermöglicht das Generieren eines Berichts, in dem:
Zeitdiagramme haben eine Zeitgranularität von 1 Minute.
Die Zufriedenheitsschwelle für die ADPEX-Berechnung beträgt 1,5 Sekunden.
Die Toleranzschwelle für die ADPEX-Berechnung beträgt 3 Sekunden.
Die HTML-Dateien werden im Verzeichnis /tmp/test-report generiert .
Es werden nur Serien angezeigt, deren Name mit „ s0 “ oder „ s1 “ beginnt.
Der vorherige Filter gilt nur für Diagramme (bzw. Übersichtstabellen), bei denen die Reihen (bzw. Zeilen) mit Stichproben übereinstimmen
Aufgrund von Einschränkungen dieser frühen Version muss jedes Standarddiagramm in den JMeter-Eigenschaften deklariert werden. Andernfalls sind die Diagrammansichten leer.
Alle von dieser Report Engine bereitgestellten Grafiken befinden sich im Paket
org.apache.jmeter.report.processor.graph.impl
Der Dashboard-Generator stellt die folgenden Diagrammklassen bereit:
Graph
Beschreibung
Unterstützt Controller-Diskriminierung
ActiveThreadsGraphConsumer
Dieses Diagramm stellt die Anzahl der aktiven Threads im Laufe der Zeit dar.
FALSCH
BytesThroughputGraphConsumer
Dieses Diagramm stellt den Durchsatz von empfangenen und gesendeten Daten im Laufe der Zeit dar.
FALSCH
CodesPerSecondGraphConsumer
Dieses Diagramm stellt die Rate der Antwortcodes im Zeitverlauf dar.
FALSCH
HitsPerSecondGraphConsumer
Dieses Diagramm stellt die Rate der abgeschlossenen Anfragen im Laufe der Zeit dar.
FALSCH
LatencyOverTimeGraphConsumer
Dieses Diagramm stellt die durchschnittliche Latenzzeit im Zeitverlauf dar.
WAHR
ConnectTimeOverTimeGraphConsumer
Dieses Diagramm stellt die Verbindungszeit im Zeitverlauf dar.
WAHR
LatencyVSRequestGraphConsumer
Dieses Diagramm stellt die mittlere und durchschnittliche Latenzzeit in Abhängigkeit von der Anzahl der aktuellen Anfragen dar.
FALSCH
ResponseTimeDistributionGraphConsumer
Dieses Diagramm stellt die Verteilung der Proben in Abhängigkeit von ihrer verstrichenen Zeit und ihrem Namen dar.
WAHR
ResponseTimeOverTimeGraphConsumer
Dieses Diagramm stellt die durchschnittliche Reaktionszeit im Zeitverlauf dar.
WAHR
ResponseTimePercentilesGraphConsumer
Dieses Diagramm stellt die Perzentile der verstrichenen Zeit im Zeitverlauf dar.
WAHR
ResponseTimePercentilesOverTimeGraphConsumer
Dieses Diagramm zeigt die minimale/maximale und 3-Perzentile-Antwortzeit im Zeitverlauf.
WAHR
ResponseTimeVSRequestGraphConsumer
Dieses Diagramm stellt die mittlere und durchschnittliche Antwortzeit in Abhängigkeit von der Anzahl der aktuellen Anfragen dar.
FALSCH
TimeVSThreadGraphConsumer
Dieses Diagramm stellt die durchschnittliche Antwortzeit in Abhängigkeit von der Anzahl der aktuell aktiven Threads dar.
Die *-aggregierten Reihen stellen die durchschnittliche Antwortzeit dar, unabhängig von der Anzahl der aktuell aktiven Threads. Diese Reihen werden durch einen einzigen Punkt dargestellt, da die Anzahl der aktuell aktiven Threads zu einem Durchschnitt aggregiert wird. Also zu diesen Punkten:
Die Abszisse ist der Durchschnitt der Anzahl aktuell aktiver Threads, wenn die Proben der Reihe enden.
Die Ordinate ist der Durchschnitt der Antwortzeit für die Proben der Serie, unabhängig von der Anzahl der aktuell aktiven Threads.
WAHR
TransactionsPerSecondGraphConsumer
Dieses Diagramm stellt die Transaktionsrate nach Beispielname im Zeitverlauf dar.
WAHR
14.5 Generieren von Zolldiagrammen im Laufe der Zeit ¶
Sie können jede sample_variable in CSV im Laufe der Zeit grafisch darstellen, Sie können Ihre Graphen anpassen, indem Sie ihre Eigenschaften in der Datei user.properties festlegen.
Sie müssen das ID-Präfix custom_ verwenden :
Legt die angezeigte Meldung fest, wenn sich der Cursor auf einem Punkt des Diagramms befindet.
Ja
set_Sample_Variable_Name
Name der Spalte, die Sie in der CSV-Datei grafisch darstellen möchten.
Ja
Hier ist ein Beispiel für eine benutzerdefinierte Diagrammkonfiguration, die die Variable ts-hit grafisch darstellt :
jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=Chunk-Treffer
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Anzahl der Treffer
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Im Laufe der Zeit
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=Anzahl der Treffer:
14.6 Möchten Sie das Report Dashboard verbessern? ¶
Wenn Sie neue Grafiken beisteuern oder bestehende verbessern möchten, können Sie diese Entwicklerdokumentation lesen .
Lesen Sie diese Dokumentation zum Beitragen.