{"id":2649,"date":"2024-06-07T12:31:25","date_gmt":"2024-06-07T10:31:25","guid":{"rendered":"https:\/\/ittester.sk\/non-classifiee\/testing-questions-to-talk\/"},"modified":"2024-10-22T14:06:08","modified_gmt":"2024-10-22T12:06:08","slug":"testing-questions-to-talk","status":"publish","type":"post","link":"https:\/\/ittester.sk\/fr\/questions-dentretien\/testing-questions-to-talk\/","title":{"rendered":"TestNG : questions d&rsquo;entretien"},"content":{"rendered":"\n<p>TestNG est l&rsquo;un des cadres de test les plus utilis\u00e9s pour les tests unitaires et automatis\u00e9s. Dans ce guide, nous avons rassembl\u00e9 les questions les plus fr\u00e9quemment pos\u00e9es et les r\u00e9ponses aux entretiens, tant pour les nouveaux venus que pour les plus exp\u00e9riment\u00e9s.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 1. Qu&rsquo;est-ce que TestNG ?<\/h2>\n\n<p>R\u00e9ponse : TestNG (NG comme Next Generation) est un cadre de test qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 Selenium ou \u00e0 tout autre outil d&rsquo;automatisation afin de fournir de multiples fonctionnalit\u00e9s telles que des assertions, des rapports, l&rsquo;ex\u00e9cution de tests en parall\u00e8le, etc.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 2. Quels sont les avantages de TestNG ?<\/h2>\n\n<p>R : Les avantages de TestNG sont les suivants :<\/p>\n\n<ol class=\"wp-block-list\">\n<li>TestNG fournit diverses assertions qui permettent de v\u00e9rifier les r\u00e9sultats attendus et r\u00e9els.<\/li>\n\n\n\n<li>Permet l&rsquo;ex\u00e9cution en parall\u00e8le des m\u00e9thodes d&rsquo;essai.<\/li>\n\n\n\n<li>Dans TestNG, nous pouvons d\u00e9finir la d\u00e9pendance d&rsquo;une m\u00e9thode de test par rapport aux autres.<\/li>\n\n\n\n<li>Nous pouvons attribuer une priorit\u00e9 aux m\u00e9thodes de test dans Selenium.<\/li>\n\n\n\n<li>Permet de regrouper les m\u00e9thodes d&rsquo;essai en groupes d&rsquo;essai.<\/li>\n\n\n\n<li>Permet des tests bas\u00e9s sur les donn\u00e9es en utilisant l&rsquo;annotation @DataProvider.<\/li>\n\n\n\n<li>Il dispose d&rsquo;un support de reporting inh\u00e9rent.<\/li>\n\n\n\n<li>Il permet de param\u00e9trer les cas de test \u00e0 l&rsquo;aide de l&rsquo;annotation @Parameters.<\/li>\n<\/ol>\n\n<h2 class=\"wp-block-heading\">Question 3. En quoi TestNG est-il diff\u00e9rent de Selenium WebDriver ?<\/h2>\n\n<p>R : Selenium est un outil d&rsquo;automatisation que nous pouvons utiliser pour automatiser les applications web. Afin d&rsquo;ajouter des capacit\u00e9s de test aux suites d&rsquo;automatisation des tests, Selenium est interfac\u00e9 avec TestNG. En utilisant TestNG, nous pouvons avoir diff\u00e9rentes fonctionnalit\u00e9s dans notre suite d&rsquo;automatisation telles que diff\u00e9rents types d&rsquo;assertions, le reporting, l&rsquo;ex\u00e9cution parall\u00e8le, la param\u00e9trisation, etc.<\/p>\n\n<p>En bref, pour effectuer des tests d&rsquo;automatisation, Selenium aide \u00e0 l'\u00a0\u00bbautomatisation\u00a0\u00bb et TestNG aide aux capacit\u00e9s de \u00ab\u00a0test\u00a0\u00bb.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 4. \u00c0 quoi sert le fichier testng.xml ?<\/h2>\n\n<p>R : Le fichier testng.xml est utilis\u00e9 pour configurer l&rsquo;ensemble de la suite de tests. Dans le fichier testng.xml, nous pouvons cr\u00e9er une suite de tests, cr\u00e9er des groupes de tests, marquer des tests pour une ex\u00e9cution parall\u00e8le, ajouter des auditeurs et passer des param\u00e8tres aux scripts de test. Nous pouvons \u00e9galement utiliser ce fichier testng.xml pour ex\u00e9cuter la suite de tests \u00e0 partir de la ligne de commande\/terminal ou de Jenkins.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 5. Comment pouvons-nous regrouper les cas de test en tant que cas de test distincts pour la suite de s\u00e9curit\u00e9, la suite de r\u00e9gression, etc.<\/h2>\n\n<p>R : En utilisant l&rsquo;attribut groups dans TestNG, nous pouvons assigner des m\u00e9thodes de test \u00e0 diff\u00e9rents groupes.<\/p>\n\n<pre class=\"wp-block-code\"><code>\/\/Testovacia met\u00f3da patriaca len do sanity suite\n\n@Test(groups = {\"sanitySuite\"})\n\npublic void testMethod1() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}\n\n\/\/Testovacia met\u00f3da patriaca do sady sanity aj regresnej sady\n\n@Test(groups = {\"sanitySuite\", \"regressionSuite\"})\n\npublic void testMethod2() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Questions 6. Comment exclure une m\u00e9thode de test de l&rsquo;ex\u00e9cution via le fichier testng.xml ?<\/h2>\n\n<p>R : En utilisant la balise exclude dans le fichier testng.xml, nous pouvons exclure une m\u00e9thode de test particuli\u00e8re de l&rsquo;ex\u00e9cution.<\/p>\n\n<pre class=\"wp-block-code\"><code>&lt;suite name=\"Test Suite\" verbose=\"1\"&gt;\n\n&nbsp;&nbsp;&nbsp;&lt;test name=\"TestName\"&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class name=\"TestClassName\"&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;methods&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude name=\"testMethodToBeExcluded\"\/&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/methods&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/class&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/classes&gt;\n\n&nbsp;&nbsp;&nbsp;&lt;\/test&gt;\n\n&lt;\/suite&gt;<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Questions 7. Quelles sont les annotations TestNG couramment utilis\u00e9es ?<\/h2>\n\n<p>R\u00e9ponse : Les annotations TestNG couramment utilis\u00e9es sont les suivantes :<\/p>\n\n<ul class=\"wp-block-list\">\n<li>@Test &#8211; l&rsquo;annotation @Test identifie la m\u00e9thode comme une m\u00e9thode de test.<\/li>\n\n\n\n<li>@BeforeSuite &#8211; La m\u00e9thode d&rsquo;annotation n&rsquo;est ex\u00e9cut\u00e9e qu&rsquo;une seule fois avant l&rsquo;ex\u00e9cution de tous les tests de cette suite.<\/li>\n\n\n\n<li>@AfterSuite &#8211; La m\u00e9thode annot\u00e9e ne sera ex\u00e9cut\u00e9e qu&rsquo;une seule fois apr\u00e8s l&rsquo;ex\u00e9cution de tous les tests de cette suite.<\/li>\n\n\n\n<li>@BeforeClass &#8211; La m\u00e9thode annot\u00e9e n&rsquo;est ex\u00e9cut\u00e9e qu&rsquo;une seule fois avant d&rsquo;appeler la premi\u00e8re m\u00e9thode de test de la classe actuelle.<\/li>\n\n\n\n<li>@AfterClass &#8211; La m\u00e9thode annot\u00e9e n&rsquo;est ex\u00e9cut\u00e9e qu&rsquo;une seule fois apr\u00e8s l&rsquo;ex\u00e9cution de toutes les m\u00e9thodes de test de la classe actuelle.<\/li>\n\n\n\n<li><test>@BeforeTest &#8211; La m\u00e9thode annot\u00e9e est ex\u00e9cut\u00e9e avant toute m\u00e9thode de test appartenant aux classes contenues dans la balise.<\/test><\/li>\n\n\n\n<li><test>@AfterTest &#8211; La m\u00e9thode annot\u00e9e est ex\u00e9cut\u00e9e apr\u00e8s l&rsquo;ex\u00e9cution de toutes les m\u00e9thodes de test appartenant aux classes contenues dans la balise.<\/test><\/li>\n\n\n\n<li>@BeforeMethod &#8211; La m\u00e9thode annot\u00e9e est ex\u00e9cut\u00e9e avant chaque m\u00e9thode de test annot\u00e9e avec @Test.<\/li>\n\n\n\n<li>@AfterMethod &#8211; La m\u00e9thode annot\u00e9e est ex\u00e9cut\u00e9e apr\u00e8s chaque m\u00e9thode de test annot\u00e9e avec @Test.<\/li>\n\n\n\n<li>@DataProvider &#8211; L&rsquo;annotation @DataProvider est utilis\u00e9e pour transmettre des donn\u00e9es de test \u00e0 la m\u00e9thode de test. La m\u00e9thode de test est d\u00e9clench\u00e9e par le nombre de lignes de donn\u00e9es transmises par la m\u00e9thode du fournisseur de donn\u00e9es.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Question 8. Quel est l&rsquo;ordre d&rsquo;ex\u00e9cution de la m\u00e9thode de test en fonction des diff\u00e9rentes annotations ?<\/h2>\n\n<p>R\u00e9ponse : Les m\u00e9thodes de test dans TestNG sont ex\u00e9cut\u00e9es dans l&rsquo;ordre Suite-&gt;Test-&gt;Classe-&gt;M\u00e9thode combin\u00e9 \u00e0 l&rsquo;ordre Avant les annotations-&gt;Test les annotations-&gt;Apr\u00e8s les annotations. L&rsquo;ordre d&rsquo;ex\u00e9cution est donc le suivant :<\/p>\n\n<p>@BeforeSuite<\/p>\n\n<p>@BeforeTest<\/p>\n\n<p>@BeforeClass<\/p>\n\n<p>@BeforeMethod<\/p>\n\n<p>@Test<\/p>\n\n<p>@AfterMethod<\/p>\n\n<p>@AfterClass<\/p>\n\n<p>@AfterTest<\/p>\n\n<p>@AfterSuite<\/p>\n\n<h2 class=\"wp-block-heading\">Question 9. Quelles sont les assertions courantes fournies par TestNG ?<\/h2>\n\n<p>R\u00e9ponse Voici quelques-unes des affirmations courantes de TestNG :<\/p>\n\n<ol class=\"wp-block-list\">\n<li>assertEquals(String actual, String expected, String message) et d&rsquo;autres types de donn\u00e9es surcharg\u00e9es dans le param\u00e8tre<\/li>\n\n\n\n<li>assertNotEquals(double data1, double data2, String message) et d&rsquo;autres types de donn\u00e9es surcharg\u00e9s dans le param\u00e8tre<\/li>\n\n\n\n<li>assertFalse(boolean condition, String message)<\/li>\n\n\n\n<li>assertTrue(boolean condition, String message)<\/li>\n\n\n\n<li>assertNotNull(Object object)<\/li>\n\n\n\n<li>fail(boolean condition, String message)<\/li>\n\n\n\n<li>true(String message)<\/li>\n<\/ol>\n\n<h2 class=\"wp-block-heading\">Question 10. Comment d\u00e9sactiver ou emp\u00eacher l&rsquo;ex\u00e9cution d&rsquo;un sc\u00e9nario de test ?<\/h2>\n\n<p>R\u00e9ponse : En d\u00e9finissant l&rsquo;attribut \u00ab\u00a0enabled\u00a0\u00bb sur false, nous pouvons emp\u00eacher l&rsquo;ex\u00e9cution de la m\u00e9thode de test.<\/p>\n\n<pre class=\"wp-block-code\"><code>\/\/V pr\u00edpade testovacej met\u00f3dy\n\n@Test(enabled = false)\n\npublic void testMethod1() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}\n\n\/\/V pr\u00edpade testovacej met\u00f3dy patriacej do skupiny\n\n@Test(groups = {\"NegativeTests\"}, enabled = false)\n\npublic void testMethod2() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Question 11. Comment utiliser TestNG pour rendre une m\u00e9thode de test d\u00e9pendante des autres ?<\/h2>\n\n<p>R : En utilisant le param\u00e8tre dependsOnMethods dans l&rsquo;annotation @Test de TestNG, nous pouvons faire en sorte qu&rsquo;une m\u00e9thode de test ne soit ex\u00e9cut\u00e9e que lorsque la m\u00e9thode de test d\u00e9pendante a \u00e9t\u00e9 ex\u00e9cut\u00e9e avec succ\u00e8s.<\/p>\n\n<p><strong>  @Test(dependsOnMethods = { \u00ab\u00a0preTests\u00a0\u00bb })<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\">Question 12. Comment d\u00e9finir la priorit\u00e9 des cas de test dans TestNG ?<\/h2>\n\n<p>R : Nous pouvons d\u00e9finir la priorit\u00e9 des cas de test en utilisant le param\u00e8tre \u00ab\u00a0priority\u00a0\u00bb dans l&rsquo;annotation @Test. Les essais dont les valeurs de priorit\u00e9 sont les plus faibles sont effectu\u00e9s en premier. Exemple :<\/p>\n\n<p><strong>@Test(priority=1)<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\">Question 13. Quelle est la priorit\u00e9 par d\u00e9faut des cas de test dans TestNG ?<\/h2>\n\n<p>R : La priorit\u00e9 de test par d\u00e9faut, si elle n&rsquo;est pas sp\u00e9cifi\u00e9e, est une valeur enti\u00e8re de 0. Ainsi, si nous avons un cas de test avec une priorit\u00e9 de 1 et un autre sans priorit\u00e9, le test sans aucune valeur de priorit\u00e9 sera ex\u00e9cut\u00e9 en premier (puisque la valeur par d\u00e9faut sera 0 et que les tests avec une priorit\u00e9 inf\u00e9rieure seront ex\u00e9cut\u00e9s en premier).<\/p>\n\n<h2 class=\"wp-block-heading\">Question 14. Comment ex\u00e9cuter une m\u00e9thode de test plusieurs fois dans un cycle (sans utiliser de fournisseur de donn\u00e9es) ?<\/h2>\n\n<p>R : En utilisant le param\u00e8tre invocationCount et en lui attribuant une valeur enti\u00e8re, la m\u00e9thode de test sera ex\u00e9cut\u00e9e n fois par cycle.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test(invocationCount = 10)\n\npublic void invocationCountTest(){\n\n&nbsp;&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Questions 15. Qu&rsquo;est-ce que le threadPoolSize ? Comment l&rsquo;utiliser ?<\/h2>\n\n<p>R\u00e9ponse : L&rsquo;attribut threadPoolSize sp\u00e9cifie le nombre de threads \u00e0 affecter \u00e0 la m\u00e9thode de test. Il est utilis\u00e9 conjointement avec l&rsquo;attribut invocationCount. Le nombre de threads est divis\u00e9 par le nombre d&rsquo;it\u00e9rations de la m\u00e9thode de test sp\u00e9cifi\u00e9 dans l&rsquo;attribut invocationCount.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test(threadPoolSize = 5, invocationCount = 10)\n\npublic void threadPoolTest(){\n\n&nbsp;&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Question 16. Quelle est la diff\u00e9rence entre les assertions douces et les assertions dures dans TestNG ?<\/h2>\n\n<p>R\u00e9ponse : C&rsquo;est l&rsquo;une des questions les plus fr\u00e9quemment pos\u00e9es lors d&rsquo;un entretien avec TestNG. Les assertions douces (SoftAssert) nous permettent d&rsquo;avoir plusieurs assertions dans une m\u00e9thode de test, m\u00eame si une assertion \u00e9choue, la m\u00e9thode de test continue d&rsquo;ex\u00e9cuter le reste du test. Le r\u00e9sultat de toutes les assertions peut \u00eatre r\u00e9sum\u00e9 \u00e0 la fin \u00e0 l&rsquo;aide de la m\u00e9thode softAssert.assertAll().<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test\n\npublic void softAssertionTest(){\n\n&nbsp;&nbsp;&nbsp;SoftAssert softAssert= new SoftAssert();\n\n&nbsp;&nbsp;&nbsp;\/\/Assertion failing\n\n&nbsp;&nbsp;&nbsp;softAssert.fail();\n\n&nbsp;&nbsp;&nbsp;System.out.println(\"Failing\");\n\n&nbsp;&nbsp;&nbsp;\/\/Assertion passing\n\n&nbsp;&nbsp;&nbsp;softAssert.assertEquals(1, 1);\n\n&nbsp;&nbsp;&nbsp;System.out.println(\"Passing\");\n\n&nbsp;&nbsp;&nbsp;\/\/Collates test results and marks them pass or fail\n\n&nbsp;&nbsp;&nbsp;softAssert.assertAll();\n\n}<\/code><\/pre>\n\n<p>Ici, m\u00eame si la premi\u00e8re assertion \u00e9choue, le test continuera son ex\u00e9cution et imprimera un message sous la deuxi\u00e8me assertion.<\/p>\n\n<p>Les assertions dures, quant \u00e0 elles, sont les assertions habituelles fournies par TestNG. Dans le cas d&rsquo;une assertion dure, en cas d&rsquo;\u00e9chec, l&rsquo;ex\u00e9cution de l&rsquo;essai est interrompue, ce qui emp\u00eache toute autre \u00e9tape de la m\u00e9thode d&rsquo;essai.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 17. Comment faire \u00e9chouer un testNG s&rsquo;il n&rsquo;est pas effectu\u00e9 dans le temps imparti ?<\/h2>\n\n<p>R\u00e9ponse : Nous pouvons utiliser l&rsquo;attribut timeOut de l&rsquo;annotation @Test. La valeur attribu\u00e9e \u00e0 cet attribut timeOut servira de limite sup\u00e9rieure. Si le test n&rsquo;est pas ex\u00e9cut\u00e9 dans ce d\u00e9lai, il \u00e9chouera, \u00e0 l&rsquo;exception d&rsquo;un d\u00e9lai d&rsquo;attente.<\/p>\n\n<pre class=\"wp-block-code\"><code>@Test(timeOut = 1000)\n\npublic void timeOutTest() throws InterruptedException {\n\n&nbsp;&nbsp;&nbsp;\/\/Sleep for 2sec so that test will fail\n\n&nbsp;&nbsp;&nbsp;Thread.sleep(2000);\n\n&nbsp;&nbsp;&nbsp;System.out.println(\"Will throw Timeout exception!\");\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Question 18. Comment pouvons-nous ignorer un sc\u00e9nario de test de mani\u00e8re conditionnelle ?<\/h2>\n\n<p>R : Nous pouvons ignorer un sc\u00e9nario de test de mani\u00e8re conditionnelle \u00e0 l&rsquo;aide de la fonction SkipException. Lorsqu&rsquo;une exception de type skipException est d\u00e9clench\u00e9e, la m\u00e9thode de test est marqu\u00e9e comme \u00e9tant ignor\u00e9e dans le rapport d&rsquo;ex\u00e9cution du test et aucune instruction n&rsquo;est ex\u00e9cut\u00e9e apr\u00e8s le d\u00e9clenchement de l&rsquo;exception.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test\n\npublic void testMethod(){\n\n&nbsp;&nbsp;if(conditionToCheckForSkippingTest)\n\n&nbsp;throw new SkipException(\"Skipping the test\");\n\n&nbsp;&nbsp;\/\/test logic\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Question 19. Comment s&rsquo;assurer qu&rsquo;une m\u00e9thode de test sera ex\u00e9cut\u00e9e m\u00eame si les m\u00e9thodes de test ou les groupes dont elle d\u00e9pend \u00e9chouent ou sont ignor\u00e9s ?<\/h2>\n\n<p>R : En utilisant l&rsquo;attribut \u00ab\u00a0alwaysRun\u00a0\u00bb de l&rsquo;annotation @Test, nous pouvons nous assurer que la m\u00e9thode de test est ex\u00e9cut\u00e9e m\u00eame si les m\u00e9thodes de test ou les groupes dont elle d\u00e9pend \u00e9chouent ou sont ignor\u00e9s.<\/p>\n\n<pre class=\"wp-block-code\"><code>@Test\n\npublic void parentTest() {&nbsp;\n\n&nbsp;&nbsp;Assert.fail(\"Failed test\");\n\n}\n\n@Test(dependsOnMethods={\"parentTest\"}, alwaysRun=true)&nbsp;\n\npublic void dependentTest() {&nbsp;\n\n&nbsp;&nbsp;System.out.println(\"Running even if parent test failed\");\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<p>Ici, m\u00eame si parentTest a \u00e9chou\u00e9, dependentTest ne sera pas ignor\u00e9, mais sera ex\u00e9cut\u00e9 en raison de \u00ab\u00a0alwaysRun=true\u00a0\u00bb. Si nous supprimons l&rsquo;attribut \u00ab\u00a0alwaysRun=true\u00a0\u00bb de @Test, le rapport indiquera un \u00e9chec et un test ignor\u00e9 sans tenter d&rsquo;ex\u00e9cuter la m\u00e9thode dependentTest.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 20. Comment passer un param\u00e8tre de test \u00e0 un script en utilisant TestNG ?<\/h2>\n\n<p>R : En utilisant l&rsquo;annotation @Parameter et la balise \u00ab\u00a0parameter\u00a0\u00bb dans testng.xml, nous pouvons passer des param\u00e8tres aux scripts de test.<\/p>\n\n<p>Exemple de testng.xml :<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>&lt;suite name=\"sampleTestSuite\"&gt;\n\n&nbsp;&nbsp;&nbsp;&lt;test name=\"sampleTest\"&gt;&nbsp;&nbsp;&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;parameter name=\"sampleParamName\" value=\"sampleParamValue\"\/&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class name=\"TestFile\" \/&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/classes&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n\n&nbsp;&nbsp;&nbsp;&lt;\/test&gt;\n\n&lt;\/suite&gt;\n\nUk\u00e1\u017eka testovacieho skriptu \u2013\n\npublic class TestFile {\n\n&nbsp;&nbsp;&nbsp;@Test\n\n&nbsp;&nbsp;&nbsp;@Parameters(\"sampleParamName\")\n\n&nbsp;&nbsp;&nbsp;public void parameterTest(String paramValue) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(\"Value of sampleParamName is - \" + sampleParamName);\n\n&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Question 21. Comment cr\u00e9er un cadre de travail bas\u00e9 sur les donn\u00e9es \u00e0 l&rsquo;aide de TestNG ?<\/h2>\n\n<p>R : En utilisant @DataProvider, nous pouvons cr\u00e9er un cadre ax\u00e9 sur les donn\u00e9es dans lequel les donn\u00e9es sont transmises \u00e0 la m\u00e9thode de test appropri\u00e9e et plusieurs it\u00e9rations du test sont ex\u00e9cut\u00e9es pour diff\u00e9rentes valeurs des donn\u00e9es de test transmises par la m\u00e9thode @DataProvider. La m\u00e9thode annot\u00e9e par @DataProvider renvoie un tableau 2D de l&rsquo;objet.<\/p>\n\n<pre class=\"wp-block-code\"><code>\/\/Data provider returning 2D array of 3*2 matrix\n\n&nbsp;@DataProvider(name = \"dataProvider1\")\n\n&nbsp;&nbsp;&nbsp;public Object&#091;]&#091;] dataProviderMethod1() {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Object&#091;]&#091;] {{\"kuldeep\",\"rana\"}, {\"k1\",\"r1\"},{\"k2\",\"r2\"}};\n\n&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;\/\/This method is bound to the above data provider returning 2D array of 3*2 matrix\n\n&nbsp;&nbsp;&nbsp;\/\/The test case will run 3 times with different set of values\n\n&nbsp;&nbsp;&nbsp;@Test(dataProvider = \"dataProvider1\")\n\n&nbsp;&nbsp;&nbsp;public void sampleTest(String s1, String s2) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s1 + \" \" + s2);\n\n&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Question 22. Quelle est l&rsquo;utilit\u00e9 de l&rsquo;annotation @Listener dans TestNG ?<\/h2>\n\n<p>R\u00e9ponse : TestNG nous fournit diff\u00e9rents types d&rsquo;\u00e9couteurs qui nous permettent d&rsquo;effectuer une action lorsqu&rsquo;un \u00e9v\u00e9nement est d\u00e9clench\u00e9. En g\u00e9n\u00e9ral, les auditeurs TestNG sont utilis\u00e9s pour configurer les rapports et la journalisation. L&rsquo;interface ITestListener est l&rsquo;un des listeners les plus utilis\u00e9s dans TestNG. Il poss\u00e8de des m\u00e9thodes telles que onTestSuccess, onTestFailure, onTestSkipped, etc. Nous devons mettre en \u0153uvre cette interface en cr\u00e9ant notre propre classe d&rsquo;auditeurs. Ensuite, en utilisant l&rsquo;annotation @Listener, nous pouvons sp\u00e9cifier que notre classe d&rsquo;\u00e9coute personnalis\u00e9e doit \u00eatre utilis\u00e9e pour une classe de test particuli\u00e8re.<\/p>\n\n<pre class=\"wp-block-code\"><code>@Listeners(PackageName.CustomizedListenerClassName.class)\n\npublic class TestClass {&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;WebDriver driver= new FirefoxDriver();@Test&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;public void testMethod(){\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/testovacia logika\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Question 23. Quelle est l&rsquo;utilit\u00e9 de l&rsquo;annotation @Factory dans TestNG ?<\/h2>\n\n<p>R\u00e9ponse : L&rsquo;annotation @Factory contribue \u00e0 l&rsquo;ex\u00e9cution dynamique des cas de test. En utilisant l&rsquo;annotation @Factory, nous pouvons passer des param\u00e8tres \u00e0 l&rsquo;ensemble de la classe de test au moment de l&rsquo;ex\u00e9cution. Les param\u00e8tres transmis peuvent \u00eatre utilis\u00e9s par une ou plusieurs m\u00e9thodes de test de cette classe.<\/p>\n\n<p>Par exemple, il existe deux classes : TestClass et TestFactory. Gr\u00e2ce \u00e0 l&rsquo;annotation @Factory, les m\u00e9thodes de test de la classe TestClass sont ex\u00e9cut\u00e9es deux fois avec les donn\u00e9es \u00ab\u00a0k1\u00a0\u00bb et \u00ab\u00a0k2\u00a0\u00bb<\/p>\n\n<pre class=\"wp-block-code\"><code>public class TestClass{\n\n&nbsp;&nbsp;&nbsp;&nbsp;private String str;\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/Constructor\n\n&nbsp;&nbsp;&nbsp;&nbsp;public TestClass(String str) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.str = str;\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;@Test\n\n&nbsp;&nbsp;&nbsp;&nbsp;public void TestMethod() {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}\n\npublic class TestFactory{\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/The test methods in class TestClass will run twice with data \"k1\" and \"k2\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;@Factory\n\n&nbsp;&nbsp;&nbsp;&nbsp;public Object&#091;] factoryMethod() {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Object&#091;] { new TestClass(\"K1\"), new TestClass(\"k2\") };\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Question 24. Quelle est la diff\u00e9rence entre les annotations @Factory et @DataProvider ?<\/h2>\n\n<p>R\u00e9ponse : La m\u00e9thode @Factory cr\u00e9e une instance d&rsquo;une classe de test et ex\u00e9cute toutes les m\u00e9thodes de test de cette classe avec un ensemble de donn\u00e9es diff\u00e9rent.<\/p>\n\n<p>Alors que @DataProvider se lie \u00e0 des m\u00e9thodes de test individuelles et ex\u00e9cute des m\u00e9thodes sp\u00e9cifiques plusieurs fois.<\/p>\n\n<h2 class=\"wp-block-heading\">Question 25. Comment pouvons-nous utiliser TestNG pour ex\u00e9cuter des cas de test en parall\u00e8le ?<\/h2>\n\n<p>R\u00e9ponse : Pour ex\u00e9cuter des tests en parall\u00e8le, il suffit d&rsquo;ajouter ces deux paires cl\u00e9-valeur \u00e0 la balise suite dans le fichier testng.xml-.<\/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<p><strong>&lt;suite name=\u00a0\u00bbITtester\u00a0\u00bb parallel=\u00a0\u00bbmethods\u00a0\u00bb thread-count=\u00a0\u00bb5&Prime;&gt;<\/strong><\/p>\n\n<p>Ceci conclut notre liste compl\u00e8te de questions d&rsquo;entretien avec TestNG. Si vous souhaitez en savoir plus sur TestNG, vous pouvez \u00e9galement consulter notre tutoriel complet sur TestNG.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans ce guide, nous avons rassembl\u00e9 les questions les plus fr\u00e9quemment pos\u00e9es et les r\u00e9ponses aux entretiens, tant pour les nouveaux venus que pour les testeurs plus exp\u00e9riment\u00e9s.<\/p>\n","protected":false},"author":8,"featured_media":2650,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[49],"tags":[],"class_list":["post-2649","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-questions-dentretien"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2649","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=2649"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2649\/revisions"}],"predecessor-version":[{"id":2651,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2649\/revisions\/2651"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media\/2650"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media?parent=2649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/categories?post=2649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/tags?post=2649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}