Apache JMeter 2.5 est sorti

Une nouvelle version de JMeter vient de sortir, elle était en gestation depuis plusieurs mois. J’y voyais une version 2.4.1, mais finalement comme il y a de nombreuses fonctionnalités ajoutées, et un bon nombre de bogues corrigés, on est passé directement de la 2.4 vers la 2.5.

Par ailleurs, cette version 2.5 a un sens particulier pour moi, puisque j’ai joué le rôle du « release manager » pour elle. Ainsi j’ai réalisé le processus de « délivrance » de la nouvelle version (vote de release, création des archives à télécharger, signature numérique, mise à jour du site Jakarta/JMeter, et annonce).

Voici un petit tour des principales nouveautés :

Nouvelle implémentation Requête HTTP

Avant JMeter possédait deux implémentations différentes pour réaliser une Requête HTTP : Java et HTTPClient version 3.1.

Avec la version 2.5, il y a trois, toujours les deux premières plus une nouvelle « HTTPClient4 » qui dont repose sur la version 4.x de l’API HTTPClient d’Apache.

Lors de cet ajout, les deux échantillons requêtes HTTP existants ont été fusionné en un seul, et une nouvelle liste déroulante (cf capture) dans la configuration de la Requête HTTP permet de choisir l’implémentation. Par défaut, c’est « vide », et cela correspond à l’implémentation historique Java.

  • NB1. Il est possible de changer l’implémentation par défaut à utiliser par le Proxy JMeter, via le paramètre jmeter.httpsampler dans le fichier jmeter.properties.
  • NB2. Théoriquement la meilleure implémentation en termes de qualité/performance est HTTPClient4.

Récupération parallèle des ressources d’une page

Une nouvelle fonctionnalité ajoutée également dans la Requête HTTP, est la possibilité de récupérer en parallèle les ressources associées à une page (i.e. les css, js, images, etc), via un pool d’unités d’exécution dont la taille est paramétrable (cf. capture).

Cette nouvelle fonctionnalité permet entre autre de « simuler » mieux le comportement des navigateurs actuels qui parallélisent la récupération des éléments d’une page (pour un affichage plus rapide).

Deux nouveaux Moteurs d’utilisateurs font leur apparition :

  • le Groupe d’unités de début, qui permet d’avoir un groupe d’unités qui sera lancé une seule fois au début d’un tir, et ceux avant les groupes d’unités « normaux »
  • le Groupe d’unités de fin, qui est le penchant du début, mais pour la fin d’un tir.

L’idée ici, et de permettre d’exécuter un scénario avant/après le vrai tir, par exemple de préparation de données de tir ou de récupérer des métriques de test en fin de tir.

Démarrer l’itération suivante

Dans la configuration du Groupe d’unités, au niveau de l’action à faire en cas d’erreur dans un scénario, une nouvelle option apparaît : « Démarrer l’itération suivante », qui permet donc à l’unité de test, en cas d’erreur, de revenir au début du scénario pour un nouveau tour.

Taille de la réponse

Dans l’arbre de résultats, JMeter affiche maintenant le détail sur la taille de la réponse reçue pour une requête HTTP (ainsi que la bonne valeur). Avant en effet, la taille donnée était la taille décompressé du corps de la réponse. C’est-à-dire que les entêtes n’étaient pas comptabilisées, et en cas de réponse compressée (le fameux mod_deflate sur Apache par exemple), JMeter ne donnait pas la bonne taille.

Maintenant donc, il y a le détail, et c’est la taille (à l’octet près) précise de la réponse qui est donnée.

Versions Tableaux dans l’arbre de résultats

Une version « tableau » existe maintenant pour afficher les éléments de requête dans un échantillon HTTP. Cela aide pour le copier/coller vers un outil de bureautique (pour les rapports par exemple)

La version tableau pour l’onglet Résultat de l’échantillon (qui existe depuis la version 2.4) a reçu également une amélioration. Il est désormais possible de double-cliquer sur une cellule du tableau pour faire apparaître une fenêtre contenant la valeur. Utile pour les valeurs longues. Cf Captures.

Fragment d’éléments

Un nouveau type d’éléments fait son apparition : le Fragment d’éléments. Il permet d’avoir une section dans son scénario qui ne sera pas exécuter par JMeter. Pratique pour mettre de coté des échantillons sans les désactiver ou bien (et surtout) pour le fameux JMeter Proxy afin qu’il soit sauvegarder avec son script.

Le Fragment d’éléments ne fait rien, il empêche juste JMeter d’exécuter ses éléments fils.

Ici un exemple d’utilisation du Fragment d’éléments pour « stocker » la section Proxy dans son Plan de test.

 

 

Requête SMTP

La Requête SMTP a été améliorée, il est possible d’envoi des mails avec JMeter avec quasiment toutes les variantes possibles, notamment pour les connexions en SSL ou en StartTLS.

 

Requête JMS

Niveau Requêtes JMS, il est maintenant possible d’avoir des noms de Destination « variables » durant le tir. Avant mettre une variable JMeter dans le champ Destination ne fonctionnait pas car, JMeter ouvrait la connexion vers la file de Destination avant le lancement du tir. Maintenant il y a le choix, soit le comportement classique (Au démarrage), soit avant chaque exécution d’échantillon.

Assertion Taille

Une petite amélioration sur l’Assertion Taille : il est possible maintenant de vérifier la taille sur des « sous-parties » de la réponse, par exemple les entêtes ou le corps seulement de la réponse.

Il a d’autres petites nouveautés dans cette nouvelle version de JMeter, ainsi qu’une part importante de bogues corrigés. Vous pouvez voir le détail ici.

Je vous encourage à utiliser cette nouvelle version.

 

NB. Les fichiers scripts (jmx) créés / enregistrés avec JMeter 2.5 ne sont plus lisibles par les versions précédentes de JMeter. Bien entendu, les fichiers créés / enregistrés avec les versions précédentes sont lisibles par la version 2.5.

 

./

 

 

4 commentaires

  1. […] MilamberSpace » Blog Archive » Apache JMeter 2.5 est sorti Apache JMeter (surtout) mais aussi GNU/Linux, OpenSource, l'Informatique, etc. Accueil · A propos · Tutoriels JMeter · Notes techniques. « Utiliser JMeter pour superviser un serveur Tomcat … Source: blog.milamberspace.net […]

  2. Stef dit :

    Bonjour,

    Comment forcer l’utilisation HTTPClient 3.1 via le fichier jmeter.property comme indique dans (NB1)? Je n’y ai trouve qu’une option pour indiquer de l’utiliser a l’enregistrement via le proxy…
    Va-t-il y avoir rapidement une 2.5.1 pour corriger le probleme du hc4?

    Merci,
    Stef

  3. Milamber dit :

    Oui il ne s’agit que de modifier l’implémentation à utiliser par défaut lors de l’enregistrement proxy (j’ai ajouté la précision dans le NB)

    Si tu as besoin de faire une conversion d’implémentation pour un script, tu peux voir en complément du jmeter.properties, le fichier /extras/ConvertHTTPSampler.txt

    Pour une nouvelle version correctif pour le problème du HC4, je ne sais pas. Il y a un autre problème important sur le contrôleur IF.
    Tu peux télécharger en attendant la dernière nightly build qui inclut la correction du HC4 : http://jakarta.apache.org/jmeter/nightly.html

    A+

  4. Stef dit :

    Ok merci pour ces precisions!