[PYTHON] Analyser le fichier jtl de JMeter à l'aide de pandas

Contexte

Je fais des tests de charge et des évaluations de performances avec JMeter, mais comme il est difficile d'ouvrir le fichier jtl de sortie en mode GUI de JMeter un par un, je le calculerai avec des pandas.

Opération version confirmée

python 2.7.11 JMeter 3.1

Exécutez JMeter et obtenez le fichier jtl

Exécutez JMeter en mode commande comme indiqué ci-dessous pour obtenir le fichier jtl (format csv).

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

Exemple de calcul de statistiques

Lecture de fichiers jtl et calcul de statistiques simples

Avec le format csv, c'est facile car il peut être converti au format DataFrame en une seule ligne.

import pandas as pd
#Lire le fichier jtl
df = pd.read_csv(jtl_file_name)

#Extraction de la colonne cible(Ici, heure de début et temps écoulé)
df = df.loc[:, ['timeStamp', 'elapsed']]
#Nombre total de threads
cnt = len(df.index)
#valeur minimum
min = df['elapsed'].min()
#Valeur maximum
max = df['elapsed'].max()
#Valeur moyenne
avg = df['elapsed'].mean()
#écart-type
std = df['elapsed'].std(ddof=False)

Calcul du débit (# / s)

Divisez le nombre total de threads par le temps nécessaire à l'ensemble du processus. J'ai évoqué ce qui suit. https://jmeter.apache.org/usermanual/glossary.html

#Ajoutez l'heure de début et le temps écoulé de chaque thread et ajoutez-les en tant que nouvelle colonne pour obtenir l'heure de fin.
df['end_time'] = df['timeStamp'] + df['elapsed']
#Obtenez l'heure de début minimale
start = df['timeStamp'].min()
#Obtenez l'heure de fin maximale
end = df['end_time'].max()
#Divisez le nombre total de threads par le temps nécessaire à l'ensemble du processus. Multipliez 1000 pour le nombre de secondes.
tp = float(cnt)*1000.0/(end - start)

Impressions

pandas pratique. Je pense qu'il est possible de collecter des statistiques pour chaque processus par groupe par, mais cette fois ce n'est pas nécessaire, donc je ne le ferai pas. Comme le traitement est lent pendant un moment, je pense que c'est un peu exagéré pour ce que je veux faire, mais compte tenu du degré de liberté et d'extensibilité, le mérite est grand.

Recommended Posts

Analyser le fichier jtl de JMeter à l'aide de pandas
[Python] Chargement de fichiers csv à l'aide de pandas
Tableau croisé à l'aide de Pandas
Combinez plusieurs fichiers Excel chargés à l'aide de pandas en un seul
Analyser les cours des actions à l'aide de l'agrégation de données pandas et des opérations du groupe
Dessinez plusieurs graphiques à l'aide de Pandas
Analyse de données à l'aide de pandas python