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.

  • ๐ŸŽฌ Objectif principal : Le proxy surveille et enregistre l'activitรฉ de l'utilisateur pendant qu'un navigateur normal navigue dans l'application testรฉe.
  • ๐Ÿงฑ Plan squelette : Le groupe de threads, les paramรจtres par dรฉfaut des requรชtes HTTP et le contrรดleur d'enregistrement sont crรฉรฉs avant le dรฉbut de l'enregistrement.
  • (I.e. Target Contrรดleur: Ce paramรจtre dรฉtermine oรน les รฉchantillons capturรฉs sont inscrits dans l'arborescence du plan de test.
  • ๐ŸŒ Configuration du navigateur : Le navigateur doit configurer son proxy HTTP pour qu'il pointe vers le JMeter port, 8888 par dรฉfaut.
  • (I.e. Enregistrement HTTPS : Importer ApacheJMeterAjoutez TemporaryRootCA.crt ร  votre autoritรฉ de certification de confiance, puis supprimez-le.
  • ๐Ÿงน Nettoyer le script : Les requรชtes publicitaires et analytiques sont รฉgalement enregistrรฉes et doivent รชtre exclues ou supprimรฉes.
  • ๐Ÿ”— Corrรฉler avant de mettre ร  l'รฉchelle : Remplacez les jetons de session enregistrรฉs par extracvariables ted, ou la relecture รฉchoue.
  • โš ๏ธ Note de version : L'รฉtabli a รฉtรฉ supprimรฉ dans JMeter 5.0 ; l'รฉlรฉment est maintenant l'enregistreur de script de test HTTP(S).

JMeter script d'enregistrement du serveur proxy HTTP

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

Serveur proxy HTTP dans JMeter

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.

  1. ร‰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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Accรฉdez au proxy via votre navigateur. Utilisez localhost et le port choisi, puis naviguez normalement dans l'application.
  8. Arrรชtez-vous et rangez. Appuyez sur Arrรชter, supprimez les appels tiers restants et enregistrez le forfait.
  9. 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

  1. Commencer JMeter
  2. Sรฉlectionner Plan de test sur l'arbre
  3. 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

Configuration du serveur proxy HTTP

  1. Ajouter Requรชte HTTPSรฉlectionnez le groupe de fils ; clic droit Ajouter > ร‰lรฉment de configuration > Valeurs par dรฉfaut des requรชtes HTTP

Configuration du serveur proxy 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

Configuration du serveur proxy HTTP

  1. 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

Configuration du serveur proxy HTTP

  1. 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).

Configuration du serveur proxy HTTP

  1. complet ยป Target Contrรดleur oรน vos scripts enregistrรฉs seront ajoutรฉs

Configuration du serveur proxy HTTP

  1. Commencer Serveur proxy. Retournez ร  Serveur proxy HTTP et cliquez sur Commencer bouton en bas. Maintenant votre JMeter dรฉmarrage du serveur proxy

Configuration du serveur proxy HTTP

  1. 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.

Configuration du serveur proxy HTTP

ร‰tape 2) Enregistrez votre activitรฉ

  1. Lancez maintenant http://www.google.com dans votre navigateur Web (JMeter toujours ouvert)
  2. Les activitรฉs recherchent-elles le mot-clรฉ ยซguru99" .
  3. Retour ร  JMeter, dans Serveur proxy HTTP, cliquez sur Arrรชter Une fois terminรฉ

Enregistrer l'activitรฉ

  1. Une fois l'enregistrement terminรฉ, vous verrez JMeter crรฉรฉ automatiquement une nouvelle requรชte HTTP comme la figure ci-dessous

Enregistrer l'activitรฉ

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.

  1. Cliquez sur Fichier > Enregistrer votre plan de test sous

Enregistrer l'activitรฉ

  1. 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.

Enregistrer l'activitรฉ

