{"id":2664,"date":"2024-01-20T12:00:00","date_gmt":"2024-01-20T11:00:00","guid":{"rendered":"https:\/\/ittester.sk\/non-classifiee\/rest-api-testing-jmeter\/"},"modified":"2024-10-22T14:14:02","modified_gmt":"2024-10-22T12:14:02","slug":"rest-api-testing-jmeter","status":"publish","type":"post","link":"https:\/\/ittester.sk\/fr\/tests-de-performance\/tutoriel-jmeter\/rest-api-testing-jmeter\/","title":{"rendered":"Tests de l&rsquo;API Rest avec JMeter"},"content":{"rendered":"\n<p>Actuellement, REST (Representational State Transfer) est devenu le mod\u00e8le le plus largement utilis\u00e9 pour la mise en \u0153uvre des services web. Il est l\u00e9ger, n&rsquo;est pas fortement typ\u00e9 et, contrairement \u00e0 SOAP, il n&rsquo;est pas li\u00e9 au format XML. C&rsquo;est donc devenu une actualit\u00e9 br\u00fblante pour l&rsquo;AQ \u00e9galement. Dans nos articles pr\u00e9c\u00e9dents, nous avons mentionn\u00e9 les tests manuels de l&rsquo;API REST et l&rsquo;automatisation de l&rsquo;API REST \u00e0 l&rsquo;aide de Java. Dans ce billet, nous allons vous montrer comment effectuer des tests fonctionnels ou de charge des API REST \u00e0 l&rsquo;aide de JMeter.<\/p>\n\n<p>Dans ce tutoriel, j&rsquo;utilise une API REST fictive disponible sur jsonplaceholder.typicode.com. J&rsquo;utiliserai la m\u00e9thode HTTP Post de l&rsquo;API pour demander la fonction \u00ab\u00a0post comments\u00a0\u00bb de cette API fictive.<\/p>\n\n<pre class=\"wp-block-code\"><code>ADRESA URL API - http:\/\/jsonplaceholder.typicode.com\/posts\n\nTelo po\u017eiadavky API\n\n{\n\n\u00a0\u00a0\u00a0\u00a0title: 'foo',\n\n\u00a0\u00a0\u00a0\u00a0body: 'bar',\n\n\u00a0\u00a0\u00a0\u00a0userId: 1\n\n}\n\nPri \u00faspe\u0161nej po\u017eiadavke API vr\u00e1ti nasleduj\u00facu odpove\u010f (ako je vidie\u0165 v \u010dasti View Result Tree).\n\n{\n\n\u00a0\u00a0title: 'foo',\n\n\u00a0\u00a0body: 'bar',\n\n\u00a0\u00a0userId: 1\n\n\u00a0\u00a0id: 101, \/\/or any random id\n\n}\n\n<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">\u00c9tapes de la cr\u00e9ation d&rsquo;un script pour l&rsquo;API Rest dans JMeter<\/h2>\n\n<ul class=\"wp-block-list\">\n<li>Tout d&rsquo;abord, nous devons ajouter l&rsquo;\u00e9chantillonneur de requ\u00eate HTTP au groupe de threads (Test Plan -&gt; Thread Group -&gt; Sampler-&gt;HTTP Request).<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"560\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-1-800-560.webp\" alt=\"\" class=\"wp-image-856\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-1-800-560.webp 800w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-1-800-560-300x210.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-1-800-560-768x538.webp 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<ul class=\"wp-block-list\">\n<li>Ensuite, dans la section serveur web, nous devons sp\u00e9cifier le nom ou l&rsquo;adresse IP du serveur API et son port (si n\u00e9cessaire).<\/li>\n<\/ul>\n\n<p>La section Requ\u00eate HTTP devra \u00eatre compl\u00e9t\u00e9e comme suit :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Nom du serveur ou IP<\/strong> &#8211; nom du serveur (par exemple, jsonplaceholder.typicode.com)<\/li>\n\n\n\n<li><strong>Impl\u00e9mentation<\/strong> &#8211; s\u00e9lectionnez HttpClient4 ou Java<\/li>\n\n\n\n<li><strong>[http]Protocole<\/strong> &#8211; Selon le type de protocole, s\u00e9lectionnez HTTP ou HTTPS (par exemple, l&rsquo;API fictive est construite sur http, nous utiliserons donc http ici).<strong> <\/strong><\/li>\n\n\n\n<li><strong>M\u00e9thode<\/strong> &#8211; En fonction du type de m\u00e9thode sur laquelle l&rsquo;API a \u00e9t\u00e9 construite, s\u00e9lectionnez Get, Put, Post, Delete, etc (dans notre exemple, nous travaillerons avec la m\u00e9thode Post).<\/li>\n\n\n\n<li><strong>Path<\/strong> &#8211; Chemin d&rsquo;acc\u00e8s \u00e0 l&rsquo;application apr\u00e8s API_URL (par ex. pour API_URL http:\/\/jsonplaceholder.typicode.com\/posts&rsquo; sera Path \u00ab\u00a0posts\u00a0\u00bb.<\/li>\n\n\n\n<li><strong>Parameters\/Post Body (Parameters\/Post<\/strong> Request Body) &#8211; ajoutez le corps de la requ\u00eate API ici (le corps de la requ\u00eate API dans la section \u00ab\u00a0Post Body\u00a0\u00bb (voir la capture d&rsquo;\u00e9cran ci-dessous pour plus de d\u00e9tails, ou nous pouvons \u00e9galement entrer les param\u00e8tres de la requ\u00eate un par un dans la section Parameters).<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"830\" height=\"530\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-2-830-530.webp\" alt=\"\" class=\"wp-image-858\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-2-830-530.webp 830w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-2-830-530-300x192.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-2-830-530-768x490.webp 768w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/figure>\n<\/div>\n<ul class=\"wp-block-list\">\n<li>L&rsquo;utilisateur doit \u00e9galement ajouter le <strong>gestionnaire d&rsquo;en-t\u00eates HTTP<\/strong> en tant qu&rsquo;enfant de l&rsquo;\u00e9chantillonneur de requ\u00eates HTTP (pour l&rsquo;exemple actuel, ce n&rsquo;est pas n\u00e9cessaire, cela ne fonctionnera m\u00eame pas) avec l&rsquo;en-t\u00eate content-type<\/li>\n\n\n\n<li>Cliquez sur le bouton Ajouter dans le gestionnaire d&rsquo;en-t\u00eates HTTP et ajoutez \u00ab\u00a0Content-Type\u00a0\u00bb dans Nom et \u00ab\u00a0application\/json\u00a0\u00bb dans Valeur.<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"170\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-3-850-170.webp\" alt=\"\" class=\"wp-image-860\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-3-850-170.webp 850w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-3-850-170-300x60.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-3-850-170-768x154.webp 768w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/figure>\n<\/div>\n<ul class=\"wp-block-list\">\n<li>[Volite\u013en\u00e9]En outre, nous pouvons ajouter diverses assertions au plan de test pour marquer un cas de test comme r\u00e9ussi ou non en fonction de la r\u00e9ponse obtenue. Par exemple. L&rsquo;API fictive ci-dessus renvoie \u00ab\u00a0title:foo\u00a0\u00bb dans sa r\u00e9ponse. Ainsi, pour tester l&rsquo;API, nous pouvons ajouter \u00ab\u00a0Response Assertion\u00a0\u00bb \u00e0 la \u00ab\u00a0HTTP Request\u00a0\u00bb (HTTP Request-&gt;ADD-&gt;Assertion-&gt;Response Assertion) et ajouter le motif \u00ab\u00a0title : &lsquo;foo'\u00a0\u00bb \u00e0 la section Pattern to Test de la Response Assertion. Voir la capture d&rsquo;\u00e9cran pour r\u00e9f\u00e9rence.<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"460\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-4-770-460.webp\" alt=\"\" class=\"wp-image-862\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-4-770-460.webp 770w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-4-770-460-300x179.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-4-770-460-768x459.webp 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/figure>\n<\/div>\n<ul class=\"wp-block-list\">\n<li>Enfin, nous pouvons ajouter diff\u00e9rents r\u00e9cepteurs, par exemple \u00ab\u00a0Afficher l&rsquo;arbre des r\u00e9sultats\u00a0\u00bb. Apr\u00e8s avoir ex\u00e9cut\u00e9 le script JMeter (Ctrl+r), nous verrons la r\u00e9ponse pour l&rsquo;API dans la section \u00ab\u00a0View Result Tree\u00a0\u00bb des donn\u00e9es de r\u00e9ponse.<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"550\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-5-950-550.webp\" alt=\"\" class=\"wp-image-864\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-5-950-550.webp 950w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-5-950-550-300x174.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/rest-api-testovanie-s-jmeter-screenshot-5-950-550-768x445.webp 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n<\/div>\n<p>De cette mani\u00e8re, nous pouvons effectuer des tests fonctionnels de l&rsquo;API Rest et augmenter le \u00ab\u00a0nombre de threads\u00a0\u00bb et le \u00ab\u00a0nombre de cycles\u00a0\u00bb dans le groupe de threads pour les tests de charge.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans ce billet, nous allons vous montrer comment effectuer des tests fonctionnels ou de charge des API REST \u00e0 l&rsquo;aide de JMeter.<\/p>\n","protected":false},"author":8,"featured_media":2671,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[51],"tags":[],"class_list":["post-2664","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriel-jmeter"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/comments?post=2664"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2664\/revisions"}],"predecessor-version":[{"id":2673,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2664\/revisions\/2673"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media\/2671"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media?parent=2664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/categories?post=2664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/tags?post=2664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}