JMeter – Graphique avec OpenOffice.org Calc (partie 1)

Donc, vous venez d’effectuer un tir de charges, vous avez un beau fichier CSV (voir introduction pour le format csv) qui contient les résultats de votre tir de charges.

Vous avez organisé votre script JMeter de la manière suivante : des éléments Contrôleurs de transaction pour regrouper les ‘actions métiers’ c’est-à-dire les différentes requêtes pour effectuer un traitement de l’application.

Vous avez pris la peine de mettre un « identifiant » dans le nom des contrôleurs de transaction, ici « .jmx » (choix totalement arbitraire).

Vous pouvez donc faire un grep (ou un filtre) pour ‘extraire‘ les lignes correspondantes seulement à une action métiers. Le résultat est un fichier CSV de ce type (ici pour test de charge distribué sur 3 injecteurs).

(Pourquoi extraire seulement les transactions, et ne pas garder l’ensemble des requêtes ? Parce qu’on veut faire un graphique dans OpenOffice.org Calc ou Excel, les deux étant limités dans 1/ le nombre de lignes d’une feuille (en général 65353 lignes), et 2/ également dans le nombre de lignes d’un graphique (en général 32767 lignes). Donc il faut ne garder que les transactions métiers consolidées, permettant ainsi de réduire de manière drastique mais efficace le nombre de ligne de son fichier CSV.)

2008-07-23;11:19:43;6946;01_SD_Connexion.jmx;200;TG1 App2; 2-1;true;;1337998;0;jmeter01
2008-07-23;11:19:16;6885;01_SR_Connexion.jmx;200;TG1 App2; 3-1;true;;1336987;0;jmeter03
2008-07-23;11:19:30;5187;02_SD_Nouveau_Incident.jmx;200;TG1 App2; 2-1;true;;144896;0;jmeter02
2008-07-23;11:19:22;4480;02_SD_Nouveau_Incident.jmx;200;TG1 App2; 2-1;true;;144896;0;jmeter03
2008-07-23;11:19:50;4989;02_SD_Nouveau_Incident.jmx;200;TG1 App2; 2-1;true;;144896;0;jmeter01
2008-07-23;11:19:52;3168;02_Ecran_Demande_Service.jmx;200;TG1 App2; 3-1;true;;90260;0;jmeter01
2008-07-23;11:19:27;1391;03_SD_Saisie_Formulaire.jmx;200;TG1 App2; 2-1;true;;13209;0;jmeter03
2008-07-23;11:19:35;1554;03_SD_Saisie_Formulaire.jmx;200;TG1 App2; 2-1;true;;13209;0;jmeter02
2008-07-23;11:19:55;570;03_SD_Saisie_Formulaire.jmx;200;TG1 App2; 2-1;true;;13209;0;jmeter01
2008-07-23;11:19:36;2287;02_Ecran_Demande_Service.jmx;200;TG1 App2; 3-1;true;;90260;0;jmeter02
2008-07-23;11:19:28;3254;04_SD_Enregistrer.jmx;;TG1 App2; 2-1;false;;56107;0;jmeter03
2008-07-23;11:19:37;3707;04_SD_Enregistrer.jmx;;TG1 App2; 2-1;false;;56107;0;jmeter02

Comme il s’agit d’un fichier CSV, il est donc facilement ouvrable/importable dans un logiciel tableur, comme OpenOffice.org Calc ou bien Microsoft Excel. Pour ce tutoriel, je vous propose de le faire avec OpenOffice.org Calc (ici version 3 sous OpenSolaris). Vous pouvez néanmoins le faire avec Microsoft Excel car c’est à peu près le même mode opératoire.

Pour importer le fichier CSV, à partir de Calc, menu Fichier > Ouvrir. Rechercher le fichier CSV, puis cliquer sur Ouvrir. La fenêtre suivante apparaît.

Choisir le séparateur Point-virgule, puis OK.

Voici le résultat de l’importation dans OpenOffice.org Calc :

Nous allons ajouter une ligne en début de tableau afin de mettre un libellé à chacune des colonnes.

Pour insérer la ligne, on place la souris sur la case 1, puis un clic avec le bouton droit de la souris, menu contextuel > Insérer des lignes.

