Nouvelles, JMeter flux parallèles : développement ‘in deep’…

Aucun billet depuis le début de cette nouvelle année, je dois quelques nouvelles à ce blog.

Tout d’abord, j’ai eu un changement d’activité professionnelle en ce début d’année, qui m’accapare beaucoup de temps. Cela devrait se tasser et me permettre d’ajouter quelques billets sur JMeter.

Ensuite, car je travaille « in deep » dans JMeter, je suis en effet entrain d’essayer d’y ajouter un contrôleur « parallèle » pour permettre l’exécution en parallèle de requêtes HTTP pour un même utilisateur virtuel.

Ceci permettra de mieux simuler certains sites web 2.0 qui ont beaucoup de requêtes AJAX, ces dernières utilisant à bon escient les flux parallèles possibles dans un navigateur internet moderne (exemple, Firefox 3.5 c’est 6 flux parallèles). L’idée étant d’avoir un temps de réponses « écran web 2.0 » proche de celui du navigateur. En effet, aujourd’hui avec JMeter, si j’ai un écran d’un site web 2.0 ayant 10 requêtes (1 principale et 9 requêtes ‘ajax’), JMeter fera 10 requêtes en série, et donne donc un temps différent et généralement plus important que le navigateur qui lui, envoie ses 10 requêtes sur 2 à 6 flux parallèles. On peut voir ce phénomène sur Firefox avec le plugin Firebug ainsi qu’au niveau du paramètre network.http.max-persistent-connections-per-server dans Firefox > about:config.

C’est un travail difficile de développement, car la conception applicative de JMeter est « historique » (depuis 1998), et parfois empirique. La gestion des unités d’exécution s’effectuant en 1 thread = 1 VU, avec un ensemble de services disponibles par thread à un niveau élevée (très loin de la requête HTTP). Pour faire des flux parallèles, j’ai besoin de ces services à un niveau très bas (proche de la requête HTTP), et là c’est difficile.

Enfin, je pense avoir réussi à trouver une solution, j’ai maintenant un contrôleur qui sait balancer n flux parallèles, maintenant il faut faire un (gros) travail sur la préservation de l’intégrité des données partagées entre les flux parallèles…

J’espère que je vais réussir complètement à faire ceci.

Ah, j’allais oublier ! Très bonne année 2010 !

./

Quelques cas d’utilisation de l’extracteur d’expression régulière dans JMeter

Voici un billet pour parler de l’extracteur d’expressions régulières dans JMeter.

Commençons par le plan de test : très simple, une requête avec en élément fils un extracteur d’expression régulière.

La requête HTTP est simplement la page d’accueil de ce blog.

On place un échantillon Débogage après la requête HTTP qui possède l’extracteur d’expression régulière, il permet d’afficher différentes informations internes à JMeter. Ici, on s’intéresse aux valeurs des variables de JMeter.

Ensuite (enfin) vient l’extracteur d’expression régulière, on commence par un « simple ».

Quelques explications : Continuer la lecture de Quelques cas d’utilisation de l’extracteur d’expression régulière dans JMeter

Changer l’adresse IP source d’une requête HTTP lors d’un test avec JMeter

[Article mis à jour le 08 décembre 2011, pour prise en compte de la version 2.5.1]

Depuis la version 2.4 de JMeter, une nouvelle fonctionnalité permet le changement d’adresse IP source pour les requêtes HTTP transmises par JMeter.

L’intérêt de cette possibilité est (par exemple) de permettre de faire des tests de charges sur des architectures techniques comportant un suivi de session par adresse IP (typiquement au niveau des répartiteurs de charges).

Voici un petit mode d’emploi. Continuer la lecture de Changer l’adresse IP source d’une requête HTTP lors d’un test avec JMeter

Retour dans le passé, voici les différentes versions de JMeter

La première version de JMeter, estampillée 1.0, date du 15 décembre 1998. Ensuite l’année 1999 va voir au moins 4 versions successives de JMeter.
Aujourd’hui, près de 11 ans après, il y a eu environ 20 versions ‘majeures’ de JMeter, et nous en sommes à la version 2.3.4.

Voici un petit retour-arrière sur les différentes interfaces graphiques de JMeter depuis la première version jusqu’à la dernière.

