{"id":1822,"date":"2024-03-19T09:23:54","date_gmt":"2024-03-19T08:23:54","guid":{"rendered":"https:\/\/ittester.sk\/sin-categorizar\/pruebas-ejecutadas-en-paralelo\/"},"modified":"2024-07-11T09:43:35","modified_gmt":"2024-07-11T07:43:35","slug":"pruebas-ejecutadas-en-paralelo","status":"publish","type":"post","link":"https:\/\/ittester.sk\/es\/sin-categorizar\/tutorial-testng\/pruebas-ejecutadas-en-paralelo\/","title":{"rendered":"Ejecuci\u00f3n paralela de pruebas en TestNG"},"content":{"rendered":"\n<p>En las pruebas automatizadas, a menudo queremos reducir el tiempo de ejecuci\u00f3n de las pruebas para obtener resultados lo antes posible. Cuando ejecutamos pruebas Selenium utilizando el paquete testNG, por defecto las pruebas se ejecutan en serie. Pero testNG proporciona soporte inherente para ejecutar pruebas en paralelo. Con este tutorial, podremos realizar la ejecuci\u00f3n paralela de pruebas en Selenium o en cualquier herramienta de automatizaci\u00f3n de pruebas compatible con Java.<\/p>\n\n<p>Antes de empezar con la ejecuci\u00f3n paralela, repasemos brevemente el archivo testNG.xml (quienes est\u00e9n familiarizados con el archivo testng.xml pueden saltarse esta secci\u00f3n y pasar al siguiente p\u00e1rrafo: \u00abEjecuci\u00f3n paralela de pruebas\u00bb).<\/p>\n\n<p>El archivo testng.xml facilita la ejecuci\u00f3n de pruebas y la agrupaci\u00f3n de varias pruebas diferentes de la misma clase o de clases diferentes. Este archivo XML tiene varias etiquetas para suite, pruebas, clases y\/o paquetes, siendo la etiqueta ra\u00edz suite.<\/p>\n\n<p>Archivo de ejemplo 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>Cuando haces clic con el bot\u00f3n derecho en el archivo testng.xml y lo ejecutas como un conjunto TestNG, TestNG encuentra las pruebas con la anotaci\u00f3n @Test en la clase testsInParallel.java y comienza a ejecutar las pruebas.<\/p>\n\n<h2 class=\"wp-block-heading\">Ejecutar pruebas paralelas<\/h2>\n\n<p>Para ejecutar las pruebas en paralelo, s\u00f3lo tienes que a\u00f1adir estos dos pares clave-valor en el conjunto:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>parallel=\u00bb{m\u00e9todos\/pruebas\/clases}\u00bb<\/li>\n\n\n\n<li>thread-count=\u00bb{n\u00famero de hilos que quieres ejecutar al mismo tiempo}\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>Veamos la finalidad de las tres opciones que pueden establecerse como valor del par\u00e1metro \u00abparalelo\u00bb &#8211;<\/p>\n\n<p><strong>m\u00e9todos<\/strong> &#8211; el valor del m\u00e9todo para el atributo paralelo ejecuta todas las pruebas independientemente en hilos separados (m\u00e1ximo de hilos disponibles). En el ejemplo anterior, todos los m\u00e9todos de prueba de las cuatro clases se ejecutar\u00e1n en paralelo en un m\u00e1ximo de 5 subprocesos.<\/p>\n\n<p><strong>pruebas<\/strong> &#8211; el valor de la prueba ejecutar\u00e1 los m\u00e9todos indicados en la bandera de prueba en el mismo hilo. En el ejemplo anterior, todos los m\u00e9todos de prueba bajo la etiqueta \u00abparallelExecutionTestsA\u00bb se ejecutan en el mismo hilo, y todos los m\u00e9todos de prueba bajo la etiqueta \u00abparallelExecutionTestsB\u00bb se ejecutan en el mismo hilo. As\u00ed, habr\u00e1 dos hilos, cada uno de los cuales ejecutar\u00e1 los m\u00e9todos de prueba en paralelo, pero independientemente el uno del otro, dentro de las pruebas parallelExecutionTestsA y parallelExecutionTestsB.<\/p>\n\n<p><strong>clase <\/strong>&#8211; el valor de clase activar\u00e1 todos los m\u00e9todos de prueba enumerados en la clase en el mismo hilo y cada m\u00e9todo de la clase se activar\u00e1 en otro hilo. As\u00ed que habr\u00eda cuatro hilos ejecutando pruebas en cuatro clases: pruebasEnParaleloA1,pruebasEnParaleloA2,pruebasEnParaleloB1,pruebasEnParaleloB2.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TestNG proporciona soporte inherente para ejecutar pruebas en paralelo, que podremos ejecutar en Selenium u otra herramienta.<\/p>\n","protected":false},"author":8,"featured_media":1823,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[36],"tags":[],"class_list":["post-1822","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-testng"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/comments?post=1822"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1822\/revisions"}],"predecessor-version":[{"id":1824,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1822\/revisions\/1824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media\/1823"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media?parent=1822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/categories?post=1822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/tags?post=1822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}