[PYTHON] Analysieren Sie die Jtl-Datei von JMeter mit Pandas

Hintergrund

Ich mache Lasttests und Leistungsbewertungen mit JMeter, aber da es schwierig ist, die Ausgabe-Jtl-Datei einzeln im GUI-Modus von JMeter zu öffnen, werde ich sie mit Pandas berechnen.

Betrieb bestätigte Version

python 2.7.11 JMeter 3.1

Führen Sie JMeter aus und rufen Sie die Jtl-Datei ab

Führen Sie JMeter im Befehlsmodus wie unten gezeigt aus, um die Jtl-Datei (CSV-Format) abzurufen.

jmeter.bat -n -t test.jmx -l result.jtl

Beispiel für eine Statistikberechnung

Jtl-Dateien lesen und einfache Statistiken berechnen

Mit dem CSV-Format ist dies einfach, da es mit einer Zeile in das DataFrame-Format konvertiert werden kann.

import pandas as pd
#Jtl-Datei lesen
df = pd.read_csv(jtl_file_name)

#Extraktion der Zielsäule(Hier Startzeit und verstrichene Zeit)
df = df.loc[:, ['timeStamp', 'elapsed']]
#Gesamtzahl der Threads
cnt = len(df.index)
#Mindestwert
min = df['elapsed'].min()
#Maximalwert
max = df['elapsed'].max()
#Durchschnittswert
avg = df['elapsed'].mean()
#Standardabweichung
std = df['elapsed'].std(ddof=False)

Berechnung des Durchsatzes (# / Sek.)

Teilen Sie die Gesamtzahl der Threads durch die Zeit, die für den gesamten Prozess benötigt wird. Ich bezog mich auf Folgendes. https://jmeter.apache.org/usermanual/glossary.html

#Fügen Sie die Startzeit und die verstrichene Zeit jedes Threads hinzu und fügen Sie sie als neue Spalte hinzu, um die Endzeit zu erhalten.
df['end_time'] = df['timeStamp'] + df['elapsed']
#Holen Sie sich die minimale Startzeit
start = df['timeStamp'].min()
#Holen Sie sich die maximale Endzeit
end = df['end_time'].max()
#Teilen Sie die Gesamtzahl der Threads durch die Zeit, die für den gesamten Prozess benötigt wird. Multiplizieren Sie 1000 für Sekunden.
tp = float(cnt)*1000.0/(end - start)

Impressionen

Pandas bequem. Ich denke, es ist möglich, Statistiken für jeden Prozess nach Gruppen zu sammeln, aber diesmal ist es unnötig, also werde ich es nicht tun. Da die Verarbeitung für einen Moment langsam ist, empfinde ich sie als etwas übertrieben für das, was ich tun möchte, aber angesichts des Freiheitsgrades und der Erweiterbarkeit ist der Verdienst groß.

Recommended Posts

Analysieren Sie die Jtl-Datei von JMeter mit Pandas
[Python] Laden von CSV-Dateien mit Pandas
Kreuztabelle mit Pandas
Kombinieren Sie mehrere mit Pandas geladene Excel-Dateien zu einer
Analysieren Sie die Aktienkurse mithilfe der Pandas-Datenaggregation und der Gruppenoperationen
Zeichnen Sie mit Pandas mehrere Diagramme
Datenanalyse mit Python-Pandas