Et voici la première version 1.0.2, on remarquera la simplicité de l’interface : un seul écran, un bouton Start, un Stop. Seulement 10 unités d’exécution maximum. On reconnaît le récepteur de résultat graphique que l’on retrouve encore dans les versions d’aujourd’hui.

Continuer la lecture de Retour dans le passé, voici les différentes versions de JMeter

Envoyer en ligne de commande des paramètres à votre scénario JMeter

Voici un petit billet pour vous monter comment lancer JMeter en ligne de commande tout en paramétrant son scénario de test.

En effet, vous pouvez avoir l’idée ou l’envie de faire une série de test en jouant sur certains paramètres de votre scénario JMeter, le tout en ligne de commande. Par exemple, faire un test avec 1 utilisateur, puis le même test avec 10 utilisateurs, et le même avec 100 utilisateurs.

Bien évidemment vous pouvez les lancer depuis l’interface graphique de JMeter, à la suite, tout en modifiant le paramètre du nombre d’utilisateurs dans l’interface, mais c’est trop facile ;-).

Donc pour le faire en ligne de commande, il faut d’abord passer par l’interface graphique JMeter. En effet, nous avons besoin d’utiliser une fonction JMeter qui va permettre de lire une propriété JMeter et renvoyer sa valeur. Cette fonction doit être appelée à la place de la valeur du champ correspondant au paramètre que l’on veut rendre « paramétrable »…

Le mieux est d’abord de voir la capture d’écran :

Les différents ${__P(xxx,yyy)} correspondent à notre fonction JMeter qui permet de lire une propriété JMeter, et qui la renvoie. Continuer la lecture de Envoyer en ligne de commande des paramètres à votre scénario JMeter

C’est l’heure des vacances

Avec un peu de retard cette année, je prends mes congés d’été, en espérant que ce dernier soit indien. Techniquement je suis en congés depuis hier, mais dans la réalité, c’est plutôt maintenant que mes congés débutent, car j’ai dû finir du travail en retard de plusieurs clients (et malheureusement il m’en reste un peu, tant pis et désolé).

J’ai néanmoins envie de dire quelques mots avant de partir à Marrakech pour oublier un peu le boulot.

Tout d’abord concernant l’open source. Il semblerait que la fameuse crise économique mondiale soit l’occasion de découvrir les logiciels open source. Des acteurs majeurs de ce monde n’hésite pas à le dire, ou carrément organiser des séminaires ou/et des livres blancs sur le thème ‘pourquoi ne pas choisir de l’open source en temps de crise ?’. Continuer la lecture de C’est l’heure des vacances

Google Groups JMeter en français : déjà un an !

Il y a exactement 1 an aujourd’hui que ce groupe de discussion a été lancé.

Je me permets de vous donner quelques informations / commentaires :

  • 84 membres à ce jour
  • 555 messages à ce jour
  • 207 messages à moi tout seul (c’est mon coté « je me jette des fleurs » ;-))

Vous allez me dire : « Que 84 membres ? C’est pas beaucoup… » ? je trouve que c’est pas mal. Ma réponse c’est : « Vous en connaissez beaucoup des cocos qui font du tir de charges/fonctionnels avec JMeter tous les jours ? » 😉 Continuer la lecture de Google Groups JMeter en français : déjà un an !

Convertir les mots de passe en clair en mots de passe SHA-1 dans un serveur LDAP avec JMeter

Voici un complément à ce premier tutoriel sur JMeter et un serveur LDAP, où les mots de passe qui ont été insérés dans le serveur LDAP l’ont été en clairs. C’est à dire que si vous disposez d’un accès au serveur LDAP (et/ou que le serveur LDAP a une configuration pas très sécurisée) vous pouvez voir les mots de passe en clair de tout le monde. Ah, ce n’est pas terrible, pas de problème, reprenons JMeter pour effectuer une conversion en SHA-1 des mots de passe.

(Attention cela n’empêche pas de mieux sécuriser son serveur LDAP pour par exemple interdire la consultation du champ du mot de passe dans le LDAP par tout autre utilisateur que lui-même)

