Comment créer et exécuter Apache JMeter des Scripts de Test à partir d'un programme Java?
Je veux utiliser l'API fournie par Apache JMeter pour créer et exécuter des scripts de test à partir d'un programme Java. J'ai compris les bases de ThreadGroup et Échantillonneurs. Je peux créer ceux de ma classe Java à l'aide de la JMeter API.
ThreadGroup threadGroup = new ThreadGroup();
LoopController lc = new LoopController();
lc.setLoops(5);
lc.setContinueForever(true);
threadGroup.setSamplerController(lc);
threadGroup.setNumThreads(5);
threadGroup.setRampUp(1);
HTTPSampler sampler = new HTTPSampler();
sampler.setDomain("localhost");
sampler.setPort(8080);
sampler.setPath("/jpetstore/shop/viewCategory.shtml");
sampler.setMethod("GET");
Arguments arg = new Arguments();
arg.addArgument("categoryId", "FISH");
sampler.setArguments(arg);
Cependant, je ne reçois aucune idée sur comment créer un script de test combinant le groupe de thread et de l'échantillonneur et l'exécuter à partir du même programme. Des idées?
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien, vous souhaitez exécuter l'ensemble d'un plan de test par programme à partir de l'intérieur d'un programme Java. Personnellement, je trouve plus facile de créer un plan de test .JMX fichier et de l'exécuter dans JMeter non-GUI mode 🙂
Voici un simple exemple Java basé sur le contrôleur et l'échantillonneur utilisé dans la question d'origine.
Dépendances
Ce sont les nus faibles Pots nécessaire sur la base de JMeter 2.9 et la HTTPSampler utilisé.
D'autres échantillonneurs aura probablement différents de la bibliothèque POT dépendances.
Note
Sampler e = this.threadGroupLoopController.next(); while(true) { while(this.running && e != null) {
il n'exécute pas la boucle et l'échantillonneur n'est pas appelé. Ce qui donne?J'ai créé un simple preuve de concept du projet en utilisant JMeter Api Java
avec Maven dépendances:
https://github.com/piotrbo/jmeterpoc
Vous pouvez soit générer JMeter projet jmx fichier et de l'exécuter en ligne de commande
ou de l'exécuter directement à partir du code java.
C'était embêtant un peu comme jmx fichier nécessite l'existence de la "guiclass' attribut
pour chaque TestElement.
Pour exécuter jmx, il suffit d'ajouter
guiclass
(même avec une valeur incorrecte).Pour ouvrir dans JMeter GUI il a besoin pour mettre valeur correcte pour chaque
guiclass
.Beaucoup plus ennuyeux problème sont la condition de base des Contrôleurs de débit.
JMeter API ne vous donne beaucoup plus que GUI. Vous avez encore besoin de passer
un
condition
par exemple, dansIfController
régulièreString
. La chaîne doit contenir javascript. Si vous avez Java projet avec javascript avec, par exemple, une erreur de syntaxe, vous ne saurez pas jusqu'à ce que vous exécutez votre test de performance 🙁Probablement une meilleure solution que de rester avec le code et le soutien de l'IDE au lieu JMeter GUI est d'apprendre Scala un peu et utiliser http://gatling.io/
De course Non en mode graphique est beaucoup plus rapide. Ont fait un projet qui consiste à utiliser Jmeter dans le backend de la mode et de l'analyse du fichier XML pour afficher les résultats du test. Jetez un oeil à cette repo- https://github.com/rohitjaryal/RESTApiAutomation.git