ร‰tape 3) Exรฉcutez votre plan de test

  1. Sรฉlectionner Groupe de discussions > Ajouter > ร‰couteur > Rapport de synthรจse

Exรฉcuter le plan de test

  1. Le rapport rรฉcapitulatif montrera quelques statistiques de base

Exรฉcuter le plan de test

  1. Sรฉlectionnez Thread Group, entrez les informations comme dans la figure ci-dessous

Exรฉcuter le plan de test

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.

  1. 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.

Exรฉcuter le plan de test

ร‰tape 4) Enregistrez le rรฉsultat de votre test

  1. Cliquez ร  nouveau Enregistrer les donnรฉes du tableau pour enregistrer le rรฉsultat du test dans un fichier

Enregistrer le rรฉsultat du test

  1. 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

Enregistrer le rรฉsultat du test

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 :

  1. Relancez le script une fois avec un รฉcouteur d'arborescence des rรฉsultats et trouvez la premiรจre requรชte ayant รฉchouรฉ.
  2. Comparez la requรชte ayant รฉchouรฉ ร  l'enregistrement. Toute valeur diffรฉrente entre deux exรฉcutions doit รชtre corrรฉlรฉe.
  3. 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.
  4. 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 :

  1. Vรฉrifiez si vous vous connectez ร  Internet via un proxy. Si oui, supprimez le proxy.
  2. Ouvrir une nouvelle instance de JMeter.
  3. Ouvrez le fichier RecordingTestPlan.jmx dans JMeter.
  4. 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.
  5. Cliquez sur Groupe de discussions > Rapport de synthรจse.
  6. 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รฉ.

FAQ

Il a รฉtรฉ retirรฉ en JMeter 5.0. Les รฉlรฉments non liรฉs aux tests, tels que l'enregistreur de script de test HTTP(S), sont dรฉsormais ajoutรฉs directement sous le nล“ud du plan de test.

Ajouter URL Dans l'onglet ยซ Filtrage des requรชtes ยป de l'enregistreur, dรฉfinissez les modรจles ร  exclure. Un modรจle couvrant les extensions de fichiers statiques courantes permet d'รฉliminer la plupart des requรชtes parasites avant qu'elles n'atteignent le script.

L'IA classe les รฉchantillons enregistrรฉs en รฉtapes mรฉtier et en bruit tiers, puis propose ceux ร  supprimer et les valeurs ร  corrรฉler, transformant ainsi plus rapidement une capture brute en un script utilisable.

Oui. ร€ partir du corps de la rรฉponse et de la valeur ร  extraire, l'IA gรฉnรจre une expression rรฉguliรจre ou une paire de limites. Vรฉrifiez-la dans l'arborescence des rรฉsultats, car un motif peut correspondre dans une rรฉponse et pas dans une autre.

Le navigateur ne fait pas confiance au JMeter proxy. Importer ApacheJMeterTemporaryRootCA.crt du JMeter Ajoutez le dossier bin ร  votre autoritรฉ de confiance, redรฉmarrez le navigateur et enregistrez ร  nouveau.

Oui. Configurez le proxy Wi-Fi de l'appareil avec l'adresse IP et le port de la machine d'enregistrement, puis installez le JMeter Le certificat est prรฉsent sur l'appareil. Les applications utilisant l'รฉpinglage de certificat ne peuvent toujours pas รชtre enregistrรฉes.

Non. L'interface graphique sert ร  la compilation et au dรฉbogage. Exรฉcutez le test proprement dit en mode ligne de commande ; ce mode consomme beaucoup moins de mรฉmoire et gรฉnรจre un rapport HTML ร  la fin.

Les plans de test sont enregistrรฉs au format .jmx, un format XML parfaitement adaptรฉ ร  la gestion de versions. Les rรฉsultats sont consignรฉs au format .jtl, par dรฉfaut au format CSV, mais pouvant รฉgalement รชtre enregistrรฉ au format XML.

Rรฉsumez cet article avec :