{"id":2904,"date":"2024-01-05T09:54:18","date_gmt":"2024-01-05T08:54:18","guid":{"rendered":"https:\/\/ittester.sk\/non-classifiee\/controleurs-logiques-jmeter\/"},"modified":"2024-10-22T14:15:11","modified_gmt":"2024-10-22T12:15:11","slug":"controleurs-logiques-jmeter","status":"publish","type":"post","link":"https:\/\/ittester.sk\/fr\/tests-de-performance\/tutoriel-jmeter\/controleurs-logiques-jmeter\/","title":{"rendered":"Contr\u00f4leurs logiques dans Jmeter"},"content":{"rendered":"\n<p>Dans le tutoriel pr\u00e9c\u00e9dent, nous avons abord\u00e9 les \u00e9chantillonneurs et les diff\u00e9rents types de requ\u00eates d&rsquo;\u00e9chantillonnage disponibles dans JMeter. Dans ce tutoriel, nous \u00e9tudierons les contr\u00f4leurs logiques qui personnalisent la mani\u00e8re dont les diff\u00e9rentes requ\u00eates sont envoy\u00e9es au serveur.<\/p>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-logic-controllers\">Logic Controllers<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-preco-potrebujeme-logic-controllers\">Pre\u010do potrebujeme Logic Controllers?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-critical-section-controller-kontroler-kritickej-sekcie\">Critical Section Controller (Kontrol\u00e9r kritickej sekcie)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-foreach-controller\">ForEach Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-if-controller\">If Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-include-controller\">Include Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-interleave-controller\">Interleave Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-loop-controller\">Loop Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-module-controller\">Module Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-once-only-controller\">Once Only Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-random-controller-nahodny-kontroler\">Random Controller (N\u00e1hodn\u00fd kontrol\u00e9r)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-random-order-controller\">Random Order Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-recording-controller\">Recording Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-runtime-controller\">Runtime Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-simple-controller-jednoduchy-kontroler\">Simple Controller (Jednoduch\u00fd kontrol\u00e9r)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-switch-controller\">Switch Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-throughput-controller\">Throughput Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-transaction-controller\">Transaction Controller<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-while-controller\">While Controller<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-logic-controllers\">Contr\u00f4leurs logiques  <\/h2>\n\n<p>Les contr\u00f4leurs logiques sont des \u00e9l\u00e9ments du plan de test utilis\u00e9s pour ajuster l&rsquo;ordre de traitement des \u00e9chantillonneurs et d&rsquo;autres \u00e9l\u00e9ments ajout\u00e9s en tant que fils. Les contr\u00f4leurs logiques sont principalement utilis\u00e9s dans les demandes de l&rsquo;\u00e9chantillonneur pour effectuer diverses personnalisations telles que modifier l&rsquo;ordre de leur traitement, les regrouper en une seule transaction ou ex\u00e9cuter des demandes en boucle, etc.<\/p>\n\n<p><strong>&gt;&gt;&gt; Marche \u00e0 suivre pour d\u00e9marrer un contr\u00f4leur logique &#8211;<\/strong> <strong>cliquez avec le bouton droit de la souris sur le groupe de fils &#8211; allez \u00e0 Ajouter &#8211; allez \u00e0 Contr\u00f4leurs logiques &#8211; cliquez sur les contr\u00f4leurs logiques souhait\u00e9s <\/strong>.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"560\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2023\/12\/loop-controller-710-560.webp\" alt=\"Capture d'&#xE9;cran des instructions de d&#xE9;marrage du contr&#xF4;leur logique\" class=\"wp-image-754\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2023\/12\/loop-controller-710-560.webp 710w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/12\/loop-controller-710-560-300x237.webp 300w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-preco-potrebujeme-logic-controllers\">Pourquoi avons-nous besoin de contr\u00f4leurs logiques ?<\/h2>\n\n<p>Les scripts de test de performance sont utilis\u00e9s pour simuler les actions des utilisateurs r\u00e9els. Comme un utilisateur r\u00e9el, il effectuera de multiples actions de diff\u00e9rentes mani\u00e8res, par exemple en effectuant un ensemble d&rsquo;op\u00e9rations de mani\u00e8re s\u00e9quentielle (par exemple, naviguer de la page de connexion \u00e0 la page d&rsquo;accueil), en effectuant des types d&rsquo;op\u00e9rations similaires en boucle (par exemple, lire plusieurs courriels non lus), en effectuant certaines op\u00e9rations de mani\u00e8re al\u00e9atoire, etc. Pour simuler ces diff\u00e9rents types d&rsquo;actions, JMeter nous fournit diff\u00e9rents types de contr\u00f4leurs logiques qui personnalisent le traitement des \u00e9l\u00e9ments qu&rsquo;ils contiennent.<\/p>\n\n<p>Examinons maintenant les diff\u00e9rents contr\u00f4leurs logiques fournis par JMeter :<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-critical-section-controller-kontroler-kritickej-sekcie\">Contr\u00f4leur de la section critique<\/h2>\n\n<p>Il s&rsquo;agit d&rsquo;un contr\u00f4leur nouvellement ajout\u00e9 au syst\u00e8me JMeter. Garantit qu&rsquo;un seul thread \u00e0 la fois acc\u00e8de aux \u00e9l\u00e9ments esclaves de ce contr\u00f4leur.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-foreach-controller\">ForEach Contr\u00f4leur<\/h2>\n\n<p>Ce contr\u00f4leur est utilis\u00e9 pour ex\u00e9cuter des requ\u00eates en boucle sur la base des valeurs d&rsquo;un ensemble de variables connexes.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-if-controller\">Si le contr\u00f4leur<\/h2>\n\n<p>En utilisant le contr\u00f4leur If, nous pouvons sp\u00e9cifier une condition pour que l&rsquo;\u00e9l\u00e9ment enfant qu&rsquo;il contient soit d\u00e9clench\u00e9 ou non, en fonction de la condition qui doit \u00eatre \u00e9valu\u00e9e comme vraie ou fausse.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-include-controller\">Inclure le contr\u00f4leur<\/h2>\n\n<p>Le contr\u00f4leur Include peut \u00eatre utilis\u00e9 pour assurer la modularit\u00e9 de JMeter. Gr\u00e2ce \u00e0 ce contr\u00f4leur, nous pouvons ajouter un fichier .jmx (fragment de test) externe \u00e0 notre script existant en chargeant le fichier jmx dans le contr\u00f4leur Include.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-interleave-controller\">Contr\u00f4leur d&rsquo;entrelacement<\/h2>\n\n<p>Le contr\u00f4leur Interleave nous permet de s\u00e9lectionner et d&rsquo;ex\u00e9cuter un \u00e9l\u00e9ment enfant parmi plusieurs enfants \u00e0 chaque it\u00e9ration de la boucle. Par exemple, si trois \u00e9chantillonneurs sont ajout\u00e9s en tant qu&rsquo;esclaves au contr\u00f4leur d&rsquo;entrelacement, lors de la premi\u00e8re it\u00e9ration, la premi\u00e8re demande d&rsquo;\u00e9chantillonnage sera s\u00e9lectionn\u00e9e, lors de l&rsquo;it\u00e9ration suivante, la suivante, et ainsi de suite. Lorsque les \u00e9l\u00e9ments enfants sont termin\u00e9s, l&rsquo;it\u00e9ration recommence \u00e0 partir du premier \u00e9l\u00e9ment.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-loop-controller\">Contr\u00f4leur de boucle<\/h2>\n\n<p>Permet d&rsquo;effectuer des op\u00e9rations sp\u00e9cifi\u00e9es comme \u00e9l\u00e9ments enfants dans une boucle avec la valeur d&rsquo;it\u00e9ration sp\u00e9cifi\u00e9e dans son panneau de contr\u00f4le.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-module-controller\">Contr\u00f4leur de module<\/h2>\n\n<p>En utilisant le contr\u00f4leur de modules, nous pouvons r\u00e9appliquer un fragment de test (par exemple un \u00e9chantillonneur) \u00e0 notre script en s\u00e9lectionnant le module dans le panneau de contr\u00f4le du contr\u00f4leur de modules.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-once-only-controller\">Contr\u00f4leur unique<\/h2>\n\n<p>Le contr\u00f4leur Once Only est utilis\u00e9 dans une situation o\u00f9 l&rsquo;on souhaite ex\u00e9cuter une op\u00e9ration une seule fois, m\u00eame si l&rsquo;op\u00e9ration est ex\u00e9cut\u00e9e dans une boucle.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-random-controller-nahodny-kontroler\">Contr\u00f4leur al\u00e9atoire<\/h2>\n\n<p>Il est similaire \u00e0 un contr\u00f4leur al\u00e9atoire et s\u00e9lectionne un \u00e9l\u00e9ment enfant \u00e0 chaque it\u00e9ration, mais contrairement au contr\u00f4leur entrelac\u00e9, il s\u00e9lectionne l&rsquo;\u00e9l\u00e9ment enfant de mani\u00e8re al\u00e9atoire.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-random-order-controller\">Contr\u00f4leur d&rsquo;ordre al\u00e9atoire<\/h2>\n\n<p>Le contr\u00f4leur d&rsquo;ordre al\u00e9atoire est utilis\u00e9 pour ex\u00e9cuter chacun de ses \u00e9l\u00e9ments enfants au maximum une fois dans un ordre al\u00e9atoire.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-recording-controller\">Contr\u00f4leur d&rsquo;enregistrement<\/h2>\n\n<p>Ce contr\u00f4leur est l&rsquo;endroit o\u00f9 les scripts enregistr\u00e9s \u00e0 l&rsquo;aide du proxy HTTP sont enregistr\u00e9s par d\u00e9faut (voir notre <a href=\"https:\/\/artoftesting.com\/record-scripts-in-jmeter\">tutoriel<\/a> pour plus de d\u00e9tails sur l&rsquo;enregistrement et la lecture dans JMeter).<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-runtime-controller\">Contr\u00f4leur d&rsquo;ex\u00e9cution<\/h2>\n\n<p>Le contr\u00f4leur d&rsquo;ex\u00e9cution est utilis\u00e9 pour limiter le temps d&rsquo;ex\u00e9cution de ses \u00e9l\u00e9ments enfants. Par exemple, si nous avons sp\u00e9cifi\u00e9 une valeur \u00ab\u00a0Runtime\u00a0\u00bb de 100 secondes, les \u00e9l\u00e9ments \u00e0 l&rsquo;int\u00e9rieur du contr\u00f4leur Runtime s&rsquo;ex\u00e9cuteront pendant 100 secondes avec autant d&rsquo;it\u00e9rations que possible.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-simple-controller-jednoduchy-kontroler\">Contr\u00f4leur simple<\/h2>\n\n<p>Ce contr\u00f4leur n&rsquo;est qu&rsquo;un endroit o\u00f9 regrouper et organiser les diff\u00e9rents \u00e9l\u00e9ments du plan de test.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-switch-controller\">Contr\u00f4leur de commutation<\/h2>\n\n<p>Ce contr\u00f4leur est utilis\u00e9 pour s\u00e9lectionner un \u00e9l\u00e9ment \u00e0 traiter parmi ses multiples \u00e9l\u00e9ments enfants. L&rsquo;\u00e9l\u00e9ment n&rsquo;est pas s\u00e9lectionn\u00e9 dans un ordre s\u00e9quentiel ou al\u00e9atoire ; il est s\u00e9lectionn\u00e9 en fonction de la valeur de commutation d\u00e9finie dans son panneau de commande. La valeur de commutation peut \u00eatre une variable dont la valeur est \u00e9valu\u00e9e au niveau de l&rsquo;\u00e9l\u00e9ment index(position) ou du nom de l&rsquo;\u00e9l\u00e9ment. Par exemple, si, lors de la premi\u00e8re it\u00e9ration, la valeur de l&rsquo;interrupteur est \u00e9valu\u00e9e \u00e0 \u00ab\u00a03\u00a0\u00bb, le quatri\u00e8me \u00e9l\u00e9ment est s\u00e9lectionn\u00e9 pour \u00eatre trait\u00e9 (la valeur de l&rsquo;index commence \u00e0 0). De m\u00eame, si la valeur d&rsquo;un commutateur est \u00e9valu\u00e9e comme un nom d&rsquo;\u00e9l\u00e9ment, cet \u00e9l\u00e9ment est s\u00e9lectionn\u00e9 pour le traitement.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-throughput-controller\">Contr\u00f4leur de d\u00e9bit<\/h2>\n\n<p>Le contr\u00f4leur de d\u00e9bit est utilis\u00e9 pour contr\u00f4ler le traitement de ses \u00e9l\u00e9ments enfants en fonction du nombre total d&rsquo;ex\u00e9cutions ou du pourcentage d&rsquo;ex\u00e9cutions sp\u00e9cifi\u00e9 dans son panneau de contr\u00f4le.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-transaction-controller\">Contr\u00f4leur de transactions  <\/h2>\n\n<p>Le contr\u00f4leur de transaction est l&rsquo;un des contr\u00f4leurs fr\u00e9quemment utilis\u00e9s dans les scripts JMeter. Il est utilis\u00e9 pour regrouper plusieurs demandes d&rsquo;\u00e9chantillonnage en une seule. Le temps de r\u00e9ponse et d&rsquo;autres param\u00e8tres de performance du r\u00e9sultat du test sont \u00e9valu\u00e9s pour l&rsquo;ensemble de la transaction. Par exemple, lorsque vous v\u00e9rifiez les performances de la page d&rsquo;accueil d&rsquo;une application, vous pouvez constater que le lancement de la page d&rsquo;accueil g\u00e9n\u00e8re un grand nombre de requ\u00eates au niveau du backend. Nous devons donc regrouper toutes ces demandes en une seule transaction, ce \u00e0 quoi sert le contr\u00f4leur de transaction JMeter. Apr\u00e8s avoir ex\u00e9cut\u00e9 le script, nous pouvons voir le temps de r\u00e9ponse total de l&rsquo;ensemble de la transaction.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-while-controller\">Pendant que le contr\u00f4leur<\/h2>\n\n<p>Le contr\u00f4leur While est utilis\u00e9 pour d\u00e9clencher les \u00e9l\u00e9ments enfants qu&rsquo;il contient jusqu&rsquo;\u00e0 ce que la valeur sp\u00e9cifi\u00e9e dans son panneau de contr\u00f4le soit \u00e9valu\u00e9e \u00e0 false.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les contr\u00f4leurs logiques sont des \u00e9l\u00e9ments du plan de test utilis\u00e9s pour ajuster l&rsquo;ordre de traitement des \u00e9chantillonneurs et d&rsquo;autres \u00e9l\u00e9ments \u00ab\u00a0enfants\u00a0\u00bb.  <\/p>\n","protected":false},"author":8,"featured_media":2907,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[51],"tags":[],"class_list":["post-2904","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\/2904","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=2904"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2904\/revisions"}],"predecessor-version":[{"id":2908,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2904\/revisions\/2908"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media\/2907"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media?parent=2904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/categories?post=2904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/tags?post=2904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}