Serveur proxy HTTP dans JMeter: Enregistrer un exemple de script
โก Rรฉsumรฉ intelligent
JMeter Le serveur proxy HTTP enregistre l'activitรฉ du navigateur dans un script de test rรฉutilisable. Cet enregistreur, placรฉ entre le navigateur et le site web, capture chaque requรชte dans un contrรดleur d'enregistrement, et le script enregistrรฉ est ensuite rejouรฉ par de nombreux utilisateurs virtuels.

Qu'est ce que le JMeter Serveur proxy HTTP ?
Le JMeter Le serveur proxy HTTP est un enregistreur intรฉgrรฉ qui s'interpose entre le navigateur et le site web testรฉ. Il surveille et enregistre l'activitรฉ de l'utilisateur pendant la navigation normale sur l'application, et transforme chaque requรชte capturรฉe en un รฉchantillonneur de requรชte HTTP au sein du plan de test. JMeter 3.0 L'รฉlรฉment a รฉtรฉ nommรฉ le Enregistreur de script de test HTTP(S), et les deux noms dรฉsignent le mรชme composant.
Enregistrement vers les tests Ce module permet ร un testeur d'enregistrer et de reproduire l'activitรฉ sur une cible de test. Il s'agit d'un type de test automatisรฉ, mais pour plusieurs utilisateurs simultanรฉment.
Pourquoi enregistrer au lieu d'รฉcrire le script ร la main ?
Un parcours utilisateur rรฉaliste sur un site moderne gรฉnรจre des dizaines de requรชtes, chacune avec ses propres en-tรชtes, cookies et paramรจtres de formulaire.ping Saisir manuellement toutes ces donnรฉes dans des รฉchantillonneurs est lent et source d'erreurs. L'enregistrement capture le trafic exact envoyรฉ par le navigateur, ce qui prรฉsente trois avantages :
- Exactitude: L'ordre des en-tรชtes, les cookies et les champs de formulaire cachรฉs sont capturรฉs exactement tels que le serveur les a reรงus.
- La vitesse: Un voyage de dix pages prend quelques minutes ร enregistrer et des heures ร rรฉdiger manuellement.
- Couverture: Les appels AJAX en arriรจre-plan, invisibles dans l'interface, apparaissent tout de mรชme dans l'enregistrement.
L'enregistrement constitue un point de dรฉpart et non un test finalisรฉ. Il nรฉcessite encore un nettoyage, une corrรฉlation et un paramรฉtrage avant d'รชtre utilisable. test de chargeLes sections ci-dessous dรฉcrivent le chemin complet ร partir d'une page vide. JMeter fenรชtre sur un script qui se rejoue de maniรจre fiable.
Voici la feuille de route de cet exemple pratique
Comment enregistrer un script dans JMeter 5.x
La version actuelle est Apache JMeter 5.6.3, publiรฉ le 9 janvier 2024, et il exige Java 8 ou plus tard, avec Java 17 recommandรฉ. Toute personne suivant le tutoriel illustrรฉ plus bas sur cette page pour cette version ne trouvera pas de nลud WorkBench, car il a รฉtรฉ supprimรฉ dans la version 5.0. La fonctionnalitรฉ n'a pas disparu ; elle a รฉtรฉ dรฉplacรฉe. L'enregistreur est maintenant ajoutรฉ directement au plan de test et s'appelle ยซ Enregistreur de script de test HTTP(S) ยป.
La solution la plus rapide est le modรจle intรฉgrรฉ. Choisissez Fichier > Gabarits > Enregistrement et JMeter Gรฉnรจre un plan complet contenant un groupe de threads, des paramรจtres par dรฉfaut pour les requรชtes HTTP, un contrรดleur d'enregistrement et l'enregistreur lui-mรชme, dรฉjร interconnectรฉs. La construction manuelle de cette mรชme structure suit les รฉtapes ci-dessous.
- รlaborer la structure du plan. Ajoutez un groupe de threads, puis un contrรดleur d'enregistrement en dessous. C'est lร que seront enregistrรฉs les รฉchantillons capturรฉs.
- Ajoutez l'enregistreur au plan de test. Cliquez avec le bouton droit sur le nลud Plan de test et choisissez Ajouter > รlรฉments non-test > Enregistreur de script de test HTTP(S)Il s'agit d'un groupe frรจre du groupe Thread, et non d'un groupe enfant.
- Configurez le port. Le port par dรฉfaut est 8888. N'importe quel port libre convient, ร condition que le navigateur soit configurรฉ en consรฉquence.
- Choisissez le Target Contrรดleur. Sรฉlectionnez le contrรดleur d'enregistrement crรฉรฉ ร l'รฉtape 1, afin que les requรชtes soient regroupรฉes lร oรน vous le souhaitez plutรดt que dispersรฉes ร la racine du plan.
- Ajouter URL modรจles d'exclusion. Dans l'onglet Filtrage des requรชtes, excluez les ressources statiques avec un modรจle tel que : .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Cela รฉlimine la majeure partie du nettoyage manuel dรฉcrit plus loin.
- Dรฉmarrez l'enregistreur. Cliquez ร nouveau Commencer en haut du panneau de l'enregistreur. JMeter รฉcrit ApacheJMeterLe fichier TemporaryRootCA.crt est actuellement placรฉ dans son dossier bin, ce qui rend possible l'enregistrement HTTPS.
- Accรฉdez au proxy via votre navigateur. Utilisez localhost et le port choisi, puis naviguez normalement dans l'application.
- Arrรชtez-vous et rangez. Appuyez sur Arrรชter, supprimez les appels tiers restants et enregistrez le forfait.
- Validez avant de procรฉder ร la mise ร l'รฉchelle. Cliquez avec le bouton droit sur le groupe de fils et choisissez ValiderCela exรฉcute le plan une seule fois avec un seul thread, de sorte que les dรฉfaillances apparaissent avant que toute charge ne soit appliquรฉe.
Une autre habitude distingue un script fonctionnel d'un script fiable. Utilisez l'interface graphique uniquement pour la compilation et le dรฉbogage, puis exรฉcutez le test proprement dit en ligne de commande. jmeter -n -t plan.jmx -l rรฉsultats.jtl -e -o rapport, qui gรฉnรจre รฉgalement un tableau de bord HTML. Cette mรชme commande est ร la base de tests distribuรฉs rรฉparti sur plusieurs gรฉnรฉrateurs de charge. L'installation est dรฉcrite dans le manuel. JMeter guide d'installationet la procรฉdure complรจte est documentรฉe sur le Apache JMeter page de l'enregistreur.
โ ๏ธ Note de version : Les captures d'รฉcran de la vidรฉo ci-dessous ont รฉtรฉ rรฉalisรฉes sur un appareil plus ancien. JMeter version qui contenait encore le nลud WorkBench. WorkBench a รฉtรฉ supprimรฉ dans JMeter 5.0. Tous les concepts restent valables ; seul l'emplacement de l'enregistreur change, et la procรฉdure actuelle est celle dรฉcrite ci-dessus.
รtape 1) Configuration du serveur proxy HTTP
Ceci est un guide รฉtape par รฉtape pour configurer le proxy
- Commencer JMeter
- Sรฉlectionner Plan de test sur l'arbre
- Ajouter Groupe de discussion. Faites un clic droit sur le Plan de test et ajoutez un nouveau groupe de threads : Ajouter > Sujets (utilisateurs) > Groupe de discussion
- Ajouter Requรชte HTTPSรฉlectionnez le groupe de fils ; clic droit Ajouter > รlรฉment de configuration > Valeurs par dรฉfaut des requรชtes HTTP
Dans le nouvel รฉlรฉment HTTP Request Defaults : dans Nom du serveur ou IP, saisissez ยซ google.com ยป. Vous devez garder les autres champs vides
- Ajouter Contrรดleur d'enregistrementFaites un clic droit sur le ยซ Groupe de fils ยป et ajoutez un contrรดleur dโenregistrement : Ajouter > Contrรดleur logique > Contrรดleur d'enregistrement
- Ajouter proxy serveur Dans Workbench, faites un clic droit et ajoutez le proxy HTTP : Ajouter > รlรฉments non-test > Serveur proxy HTTP. Sur JMeter 5.x, cliquez avec le bouton droit sur Plan de test nลud ร la place et choisissez Enregistreur de script de test HTTP(S).
- complet ยป Target Contrรดleur oรน vos scripts enregistrรฉs seront ajoutรฉs
- Commencer Serveur proxy. Retournez ร Serveur proxy HTTP et cliquez sur Commencer bouton en bas. Maintenant votre JMeter dรฉmarrage du serveur proxy
- Dรฉmarrez votre navigateur (j'ai utilisรฉ Firefox), choisissez Outil > Option > Avancรฉ > Rรฉseau > Paramรจtres Saisissez le proxy HTTP comme indiquรฉ ci-dessous. Actuellement Firefox Les versions permettent d'accรฉder au mรชme dialogue via Paramรจtres > Gรฉnรฉralitรฉs > Paramรจtres rรฉseau.
รtape 2) Enregistrez votre activitรฉ
- Lancez maintenant http://www.google.com dans votre navigateur Web (JMeter toujours ouvert)
- Les activitรฉs recherchent-elles le mot-clรฉ ยซguru99" .
- Retour ร JMeter, dans Serveur proxy HTTP, cliquez sur Arrรชter Une fois terminรฉ
- Une fois l'enregistrement terminรฉ, vous verrez JMeter crรฉรฉ automatiquement une nouvelle requรชte HTTP comme la figure ci-dessous
JMeter a dรฉjร enregistrรฉ une demande d'utilisateur pour la page d'accueil of Google en ligne. http://www.google.com/
Les autres requรชtes HTTP s'affichent dans la figure ci-dessus, vous devez les supprimer. Parce que parfois JMeter enregistre รฉgalement certains liens publicitaires pendant que vous recherchez des mots clรฉs sur GoogleNous devrions les ignorer dans notre plan de test.
- Cliquez sur Fichier > Enregistrer votre plan de test sous
- Une boรฎte de dialogue s'affiche > saisissez le nom de votre plan de test dans le champ Nom de fichier > cliquez sur Enregistrer. Votre plan de test est maintenant enregistrรฉ sous le nom RecordingTestPlan.jmx.
รtape 3) Exรฉcutez votre plan de test
- Sรฉlectionner Groupe de discussions > Ajouter > รcouteur > Rapport de synthรจse
- Le rapport rรฉcapitulatif montrera quelques statistiques de base
- Sรฉlectionnez Thread Group, entrez les informations comme dans la figure ci-dessous
Vous pouvez vous rรฉfรฉrer ร l'article JMeter Test de performance pour connaรฎtre les dรฉtails de la configuration des groupes de threads.
- Avant de lancer le test, sรฉlectionnez ยซ Rapport de synthรจse ยป. Lorsque vous รชtes prรชt ร exรฉcuter un test, sรฉlectionnez Exรฉcuter > Dรฉmarrer (Ctrl+R). JMeter Votre activitรฉ sera rรฉpรฉtรฉe 100 fois. Les statistiques รฉvolueront au fur et ร mesure du dรฉroulement du test jusqu'ร son terme.
รtape 4) Enregistrez le rรฉsultat de votre test
- Cliquez ร nouveau Enregistrer les donnรฉes du tableau pour enregistrer le rรฉsultat du test dans un fichier
- Entrez le nom du rรฉsultat du test et cliquez sur Enregistrer. Rรฉsultat du test dans JMeter est enregistrรฉ par dรฉfaut au format *.csv
Tรฉlรฉchargez le plan de test d'enregistrement de fichiers
Tรฉlรฉchargez le fichier Serveur proxy HTTP
Enregistrement du trafic HTTPS et des certificats
Presque tous les sites utilisent dรฉsormais le protocole HTTPS, antรฉrieur ร la procรฉdure dรฉcrite dans le guide initial. Un proxy ne peut pas lire le trafic chiffrรฉ ร moins que le navigateur ne lui fasse confiance ; une รฉtape supplรฉmentaire est donc nรฉcessaire.
Lorsque l'enregistreur dรฉmarre, JMeter gรฉnรจre un certificat racine temporaire nommรฉ ApacheJMeterTemporaryRootCA.crt Dans son rรฉpertoire bin, importez ce fichier dans le navigateur en tant qu'autoritรฉ de certification de confiance, puis redรฉmarrez le navigateur. JMeter peut dรฉsormais prรฉsenter son propre certificat pour chaque site et dรฉcrypter la session pour enregistrement.
Il est important de retenir trois points :
- Le certificat expire au bout de sept jours. C'est intentionnel. Supprimez-le et laissez JMeter Rรฉgรฉnรฉrer une nouvelle instance plutรดt que de prolonger sa validitรฉ.
- Retirez-le une fois terminรฉ. Laisser un certificat racine de confiance installรฉ sur une machine en fonctionnement constitue un risque de sรฉcuritรฉ rรฉel, et non thรฉorique.
- Certaines applications le refusent. Les sites utilisant l'รฉpinglage de certificats ou le TLS mutuel ne peuvent absolument pas รชtre enregistrรฉs via un proxy, et le script doit รชtre construit manuellement ร partir des outils de dรฉveloppement du navigateur.
Corrรฉlation : Rendre un script enregistrรฉ rejouable
Un script enregistrรฉ reproduit exactement ce qui s'est passรฉ une fois, ce qui est rarement le cas lors d'une seconde exรฉcution. Les identifiants de session, les jetons et les clรฉs gรฉnรฉrรฉes capturรฉs lors de l'enregistrement deviennent invalides au moment de la rรฉexรฉcution du script, et l'exรฉcution รฉchoue de maniรจre similaire ร des erreurs d'application.
La corrรฉlation est la solution. post-processeur comme l'expression rรฉguliรจre Extractor ou l'Ex JSONtracTor capture la nouvelle valeur de la rรฉponse de connexion, la stocke dans une variable, et les requรชtes ultรฉrieures font rรฉfรฉrence ร cette variable au lieu de la valeur littรฉrale enregistrรฉe.
Le flux de travail est court :
- Relancez le script une fois avec un รฉcouteur d'arborescence des rรฉsultats et trouvez la premiรจre requรชte ayant รฉchouรฉ.
- Comparez la requรชte ayant รฉchouรฉ ร l'enregistrement. Toute valeur diffรฉrente entre deux exรฉcutions doit รชtre corrรฉlรฉe.
- Ajouter un extracPour obtenir la valeur, utilisez la rรฉponse qui l'a produite, puis remplacez la valeur littรฉrale codรฉe en dur par la rรฉfรฉrence ร la variable.
- Ajouter un affirmation Une page renvoyant un code HTTP 200 avec un message d'erreur รฉchoue donc toujours au test.
Ce n'est qu'aprรจs corrรฉlation que le script peut รชtre mis ร l'รฉchelle en toute sรฉcuritรฉ. L'exรฉcution d'un enregistrement non corrรฉlรฉ auprรจs d'une centaine d'utilisateurs permet de mesurer la gestion des erreurs plutรดt queโฆ performanceD'autres รฉlรฉments sont abordรฉs dans le reste du document. JMeter tutoriels.
Dรฉpannage
Si vous rencontrez un problรจme lors de l'exรฉcution du scรฉnario ci-dessus, procรฉdez comme suit :
- Vรฉrifiez si vous vous connectez ร Internet via un proxy. Si oui, supprimez le proxy.
- Ouvrir une nouvelle instance de JMeter.
- Ouvrez le fichier RecordingTestPlan.jmx dans JMeter.
- Cliquez avec le bouton droit sur Workbench > Fusionner > Sรฉlectionnez HTTP Proxy Server.jmx. JMeter 5.x, fusionnez plutรดt avec le nลud Plan de test, car WorkBench n'existe plus.
- Cliquez sur Groupe de discussions > Rapport de synthรจse.
- Exรฉcutez le test.
Deux autres symptรดmes expliquent la plupart des รฉchecs restants. Si le navigateur indique qu'il ne peut pas se connecter, l'enregistreur n'a jamais รฉtรฉ dรฉmarrรฉ ou le port configurรฉ dans le navigateur ne correspond pas au port configurรฉ dans JMeterSi les pages se chargent normalement mais que rien n'apparaรฎt dans l'arborescence, le trafic est HTTPS et le certificat n'a pas รฉtรฉ importรฉ.



