Dans la nouvelle ligne, remplir les cellules comme le montre la capture ci-dessous :

Nota : il est aussi possible d’ajouter cette première ligne dans le fichier CSV *avant* l’importation dans Calc, la ligne aura ce format :

Jour;Heure;Temps;Transaction;Code;Groupe d'unités;TG;Retour;Message assertion;Octets;Latence;Injecteur

Ensuite, voici une opération optionnelle, mais que je vais suivre dans ce tutoriel :

Pour « lisser » le graphique, et éviter d’avoir une multitude de pics et de creux qui se suivent dans le graphique, ce qui donnera une courbe en dent de scie dont la ‘tendance’ des temps de réponses sera difficile à suivre, je préfère « regrouper » les résultats par minute. On fera donc un graphique des temps de réponses *moyens* par minute pour une transaction.

Pour cela, il faut ajouter une nouvelle colonne entre les colonnes Heure et Temps, avec la souris on sélectionne la colonne C, puis bouton droit, menu contextuel > Insérer des colonnes.

Dans la nouvelle colonne, sur la première cellule, saisir « Heure 2 ».

Ensuite pour les valeurs de la colonne, nous allons reprendre les valeurs de la colonne Heure, on utilise la formule « =B2 », pour la première valeur.

Afin d’éliminer les secondes dans la colonne Heure 2, nous allons modifier le format de la cellule, pour cela, on clique sur la cellule, puis bouton droit de la souris, menu contextuel > Formater les cellules.

Dans la nouvelle fenêtre qui apparaît, on choisit la catégorie Heure, et le format 13:37, puis on clique sur le bouton OK.

Voilà, maintenant l’heure n’a plus les secondes visiblent, cependant elles n’ont pas complètement disparues car Calc les gardent de manière interne. Nous verrons ci-après comment les supprimer définitivement.

Pour l’instant, il faut faire un copier-coller pour toutes les cellules de chaque ligne de résultat. (Sélectionner la cellule C2, faire Ctrl-C, puis sélectionner toutes les cellules ‘vides’ de la colonne Heure 2, et faire Ctrl-V)

Pour supprimer définitivement les secondes dans la colonne Heure 2, nous allons sélectionner toute la colonne en cliquant avec le bouton gauche de la souris sur le C de la colonne, puis on fait un copier (Ctrl-C). Ensuite, on sélectionne la première cellule de la colonne (C1), et on fait un collage spécial, en texte non formaté, comme le montre la capture suivante :

Et voilà, les secondes ont disparues (ou plutôt elles ont été remises à 00).

Passons à la réalisation du tableau de pilotes de données permettant la génération du graphique

Pour avoir des (beaux) graphiques avec notre tableur (ici OpenOffice.org Calc), nous allons utiliser la fonctionnalité des Pilotes de données (pour Excel, c’est les tableaux croisés dynamiques).

Pour cela, il faut sélectionner l’ensemble des données de la feuille : Aussi, se placer sur la première cellule et première colonne (A1), puis avec le clavier, faire Ctrl-Majuscule + Fin, ce qui vous sélectionne l’ensemble des lignes et colonnes correspondant aux résultats du fichier CSV.

Vous pouvez également faire cette opération avec votre souris via une sélection ‘manuelle’ depuis la cellule A1 vers M16467 (ici pour mon fichier d’exemple, donc à adapter pour vous).

Ensuite on fait appel à la fonctionnalité de Pilote de données.

Aller dans le menu Données > Pilote de données > Démarrer… tout en ayant la plage de données sélectionnée (cf ci-dessus).

Une fenêtre apparait, on garde le choix de Sélection active, puis on clique sur le bouton OK.

Dans la nouvelle fenêtre, on va directement aux options en cliquant sur le bouton associé.

Dans les options, on indique à Calc que l’on souhaite que le tableau de résultats (du pilote de données) soit dans une nouvelle fenêtre plutôt que sur la feuille en cours.

Ensuite, on arrive à l’opération « délicate » du tutoriel : la création du pilote de données…

Alors, c’est quoi un pilote de données vous allez me dire ? réponse je ne sais pas, je sais juste que c’est drôlement pratique…

