JMeter peut générer des échantillonneurs de requêtes HTTP en agissant comme un proxy d'enregistrement local entre un navigateur et une application cible autorisée. Dans les versions actuelles, ce composant est appelé « Enregistreur de script de test HTTP(S) » . Il capture le parcours d'un navigateur dans un contrôleur d'enregistrement, après quoi le script doit être nettoyé, corrélé, validé et exécuté comme un test au niveau du protocole.

Testez uniquement les systèmes dont vous êtes propriétaire ou pour lesquels vous êtes explicitement autorisé à effectuer des évaluations. Les enregistrements peuvent contenir des mots de passe, des cookies, des jetons et des données personnelles. Privilégiez les comptes de test, supprimez les informations sensibles avant de partager des fichiers JMX et respectez les limites de charge autorisées.

Qu'est-ce qu'un serveur proxy HTTP JMeter ?

L'enregistreur écoute sur un port local, généralement 8888Un navigateur envoie des requêtes HTTP et HTTPS à ce proxy, et JMeter convertit le trafic correspondant en échantillons sous un contrôleur sélectionné. Lors de la relecture, JMeter envoie les requêtes directement ; il n’ouvre pas de navigateur pour chaque utilisateur virtuel.

Pourquoi enregistrer au lieu d'écrire le script à la main ?

  • Capture l'ordre réaliste des requêtes, les redirections, les formulaires et les API en arrière-plan.
  • Révèle les appels XHR ou de récupération faciles à négliger.
  • Permet d'établir rapidement une base de référence pour un parcours utilisateur complexe.
  • Réduit les erreurs de transcription dans les en-têtes et les paramètres.

La construction manuelle reste plus propre pour une petite API documentée. L'enregistrement est utile lorsque le comportement réseau du navigateur n'est pas encore compris. Pour la terminologie, consultez notre guide des types de proxy.

Comment enregistrer un script dans JMeter 5.x

  1. Démarrez JMeter en mode GUI pour la création de scripts.
  2. Ajouter un groupe de threads au plan de test.
  3. Ajoutez un contrôleur d'enregistrement sous le groupe de threads.
  4. Ajoutez les valeurs par défaut des requêtes HTTP et un gestionnaire de cookies HTTP le cas échéant.
  5. Ajoutez l'enregistreur de script de test HTTP(S) et sélectionnez le contrôleur d'enregistrement comme cible.
  6. Utilisez des modèles d'inclusion/exclusion pour limiter le trafic non pertinent.

Le guide d'enregistrement officiel d'Apache JMeter est la référence faisant autorité pour chaque version.

Utilisez un profil de navigateur propre : Les extensions, la synchronisation, la télémétrie et les onglets sans rapport avec le sujet génèrent des requêtes inutiles.

Étape 1) Configuration du serveur proxy HTTP

Enregistreur: choisissez un port local inutilisé tel que 8888, définissez le contrôleur cible, puis cliquez Commencer.

Configurez le navigateur de test avec un hôte proxy HTTP et HTTPS. 127.0.0.1 et le même port. Si le navigateur s'exécute dans une autre machine virtuelle ou un conteneur, localhost fait référence à cet environnement ; utilisez plutôt une adresse privée accessible et approuvée.

Proxy host: 127.0.0.1
Proxy port: 8888

Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$

Ne filtrez pas trop sévèrement lors de la première analyse, car une API d'application peut utiliser un autre sous-domaine. Enregistrez une première fois, examinez les hôtes, puis affinez les critères.

Étape 2) Enregistrez votre activité

  1. Démarrez l'enregistreur et ne faites confiance à son certificat temporaire que dans le navigateur de test isolé.
  2. Ouvrez l'environnement de test autorisé.
  3. Effectuez un trajet propre à vitesse humaine.
  4. Arrêtez l'enregistrement immédiatement après la dernière action commerciale.
  5. Rétablissez les paramètres de proxy par défaut du navigateur.

Renommez les échantillonneurs en fonction de l'action métier et regroupez les requêtes associées sous « Contrôleurs de transactions ». Supprimez les outils d'analyse, les publicités, les mises à jour du navigateur, les widgets de chat et les ressources statiques dupliquées, sauf si elles sont explicitement incluses dans le périmètre.

Examinez chaque échantillonneur à la recherche de secrets. Les mots de passe doivent provenir de données d'exécution protégées, et la modification des jetons nécessite une corrélation.

Étape 3) Exécutez votre plan de test

Validez un utilisateur et une itération avant d'ajouter de la charge. Utilisez temporairement l'arborescence des résultats, vérifiez les redirections et les corps de réponse, et ajoutez des assertions pour le résultat métier attendu. Un code HTTP 200 seul ne prouve pas que la connexion ou la transaction a réussi.

Threads: 1
Ramp-up: 1 second
Loop Count: 1

Après le débogage, supprimez les écouteurs lourds et exécutez l'interface non graphique :

jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report

Le répertoire de rapports doit être nouveau ou vide. Augmentez la charge progressivement et surveillez le système cible ainsi que JMeter.

Étape 4) Enregistrez le résultat de votre test

Enregistrez le plan réutilisable sous forme de .jmx fichier et conserver les données générées séparément :

  • JMX : Échantillonneurs, contrôleurs, assertions, minuteurs, variables et configuration.
  • JTL : Résultats bruts des échantillons pour analyse.
  • Tableau de bord HTML : percentiles, débit, erreurs et threads actifs.
  • Métriques du serveur : Télémétrie du processeur, de la mémoire, de la base de données, de la file d'attente et des services.

