Comment appeler votre service Web reposant à l'aide de JMeter ? Effectuer un test de charge simple et une automatisation
Publié: 2018-02-12Le transfert d'état représentatif (REST) a été largement accepté sur le Web en tant qu'alternative plus simple aux services Web basés sur SOAP et WSDL (Web Services Description Language).
La principale preuve de ce changement dans la conception de l'interface est l'adoption de REST par les principaux fournisseurs de services Web 2.0, notamment Yahoo, Google et Facebook, qui ont abandonné ou abandonné les interfaces basées sur SOAP et WSDL en faveur d'une interface plus facile à utiliser, modèle orienté ressources pour exposer leurs services. Parfois, vous devez tester votre service Web RESTFul. Vous pouvez avoir plusieurs options :
- Accédez à votre WebService en utilisant une seule URL
- Utilisez
JMeter
et appuyez sur WebService en boucle. Ce test effectue également unLoad Test
simple.
Ici, dans cet exemple, je vais vous expliquer comment créer un service Web Hello World WebService
simple et accéder au même service Web à l'aide de JMeter.
Si vous avez l'une des questions ci-dessous, vous êtes au bon endroit :
- Test des services Web SOAP/REST à l'aide de JMeter
- Test de performance d'une API RESTful à l'aide de JMeter
- Automatisation de l'API Rest dans JMeter - Tests de performances
- Comment tester l'API REST à l'aide de JMeter
- Utilisation de JMeter pour tester un service Web RESTful (Jersey)
Résumé des actions :
-
Pre-Requisite:
implémentez complètement ce service RESTFul. - Créez une classe Java simple : CrunchifyJMeterTest.java (Service que nous frapperons à l'aide de JMeter).
- Redéployez la même application sur le serveur Web Apache Tomcat.
- Exécutez JMeter et ouvrez le fichier
.jmx
fourni ci-dessous - Exécutez et analysez votre test
Un autre doit lire:
- SOAP vs REST : protocole d'accès simple aux objets vs. Transfert d'État représentatif
Étape 1
Pre-Requisite:
implémentez complètement ce service RESTFul. Déployer et exécuter l'application.
Faites-moi savoir si vous voyez un problème avec cela.
Étape 2
Créer un fichier CrunchifyJMeterTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package com . crunchify . restjersey ; import java . io . FileNotFoundException ; import java . io . IOException ; import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . Produces ; /** * @author Crunchify * */ @ Path ( "/index" ) public class CrunchifyJMeterTest { @ GET @ Produces ( "text/html" ) public String checkECV ( ) throws InterruptedException , FileNotFoundException , IOException { String result = "<br><div align='center'><h2>Hey This is Crunchify's JMeter Test...</h2></div>" ; System . out . println ( result ) ; Thread . sleep ( 1000 ) ; return result ; } } |
Vous devriez voir ci-dessous la structure du répertoire Eclipse :
Étape 3
Redéployez le même projet CrunchifyRESTJerseyExample sur Tomcat. Testez votre service REST.
URL:
http://localhost:8080/CrunchifyRESTJerseyExample/crunchify/index/
Étape 4
Copiez le code ci-dessous dans le fichier et enregistrez-le sous Crunchify-JMeter-Test.jmx
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
<? xml version = "1.0" encoding = "UTF-8" ?> < jmeterTestPlan version = "1.2" properties = "2.4" jmeter = "2.9 r1437961" > < hashTree > < TestPlan guiclass = "TestPlanGui" testclass = "TestPlan" testname = "App Shah Desktop Test" enabled = "true" > < stringProp name = "TestPlan.comments" > < / stringProp > < boolProp name = "TestPlan.functional_mode" > false < / boolProp > < boolProp name = "TestPlan.serialize_threadgroups" > false < / boolProp > < elementProp name = "TestPlan.user_defined_variables" elementType = "Arguments" guiclass = "ArgumentsPanel" testclass = "Arguments" testname = "User Defined Variables" enabled = "true" > < collectionProp name = "Arguments.arguments" / > < / elementProp > < stringProp name = "TestPlan.user_define_classpath" > < / stringProp > < / TestPlan > < hashTree > < ThreadGroup guiclass = "ThreadGroupGui" testclass = "ThreadGroup" testname = "Crunchify's REST Service JMeter Test" enabled = "true" > < stringProp name = "ThreadGroup.on_sample_error" > continue < / stringProp > < elementProp name = "ThreadGroup.main_controller" elementType = "LoopController" guiclass = "LoopControlPanel" testclass = "LoopController" testname = "Loop Controller" enabled = "true" > < boolProp name = "LoopController.continue_forever" > false < / boolProp > < intProp name = "LoopController.loops" > - 1 < / intProp > < / elementProp > < stringProp name = "ThreadGroup.num_threads" > 5 < / stringProp > < stringProp name = "ThreadGroup.ramp_time" > 2 < / stringProp > < longProp name = "ThreadGroup.start_time" > 1367432020000 < / longProp > < longProp name = "ThreadGroup.end_time" > 1367432020000 < / longProp > < boolProp name = "ThreadGroup.scheduler" > false < / boolProp > < stringProp name = "ThreadGroup.duration" > < / stringProp > < stringProp name = "ThreadGroup.delay" > < / stringProp > < / ThreadGroup > < hashTree > < HTTPSamplerProxy guiclass = "HttpTestSampleGui" testclass = "HTTPSamplerProxy" testname = "HTTP Request" enabled = "true" > < boolProp name = "HTTPSampler.postBodyRaw" > true < / boolProp > < elementProp name = "HTTPsampler.Arguments" elementType = "Arguments" > < collectionProp name = "Arguments.arguments" > < elementProp name = "" elementType = "HTTPArgument" > < boolProp name = "HTTPArgument.always_encode" > false < / boolProp > < stringProp name = "Argument.value" > < / stringProp > < stringProp name = "Argument.metadata" > = < / stringProp > < / elementProp > < / collectionProp > < / elementProp > < stringProp name = "HTTPSampler.domain" > localhost < / stringProp > < stringProp name = "HTTPSampler.port" > 8080 < / stringProp > < stringProp name = "HTTPSampler.connect_timeout" > 10000 < / stringProp > < stringProp name = "HTTPSampler.response_timeout" > 10000 < / stringProp > < stringProp name = "HTTPSampler.protocol" > < / stringProp > < stringProp name = "HTTPSampler.contentEncoding" > < / stringProp > < stringProp name = "HTTPSampler.path" > / CrunchifyRESTJerseyExample / crunchify / index < / stringProp > < stringProp name = "HTTPSampler.method" > GET < / stringProp > < boolProp name = "HTTPSampler.follow_redirects" > true < / boolProp > < boolProp name = "HTTPSampler.auto_redirects" > false < / boolProp > < boolProp name = "HTTPSampler.use_keepalive" > true < / boolProp > < boolProp name = "HTTPSampler.DO_MULTIPART_POST" > false < / boolProp > < boolProp name = "HTTPSampler.monitor" > false < / boolProp > < stringProp name = "HTTPSampler.embedded_url_re" > < / stringProp > < / HTTPSamplerProxy > < hashTree / > < ResultCollector guiclass = "StatGraphVisualizer" testclass = "ResultCollector" testname = "Aggregate Graph" enabled = "true" > < boolProp name = "ResultCollector.error_logging" > false < / boolProp > < objProp > < name > saveConfig < / name > < value class = "SampleSaveConfiguration" > < time > true < / time > < latency > true < / latency > < timestamp > true < / timestamp > < success > true < / success > < label > true < / label > < code > true < / code > < message > true < / message > < threadName > true < / threadName > < dataType > true < / dataType > < encoding > false < / encoding > < assertions > true < / assertions > < subresults > true < / subresults > < responseData > false < / responseData > < samplerData > false < / samplerData > < xml > true < / xml > < fieldNames > false < / fieldNames > < responseHeaders > false < / responseHeaders > < requestHeaders > false < / requestHeaders > < responseDataOnError > false < / responseDataOnError > < saveAssertionResultsFailureMessage > false < / saveAssertionResultsFailureMessage > < assertionsResultsToSave > 0 < / assertionsResultsToSave > < bytes > true < / bytes > < / value > < / objProp > < stringProp name = "filename" > < / stringProp > < / ResultCollector > < hashTree / > < ResultCollector guiclass = "StatVisualizer" testclass = "ResultCollector" testname = "Aggregate Report" enabled = "true" > < boolProp name = "ResultCollector.error_logging" > false < / boolProp > < objProp > < name > saveConfig < / name > < value class = "SampleSaveConfiguration" > < time > true < / time > < latency > true < / latency > < timestamp > true < / timestamp > < success > true < / success > < label > true < / label > < code > true < / code > < message > true < / message > < threadName > true < / threadName > < dataType > true < / dataType > < encoding > false < / encoding > < assertions > true < / assertions > < subresults > true < / subresults > < responseData > false < / responseData > < samplerData > false < / samplerData > < xml > false < / xml > < fieldNames > false < / fieldNames > < responseHeaders > false < / responseHeaders > < requestHeaders > false < / requestHeaders > < responseDataOnError > false < / responseDataOnError > < saveAssertionResultsFailureMessage > false < / saveAssertionResultsFailureMessage > < assertionsResultsToSave > 0 < / assertionsResultsToSave > < bytes > true < / bytes > < / value > < / objProp > < stringProp name = "filename" > < / stringProp > < / ResultCollector > < hashTree / > < / hashTree > < / hashTree > < / hashTree > < / jmeterTestPlan > |

Étape-5
- Téléchargez Apache JMeter.
- Exécutez JMeter en utilisant le fichier jmeter.bat ou jmeter.sh
- Cliquez sur
File -> Open
- Allez dans le dossier où vous avez enregistré le fichier Crunchify-JMeter-Test.jmx et sélectionnez le fichier
Étape-6
- Développez maintenant le test JMeter du service de repos de Crunchify comme vous le voyez dans l'image ci-dessous
- Cliquez sur Requête HTTP
- Assurez-vous que les paramètres ci-dessous sont corrects
Étape-7
Analysez votre résultat de test.
Rest API Automation dans JMeter ?
Eh bien, après chaque cycle de développement, vous pouvez exécuter des tests que vous avez déjà définis dans le fichier JMeter à un intervalle spécifique.
Il existe de nombreuses autres façons de modifier les paramètres de votre test. Jouez avec et faites-moi savoir comment ça se passe ou si vous voyez un problème avec cela.