{"id":2624,"date":"2024-03-19T09:23:54","date_gmt":"2024-03-19T08:23:54","guid":{"rendered":"https:\/\/ittester.sk\/non-classifiee\/execution-en-parallele-des-tests\/"},"modified":"2024-10-22T14:06:05","modified_gmt":"2024-10-22T12:06:05","slug":"execution-en-parallele-des-tests","status":"publish","type":"post","link":"https:\/\/ittester.sk\/fr\/tests-automatises\/tutoriel-testng\/execution-en-parallele-des-tests\/","title":{"rendered":"Ex\u00e9cution parall\u00e8le des tests dans TestNG"},"content":{"rendered":"\n<p>Dans les tests automatis\u00e9s, nous souhaitons souvent r\u00e9duire le temps d&rsquo;ex\u00e9cution des tests afin d&rsquo;obtenir des r\u00e9sultats aussi rapidement que possible. Lorsque nous ex\u00e9cutons des tests Selenium \u00e0 l&rsquo;aide du package testNG, les tests sont par d\u00e9faut ex\u00e9cut\u00e9s en s\u00e9rie. Mais TestNG fournit un support inh\u00e9rent pour l&rsquo;ex\u00e9cution de tests en parall\u00e8le. Gr\u00e2ce \u00e0 ce tutoriel, nous serons en mesure d&rsquo;ex\u00e9cuter des tests en parall\u00e8le dans Selenium ou tout autre outil d&rsquo;automatisation des tests compatible avec Java.<\/p>\n\n<p>Avant de commencer l&rsquo;ex\u00e9cution parall\u00e8le, examinons bri\u00e8vement le fichier testNG.xml (ceux qui sont familiers avec le fichier testng.xml peuvent sauter cette section et passer au paragraphe suivant &#8211; \u00ab\u00a0Ex\u00e9cution parall\u00e8le des tests\u00a0\u00bb).<\/p>\n\n<p>Le fichier testng.xml facilite l&rsquo;ex\u00e9cution des tests et le regroupement de plusieurs tests diff\u00e9rents provenant de la m\u00eame classe ou de classes diff\u00e9rentes. Ce fichier XML comporte plusieurs balises pour la suite, les tests, les classes et\/ou les paquets, la balise racine \u00e9tant la suite.<\/p>\n\n<p>Exemple de fichier testNG.xml :<\/p>\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE suite SYSTEM \"http:\/\/testng.org\/testng-1.0.dtd\">\n\n&lt;suite name=\"ITtesterTestSuite\" verbose=\"1\" >\n\n\u00a0\u00a0&lt;test name=\"parallelExecutionTests\" >\n\n\u00a0\u00a0\u00a0\u00a0&lt;classes>\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;class name=\"testsInParallel\" \/>\n\n\u00a0\u00a0\u00a0\u00a0&lt;class name=\"testsInParallel\" \/>\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/classes>\n\n\u00a0\u00a0&lt;\/test>\n\n&lt;\/suite><\/code><\/pre>\n\n<p>Lorsque vous cliquez avec le bouton droit de la souris sur le fichier testng.xml et que vous l&rsquo;ex\u00e9cutez en tant qu&rsquo;ensemble TestNG, TestNG trouve les tests avec l&rsquo;annotation @Test dans la classe testsInParallel.java et commence \u00e0 ex\u00e9cuter les tests.<\/p>\n\n<h2 class=\"wp-block-heading\">Ex\u00e9cution de tests en parall\u00e8le<\/h2>\n\n<p>Pour ex\u00e9cuter les tests en parall\u00e8le, il suffit d&rsquo;ajouter ces deux paires cl\u00e9-valeur dans la suite :<\/p>\n\n<ul class=\"wp-block-list\">\n<li>parallel=\u00a0\u00bb{methods\/tests\/classes}\u00a0\u00bb<\/li>\n\n\n\n<li>thread-count=\u00a0\u00bb{nombre de threads que vous voulez ex\u00e9cuter en m\u00eame temps}\u00a0\u00bb.<\/li>\n<\/ul>\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE suite SYSTEM \"http:\/\/testng.org\/testng-1.0.dtd\">\n\n&lt;suite name=\"ITtesterTestSuite\" verbose=\"1\" parallel=\"methods\" thread-count=\"5\">\n\n\u00a0\u00a0&lt;test name=\"parallelExecutionTestsA\" >\n\n\u00a0\u00a0\u00a0\u00a0&lt;classes>\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;class name=\"testsInParallelA1\" \/>\n\n\u00a0\u00a0\u00a0\u00a0&lt;class name=\"testsInParallelA2\" \/>\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/classes>\n\n\u00a0\u00a0&lt;\/test>\n\n\u00a0\u00a0&lt;test name=\"parallelExecutionTestsB\" >\n\n\u00a0\u00a0\u00a0\u00a0&lt;classes>\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;class name=\"testsInParallelB1\" \/>\n\n\u00a0\u00a0\u00a0\u00a0&lt;class name=\"testsInParallelB2\" \/>\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/classes>\n\n\u00a0\u00a0&lt;\/test>\n\n&lt;\/suite><\/code><\/pre>\n\n<p>Examinons l&rsquo;objectif des trois options qui peuvent \u00eatre d\u00e9finies comme valeur pour le param\u00e8tre \u00ab\u00a0parallel\u00a0\u00bb.<\/p>\n\n<p><strong>methods<\/strong> &#8211; la valeur de la m\u00e9thode pour l&rsquo;attribut parallel ex\u00e9cute tous les tests ind\u00e9pendamment sur des threads s\u00e9par\u00e9s (maximum de threads disponibles). Dans l&rsquo;exemple ci-dessus, toutes les m\u00e9thodes de test r\u00e9pertori\u00e9es dans les quatre classes seront ex\u00e9cut\u00e9es en parall\u00e8le dans un maximum de 5 threads.<\/p>\n\n<p><strong>tests<\/strong> &#8211; la valeur du test ex\u00e9cutera les m\u00e9thodes \u00e9num\u00e9r\u00e9es dans l&rsquo;indicateur de test dans le m\u00eame fil d&rsquo;ex\u00e9cution. Dans l&rsquo;exemple ci-dessus, toutes les m\u00e9thodes de test sous l&rsquo;\u00e9tiquette \u00ab\u00a0parallelExecutionTestsA\u00a0\u00bb sont ex\u00e9cut\u00e9es dans le m\u00eame thread, et toutes les m\u00e9thodes de test sous l&rsquo;\u00e9tiquette \u00ab\u00a0parallelExecutionTestsB\u00a0\u00bb sont ex\u00e9cut\u00e9es dans le m\u00eame thread. Il y aura donc deux threads qui ex\u00e9cuteront chacun les m\u00e9thodes de test en parall\u00e8le, mais ind\u00e9pendamment l&rsquo;un de l&rsquo;autre, dans le cadre des tests parallelExecutionTestsA et parallelExecutionTestsB.<\/p>\n\n<p><strong>class <\/strong>&#8211; la valeur de class d\u00e9clenchera toutes les m\u00e9thodes de test r\u00e9pertori\u00e9es dans la classe dans le m\u00eame thread et chaque m\u00e9thode de la classe sera d\u00e9clench\u00e9e dans un autre thread. Il y aurait donc quatre threads ex\u00e9cutant des tests dans quatre classes &#8211; testsInParallelA1,testsInParallelA2,testsInParallelB1,testsInParallelB2.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TestNG fournit un support inh\u00e9rent pour l&rsquo;ex\u00e9cution de tests en parall\u00e8le, que nous pourrons ex\u00e9cuter dans Selenium ou un autre outil.<\/p>\n","protected":false},"author":8,"featured_media":2625,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[46],"tags":[],"class_list":["post-2624","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriel-testng"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2624","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=2624"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2624\/revisions"}],"predecessor-version":[{"id":2628,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2624\/revisions\/2628"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media\/2625"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media?parent=2624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/categories?post=2624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/tags?post=2624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}