Les objectifs de ce nouveau tutoriel sont :

  • Montrer comment parcourir les enregistrements d’un LDAP avec JMeter
    • Pour cela avec un contrôleur Pour chaque
  • Faire une action conditionnelle avec un contrôleur Si, en fonction d’une valeur de variable
  • Monter la manipulation de données (variables JMeter) dans une utilisation avec Pré-processeur BeanShell

La capture suivante l’arbre JMeter de ce tutoriel.

Continuer la lecture de Convertir les mots de passe en clair en mots de passe SHA-1 dans un serveur LDAP avec JMeter

Faire un graphique de résultats JMeter avec Eclipse BIRT

Un billet pour pointer vers cet autre billet de la société Zenika, qui explique le comment-faire un rapport (graphique) de résultats suite à un test JMeter.

Dans le billet pointé, la source de données est le fichier de résultats JMeter au format JTL (donc XML). BIRT sait le lire ‘nativement’. Mais j’ajouterai qu’il est préférable d’avoir un format CSV pour l’enregistrement des données d’un JMeter (plus rapide et plus économe en taille), et que BIRT sait aussi lire du CSV nativement (à condition d’avoir une virgule comme séparateur (et non un point-virgule comme j’ai tendance à le faire dans mes CSV…))

Enfin, tout cela pour dire, que c’est un bon article à suivre, d’autant que cela peut épater les gens de voir que l’on utilise pas le pauvre (mais pratique) Excel ou OpenOffice pour faire ses graphiques, mais un bel outil de génération de rapports / graphiques.

Maintenant, j’aimerai bien pousser plus loin le bouchon avec JMeter/BIRT pour voir si on peut « préparer » des rapports (au sens PDF) avec tableaux et graphiques à partir de données JMeter d’un même test (qui serait exécuté N fois) afin d’avoir un rapport assez complet en quelques minutes après la fin d’un tir. Ce qui semble carrément possible avec BIRT. A suivre…

JMeter : patch ‘HTTPS proxy’ pour permettre d’enregistrer une session de navigation d’un site web en HTTPS

Juste un mot pour vous dire que je viens de proposer un patch pour ajouter une fonctionnalité, à mon sens, importante à JMeter : l’enregistrement d’une session de navigation en HTTPS.

https://issues.apache.org/bugzilla/show_bug.cgi?id=47622

En effet, JMeter ne permet pas d’enregistrer directement une session de navigation d’un site HTTPS dans un script. Il y a la fonctionnalité « Tenter d’usurper HTTPS » qui permet le faire indirectement, mais cela ne marche pas toujours notamment quand il y a des redirections lors d’une authentification HTTPS. Voir ce billet.

Donc, le patch permet d’utiliser JMeter comme proxy « ssl » dans son navigateur, et de faire son script JMeter sur un site HTTPS (le protocole http continuant à fonctionner aussi bien entendu)

Pour l’instant, le patch vient juste d’être posté, il faut donc qu’il soit testé et (si tout ce passe bien) validé sur le SVN pour le retrouver dans une version « nightly » de JMeter, et j’espère, une prochaine version stable 😉

Si jamais vous avez les sources de JMeter sur votre poste, vous pouvez le tester en appliquant le patch, je suis preneur des commentaires et retours.

Petite mise à jour (05/08/2009) : si jamais vous souhaitez tester la fonctionnalité sans passer par la case « compilation avec Eclipse/Ant », vous pouvez télécharger une version 2.3.4 de tests avec ce patch.

http://www.milamberspace.net/jmeter-testing/dist/

Nouvelle mise à jour (06/08/2009) : le patch a été validé dans le subversion de JMeter (avec quelques améliorations, principalement sur l’utilisation du ‘keytool’ Java plutôt que openssl pour la génération du certificat SSL du proxy JMeter).

Vous pourrez directement télécharger une version nightly build dès que l’outil de génération automatique aura fait sont travail.

http://people.apache.org/builds/jakarta-jmeter/nightly/ (version après r801473)

Nouvelle mise à jour (05/01/2011) : Depuis la version 2.4 de JMeter, sortie en 2010, ce patch fait parti intégrante de JMeter, donc plus besoin de prendre la version Nightly.

./

r801473