Bon disons, que cela « croise » les données de lignes et les données de colonnes afin de calculer leur intersection suivant une autre donnée… c’est clair ? non, et bien il suffit de le faire pour comprendre.

Pour cela, on attrape sa souris, on fait des glisser-déplacer.

  1. Clic gauche sur le bouton Heure 2, on maintient, on glisse vers la partie « Ligne Champs », on relâche
  2. Clic gauche sur le bouton Temps, on maintient, on glisse vers la partie « Champs de données », on relâche
  3. Clic gauche sur le bouton Transaction, on maintient, on glisse vers la partie « Champs de la page », on relâche

Ensuite, on va demander que la « Somme – Temps » soit une moyenne, pour cela on sélectionne le bouton « Somme – Temps », puis on clique sur le bouton Options

(Pourquoi la moyenne plutôt que la somme ? parce que l’on a supprimé la notion de secondes dans Heure 2 et aussi parce qu’il est possible d’avoir plusieurs résultats de transaction durant une même seconde, donc on prendra donc la moyenne par intervalle de temps (ici c’est la minute))

Dans la fenêtre d’options qui apparaît, on choisit la Moyenne, puis on clique sur le bouton OK.

Une fois revenue sur la fenêtre de Pilote de données, on clique sur le bouton OK pour terminer sa création. Le résultat est une nouvelle feuille dans le classeur Calc qui affiche un tableau des temps de réponses moyen par minute pour *toutes* les transactions.

Ensuite on filtrera pour n’avoir qu’une transaction métier, ceci en cliquant sur la ‘petite flèche vers le bas’. Ici on prend la transaction « 02_Consultation_Client.jmx »

Bon, maintenant on a un tableau des temps de réponses moyen par minute pour le tir de charges sur la transaction Consultation Client, on aimerait bien avoir notre graphique…

Le souci c’est que le tableau de pilote de données est difficile à manipuler pour faire un graphique. Une solution simple et qui a l’avantage de vous permettre plus tard de faire les graphiques des autres transactions avec le même pilote de données, c’est de faire un copier-collage spécial du tableau pilote de données vers une nouvelle feuille de classeur dédiée à la consultation client. (Ainsi, ensuite on peut revenir sur le pilote de données pour filtrer sur une nouvelle transaction métier et refaire un autre graphique.)

Pour cela, à partir de la feuille du pilote de données, faire menu Édition > Sélectionner tout, puis menu Édition > Copier, puis menu Insertion > Feuille, (dans la boîte de dialogue faire OK), dans la nouvelle feuille, menu Édition > Collage spécial…, choisir le format Texte non formaté, (dans la boîte de dialogue faire OK).

Le résultat est la capture d’écran suivante, où l’on remarquera la disparition des cellules avec fond gris par rapport à la feuille de pilote de données. On prendra le temps de mettre Heure plutôt que Heure 2, et mettre Temps dans la colonne suivante.

Maintenant on va générer (enfin) le graphique, pour cela, on sélectionne les cellules du tableau correspondant à Heure et Temps et les lignes associées.

Puis on choisit le menu Insertion > Diagramme. L’assistant de création de diagramme apparaît.

Dans l’assistant, on choisit un graphique en Ligne (clic 1), puis le graphique en ligne avec points (clic 2), ensuite on clique sur le bouton Suivant.

Dans la deuxième étape, on cochera les deux cases à cocher « Première ligne comme étiquette » et « Première colonne comme étiquette », puis le traditionnel clic sur le bouton Suivant.

La troisième étape, rien de spécial, donc on clique sur le bouton Suivant.

La dernière étape est l’occasion de donner un titre au graphique, et nommer les axes des abscisses et ordonnées. On placera également la légende en bas plutôt qu’à droite. Une fois complété, il ne reste plus qu’à cliquer sur le bouton Terminer pour avoir le graphique de résultat.

Et hop, plein les mirettes ! rien d’extra-ordinaire pour un graphique, mais c’est plus sympa que le graphique proposé de base par JMeter. Surtout par le côté des temps moyens par minute. Le destinataire du rapport de tir de charges (votre client ou votre chef) appréciera plus ce graphique que la capture d’écran du graphique JMeter.

C’est ok pour vous ? Oui, alors allons plus loin avec la deuxième partie, histoire d’enfoncer le clou.