Créez une version du plan avec des propriétés non confidentielles et des données de test. Consignez les versions de JMeter et de Java, la version cible, l'environnement, le nombre d'utilisateurs, la montée en charge et la durée.

Évitez d'exécuter des tâches gourmandes en ressources depuis l'interface graphique. Les écouteurs d'interface graphique consomment de la mémoire et peuvent fausser les résultats.

Enregistrement du trafic HTTPS et des certificats

Pour le protocole HTTPS, JMeter génère une autorité de certification temporaire au démarrage de l'enregistreur. Importez-la uniquement dans le navigateur de test dédié, enregistrez le site autorisé, puis supprimez-la.

  1. Démarrer l'enregistreur de script de test HTTP(S).
  2. Localisez le certificat ApacheJMeterTemporaryRootCA généré.
  3. Importez-le comme autorité de confiance dans le profil isolé.
  4. Enregistrez le parcours HTTPS approuvé.
  5. Retirez le certificat une fois terminé.

L’épinglage de certificats, le protocole TLS mutuel, les navigateurs gérés, les applications mobiles et les protocoles de transport récents peuvent bloquer l’interception. Ne relâchez pas les contrôles de sécurité en production. Utilisez un environnement de test, une spécification d’API ou une méthode de capture alternative approuvée.

Corrélation : Rendre un script enregistré rejouable

Les identifiants de session, les jetons CSRF, l'état OAuth, les signatures de requêtes et les identifiants de ressources changent d'une exécution à l'autre. La corrélation extrait une nouvelle valeur d'une réponse et la substitue dans les requêtes suivantes.

  1. Repérez la réponse qui contient en premier la valeur dynamique.
  2. Ajoutez un extracteur JSON, CSS, XPath ou d'expressions régulières.
  3. Stockez le résultat dans une variable JMeter nommée.
  4. Remplacez les valeurs codées en dur ultérieures par la référence à la variable.
  5. Signalez clairement l'échec lorsque l'extraction ne renvoie aucune correspondance.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND

Later header:
X-CSRF-Token: ${csrfToken}

La paramétrisation fournit des données utilisateur indépendantes, souvent issues d'un fichier CSV. La corrélation capture les données générées par le serveur lors de l'exécution. Les plans réalistes nécessitent généralement les deux.

Dépannage

ProblèmeCause probableFixer
Aucune requête enregistréeProxy incorrect, enregistreur arrêté, conflit de ports ou règle de contournementConfirmez l'hôte et le port, démarrez l'enregistreur et supprimez les exclusions de cibles.
Avertissement HTTPSAutorité de certification temporaire manquante ou expiréeGénérez un nouveau certificat d'enregistreur et importez-le uniquement dans le profil de test.
Trop de traficExtensions, télémétrie, autres onglets ou modèles générauxUtilisez un profil propre et affinez les filtres d'inclusion/exclusion.
Échec de la relecture de la connexionCookies, jetons, flux OAuth ou corrélation manquantsAjoutez un gestionnaire de cookies, extrayez les valeurs dynamiques et inspectez les redirections.
Navigateur hors ligne ensuiteIl pointe toujours vers le proxy local arrêté.Rétablir les paramètres automatiques ou sans proxy.
Erreur de mémoire JMeterécouteurs d'interface graphique ou stockage de réponses volumineuxUtilisez le mode non graphique et limitez les données de réponse enregistrées.
Différent du navigateurJMeter n'affiche ni n'exécute le JavaScript de la page.Tester les API sous-jacentes et utiliser les outils du navigateur pour le rendu des métriques.

JMeter est un outil d'évaluation des performances des protocoles. Il ne peut pas mesurer à lui seul les événements visuels tels que le Largest Contentful Paint.

FAQ

Qu'est-ce qui a remplacé le nom du serveur proxy HTTP dans JMeter ?

Le composant s'appelle désormais HTTP(S) Test Script Recorder.

Quel port d'enregistrement dois-je utiliser ?

N'importe quel port local inutilisé convient. Le port 8888 est courant et le navigateur doit utiliser la même valeur.

JMeter peut-il enregistrer le trafic HTTPS ?

Oui, lorsque le navigateur de test isolé fait confiance au certificat d'enregistrement temporaire de JMeter.

Pourquoi un script enregistré échoue-t-il lors de la lecture ?

Les jetons dynamiques, les cookies, les flux d'authentification, les différences d'hôtes et les données manquantes nécessitent généralement une corrélation et une paramétrisation.

JMeter peut-il enregistrer Chrome ?

Oui. Configurez un profil Chrome vierge pour utiliser l'enregistreur local de JMeter.

Dois-je exécuter les tests de charge depuis l'interface graphique de JMeter ?

Non. Compilez et déboguez en mode graphique, puis exécutez le chargement en mode non graphique.

JMeter se comporte-t-il comme un véritable navigateur ?

Non. Il envoie des requêtes de protocole mais ne génère pas de code HTML ni n'exécute de code JavaScript côté navigateur.

Est-il sûr d'enregistrer une connexion de production ?

Privilégiez les comptes de préproduction et de test. La capture de données en production exige une autorisation explicite et une gestion rigoureuse des secrets.