[JAVA] Test de charge avec JMeter

Je l'ai résumé car il n'y avait pas de mémorandum de dépendance et un article qui expliquait de haut en bas de manière inattendue.

Objectif

Effectuez un test de charge avec JMeter. 10 accès par seconde. Cible https://hogehoge.jp/abc Avec certification de base nuxt.js, backend de communication API Laravel JMeter est réalisé sur Mac.

Installation de JMeter

Installez quand même JMeter. Faites-le avec une infusion. Si vous n'avez pas d'infusion, installez l'infusion.

Pour utiliser JMeter, vous avez besoin du corps principal et de Java.

brew install jmeter
brew tap homebrew/cask-versions
brew cask install java

Au moment d'écrire ceci, la version 14 de java était installée, mais elle fonctionnait normalement.

Exécutez JMeter

Exécutez depuis la console.

jmeter

Cela ouvrira l'outil GUI. Utilisez cet écran pour créer un plan de test (contenu du test).

スクリーンショット 2020-06-10 17.49.17.png

Localisation en japonais

Pour le rendre japonais, sélectionnez ce qui suit dans le menu. Options > ChooseLanguage > Japanese

Créer un plan de test

Réglage de la colonne de gauche

Faites un clic droit sur "Plan de test" dans la colonne de gauche Ajouter> Threads (utilisateurs)> Groupe de threads Sélectionnez pour créer un groupe de fils.

Ensuite, faites un clic droit sur le "groupe de threads" créé ci-dessus. Ajouter> Sampler> Requête HTTP Ajouter> Auditeur> Rapport statistique Ajouter> Auditeur> Afficher les résultats dans le tableau Ajouter> Écouteur> Enregistrer la réponse dans un fichier Ajouter> Auditeur> Affichage graphique Sélectionnez pour créer chacun.

Alors ça ressemble à ça.

スクリーンショット 2020-06-10 17.57.05.png

Paramètres du groupe de fils

Décidez combien de fois exécuter le test toutes les quelques secondes. Nombre de fils: 10 Période de montée en puissance (secondes): 1 Nombre de boucles: 1

Mettre en place. Ce qui précède signifie que 10 requêtes seront exécutées en 1 seconde.

Paramètres de requête HTTP

Sélectionnez la requête HTTP dans la colonne de gauche et saisissez les informations.

Éléments de réglage Définir la valeur
protocole https
Nom du serveur ou IP hogehoge.jp
Requête HTTP GET
chemin /abc

Si vous avez une certification de base

Faites un clic droit sur la requête HTTP Ajouter> Élément de configuration> Gestionnaire d'authentification HTTP Sélectionnez et créez.

Éléments de réglage Définir la valeur
URL de base https://hogehoge.jp/
Nom d'utilisateur Nom d'utilisateur d'authentification de base
mot de passe Mot de passe d'authentification de base
Mechanism BASIC
スクリーンショット 2020-06-10 18.01.49.png

sauvegarder

Sélectionnez ** TestPlan et appuyez sur ** Ctrl + s pour enregistrer. Après cela, ce fichier sera utilisé, alors enregistrez-le dans un emplacement pratique.

tester

Je vais tester si cela fonctionne pour le moment. Appuyez sur le vert △ en haut de l'interface graphique pour exécuter. Après exécution, sélectionnez "Afficher les résultats dans le tableau" et si l'état est vert, cela réussit.

スクリーンショット 2020-06-10 18.17.04.png

Implémentation JMeter

L'implémentation se fait avec CUI au lieu de GUI. Exécutez avec la commande suivante.

jmeter -n -t ~/src/jmeter/test_plan.jmx -l ~/src/jmeter/log.jtl
#Pour le chemin, définissez l'emplacement du fichier enregistré. Veuillez spécifier un emplacement approprié pour le journal.

Vérifiez le journal

Le contenu du journal est comme ça.

cat ~/src/jmeter/log.jtl
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1591777603078,21372,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-9,text,false,,347449,208,10,10,https://hogehoge.jp/abc,16242,0,238
1591777603178,21915,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-10,text,false,,353217,208,9,9,https://hogehoge.jp/abc,16151,0,220
1591777602975,24513,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-8,text,false,,358302,208,8,8,https://hogehoge.jp/abc,16689,0,211
1591777602877,25325,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-7,text,false,,346781,208,7,7,https://hogehoge.jp/abc,16539,0,175
1591777602578,29420,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-4,text,false,,623792,208,6,6,https://hogehoge.jp/abc,18709,0,308
1591777602353,30684,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-1,text,false,,623792,208,5,5,https://hogehoge.jp/abc,18968,0,533
1591777602676,30529,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-5,text,false,,623792,208,4,4,https://hogehoge.jp/abc,18419,0,210
1591777602378,30834,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-2,text,false,,623792,208,3,3,https://hogehoge.jp/abc,19032,0,508
1591777602776,30459,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-6,text,false,,623792,208,2,2,https://hogehoge.jp/abc,18681,0,168
1591777602477,30900,Requête HTTP,429,Too Many Requests,Groupe de discussion 1-3,text,false,,623792,208,1,1,https://hogehoge.jp/abc,18591,0,409

Gununu ... Cela est dû à la limite de requêtes laravel. Ajustez le nombre d'accès simultanés en nous référant aux articles ici. https://qiita.com/HorikawaTokiya/items/c04e410e4ed76d3dddc2

C'est tout. Chan Chan.

Recommended Posts

Test de charge avec JMeter
Test d'intégration avec Gradle
[Rails] Test avec RSpec
Testez Nokogiri avec Rspec.
Tester automatiquement avec la jauge
Faites un test unitaire avec Junit.
Tester l'API Web avec junit
Tester Active Strage avec RSpec
Tester le résolveur GraphQL avec rspec
tester
Test de l'API REST à l'aide de REST Assured Part 2
tester
Couverture de test de sortie avec Clover + Gradle
Téléchargez des fichiers volumineux avec Apache JMeter
tester
tester
[Java] Tester des méthodes privées avec JUnit
Copier et coller le test avec RSpec
Tester les relations d'inclusion de liste avec AssertJ
Contrôleur de cadre de test Spring avec Junit
[rails] Faisons un test unitaire avec Rspec!
Définissez la charge d'accès qui peut être modifiée graphiquement avec JMeter (Partie 1)
MASCHINE teste la régression linéaire avec plusieurs variables
Avec EqualsVerifier, le test equals () s'est terminé en un instant
[Ruby on Rails] Afficher le test avec RSpec
Contrôler l'ordre de test dans Junit4 avec un type d'énumération
Test Java EE (CDI / intercepteur) avec Arquillian
[Ruby on Rails] Test du contrôleur avec RSpec
[Ruby on Rails] Test de modèle avec RSpec
Comment tester l'étendue privée avec JUnit
Le test JUnit 5 Gradle génère une erreur avec l'annotation Lombok
Présentation du test Java automatisé avec JUnit 5 + Gradle
Test de validation de classe de formulaire avec Spring Boot