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.
python 2.7.11 JMeter 3.1
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
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)
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)
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