Publié: septembre 6, 2020
Fournisseurs de données TestNG : présentation complète et démonstration
Cedric Beust a créé TestNG, un framework d'automatisation de tests très populaire, en 2003, en utilisant le langage de programmation Java. Similaire à JUnit et NUnit, TestNG corrige certaines de leurs lacunes, telles qu'un contrôle de configuration insuffisant, des modèles de programmation statiques et l'absence de tests de dépendances. Il est conçu pour couvrir un large éventail de projets de test, incluant les tests fonctionnels, unitaires et d'intégration système. TestNG offre des fonctionnalités puissantes qui permettent aux testeurs d'effectuer des tâches de test complexes tout en les rendant faciles à utiliser. Si TestNG est surtout connu pour ses annotations, les DataProviders constituent une autre fonctionnalité pratique qui simplifie et optimise les tests pilotés par les données. Grâce à la paramétrisation des données, aux écouteurs de données, aux DataProviders, aux rapports HTML, aux journaux, au regroupement et à la priorisation des cas de test, ainsi qu'à ses capacités de tests parallèles, TestNG est rapidement devenu un outil incontournable pour de nombreux testeurs.
Que sont les fournisseurs de données TestNG ?
L'un des aspects importants de TestNG est le test piloté par les données. La fonctionnalité DataProviders, qui fait partie intégrante de ce test, permet de fournir différentes valeurs à un cas de test lors d'une même exécution. Autrement dit, vous pouvez exécuter un cas de test une seule fois, mais tester une méthode avec différentes valeurs de données. Par exemple, vous pouvez tester une page d'inscription avec différentes entrées, mais le test ne sera exécuté qu'une seule fois. La fonctionnalité DataProviders de TestNG transmet toutes ces valeurs au cas de test une à une, ce qui permet de tester différents ensembles de données en une seule exécution.
Le besoin de fournisseurs de données TestNG
Les paramètres TestNG offrent une fonctionnalité similaire permettant de fournir des valeurs aux fonctions via un fichier XML. Grâce aux paramètres, vous pouvez exécuter plusieurs fonctions avec un seul jeu de données ou une seule fonction avec plusieurs jeux de données. Cependant, l'inconvénient des paramètres est qu'un cas de test ne peut être exécuté qu'une seule fois avec une valeur donnée. Or, dans un projet de test standard, il est nécessaire d'exécuter des cas de test avec plusieurs valeurs. Dans ce cas, il faut exécuter le cas de test plusieurs fois avec différents jeux de données. Les fournisseurs de données TestNG résolvent ce problème en permettant d'exécuter le cas de test une seule fois, même avec différents jeux de données. Ils fournissent des valeurs de données sous forme de tableaux aux méthodes de test via des annotations.
Comment ça marche?
La fonctionnalité DataProviders de TestNG utilise la syntaxe suivante. Par exemple :
[java] @DataProvider (name = “ExperitestDataProvider”) public Object[][] ExperitestDPMethod() { return new Object [][] { values} } [/java]
Si vous examinez la syntaxe, vous constaterez l'utilisation des annotations TestNG. Un seul paramètre est requis : le nom. Ce paramètre accepte une chaîne de caractères représentant le nom du fournisseur de données. Chaque fournisseur possède sa propre méthode, par exemple : `ExperitestDPMethod()`. Par défaut, TestNG utilise le nom de cette méthode comme nom du fournisseur de données si celui-ci n'est pas spécifié.
Lorsque vous exécutez le cas de test, la méthode du fournisseur de données est appelée par ce dernier, qui renvoie une liste d'objets 2D permettant d'effectuer des tests basés sur les données pour chaque ensemble de données.
Installation
Voici les éléments suivantswing tools requis pour utiliser la fonctionnalité TestNg DataProviders :
- Java
- Sélénium
- Eclipse IDE
- TestNG
Étape 1: Installer Java
Pour exécuter TestNG, vous avez besoin du kit de développement Java (JDK) 8.0 ou supérieur. Suivez ce lien pour télécharger et installer Java sur votre ordinateur.
https://www.oracle.com/in/java/technologies/javase-downloads.html
Java SE 14.0.2 est la dernière version. Téléchargez donc le fichier exécutable et double-cliquez dessus pour installer le logiciel.
Étape 2 : Configurer les variables d’environnement
Après avoir installé Java, vous devez spécifier le chemin d'accès à Java dans le système. Pour ce faire : ouvrez Système -> Propriétés système avancées -> Avancé -> Variables d'environnement.

Pour « variables utilisateur pour l'utilisateur », saisissez :
- C:\Program Files\Java\jdk-14.0.2
Pour le chemin des variables système, saisissez le chemin du dossier bin :
- C:Program Files Javajdk-14.0.2bin
Java est désormais prêt à l'emploi.
Étape 3 : Installer Eclipse
Pour créer et modifier des scripts Java, vous avez besoin d'un environnement de développement intégré (IDE) Java. Eclipse et IntelliJ sont deux IDE populaires pour Java. Pour installer Eclipse, suivez ce lien :
https://www.eclipse.org/downloads/
La dernière version est Eclipse IDE 2020-06. Une fois le logiciel téléchargé, double-cliquez dessus et installez-le.

Il existe plusieurs versions d'Eclipse. Choisissez donc « Eclipse pour développeurs Java » et poursuivez l'installation.

Une fois l'installation terminée, ouvrez l'IDE. À chaque ouverture, il vous sera demandé de choisir un dossier pour l'espace de travail. Vous pouvez conserver l'emplacement par défaut ou en choisir un autre.

Lorsque vous ouvrez Eclipse pour la première fois, un écran de bienvenue s'affiche. L'IDE est maintenant prêt à l'emploi.

Étape 4 : Installer Selenium
Selenium est un framework d'automatisation de tests open source populaire qui a connu un essor considérable ces derniers temps. Cliquez sur ce lien pour télécharger le logiciel Selenium :
https://www.selenium.dev/downloads/
Téléchargez le serveur Selenium autonome, fourni sous forme de fichier JAR. La dernière version stable est la 3.141.59. Aucune installation n'est requise : enregistrez-la simplement sur votre ordinateur.
Étape 5 : Installer TestNG
Dans les versions précédentes d'Eclipse, TestNG était disponible sur l'Eclipse Marketplace : il suffisait de cliquer sur « Installer » pour l'ajouter à Eclipse. Avec la dernière version, vous devez télécharger TestNG manuellement et l'ajouter comme bibliothèque. Suivez ce lien pour télécharger TestNG :
https://dl.bintray.com/testng-team/testng-eclipse-release/
Cliquez sur le lien ZIP, choisissez la dernière version et enregistrez les fichiers sur votre appareil.

Pour ajouter TestNG à Eclipse, ouvrez l'IDE et cliquez sur « Installer un nouveau logiciel ». Dans l'écran suivant, cliquez sur « Ajouter » et ajoutez manuellement les fichiers.
Vous pouvez également fournir directement le lien TestNG afin que l'outil télécharge automatiquement les fichiers.

Sélectionnez TestNG, cliquez sur Suivant, acceptez le contrat de licence et cliquez sur Terminer. Redémarrez Eclipse pour achever la configuration de TestNG.
Pour vérifier si TestNG est correctement installé, appuyez sur Ctrl+N et vérifiez si TestNG figure dans la liste.

TestNG est désormais prêt à l'emploi.
Premier test avec les fournisseurs de données TestNG
Maintenant que tous les outils sont installés, effectuons le premier test pour voir comment fonctionnent les fournisseurs de données TestNG.
Ouvrez l'IDE Eclipse et cliquez sur Nouveau -> Projet Java. Donnez un nom au projet et cliquez sur Suivant.

Sur l'écran suivant, cliquez sur Bibliothèque puis sur « Ajouter un fichier jar externe ».

Sélectionnez le fichier JAR du serveur autonome Selenium et cliquez sur OK. Selenium est ajouté à votre projet.
Cliquez maintenant sur « Ajouter une bibliothèque » et sélectionnez TestNG sur l'écran suivant pour ajouter TestNG à votre projet.

Selenium et TestNG sont ajoutés à votre projet, ainsi que l'environnement d'exécution Java.
Cliquez sur Nouveau -> Paquet pour créer un nouveau paquet.

Créez une nouvelle classe dans ce package. Par exemple : ExperitestDataProviders.java
Ajoutez maintenant ce code à la classe. Notez qu'il contient des fournisseurs de données TestNG.
[java] package ExperitestDataProviders; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class ExperitestTestNGDP { @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest1”}, {“Experitest2”}, {“Experitest3”}, {“Experitest4”}, {“Experitest5”}}; } @Test (dataProvider = “Experitest-DataProvider”) public void ExperiTest (String val) { System.out.println(“Paramètre passé : ” + val); } } [/java]
- Ici, nous avons défini un fournisseur de données nommé « Experitest-DataProvider » et lui avons attribué 5 valeurs (Experitest1, Experitest2, etc.).
- Lors du test (@Test), nous avons appelé le fournisseur de données.
- Nous avons écrit une méthode avec un paramètre de type chaîne de caractères et stocké la valeur dans 'val'.
- Le test prendra la valeur de la chaîne de caractères et l'affichera.
Lorsque vous exécutez ce test une première fois, il sera exécuté 5 fois et une valeur de chaîne sera affichée à chaque exécution. Ainsi, grâce à la fonctionnalité DataProviders, nous avons exécuté un seul test plusieurs fois.

Voici le résultat qui indique que 5 tests ont été exécutés et que 5 tests ont été réussis.

Démo DécouvrirTest Cloud
Voici une autre démonstration de test exécutée dans le cloud DécouvrirTest. Ce cas de test ouvre un navigateur web dans le cloud, puis le site web de Google. Il saisit ensuite « Experitest » dans le champ de recherche et lance une recherche sur le web pour ce mot-clé. Puis, il ouvre à nouveau le site de Google et recherche le mot-clé « DécouvrirTest ». Ici, nous n'avons écrit qu'un seul cas de test, mais nous avons défini un fournisseur de données TestNG appelé « Experitest-DataProvider » qui fournit deux valeurs au cas de test.
[java] @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“DécouvrirTest”}}; } [/java]
Ainsi, grâce à la fonctionnalité de fournisseur de données, vous exécutez ici deux fois le même cas de test.
Voici le code:
[java] package ExperitestDataProviders; import org.openqa.selenium.*; import org.openqa.selenium.remote.BrowserType; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.net.URL; public class DPexample { private String host = “https://cloud.seetest.io”; private static final String ACCESS_KEY = "Entrez votre clé d'accès ici"; private RemoteWebDriver driver; private URL url; private DesiredCapabilities dc = new DesiredCapabilities(); @DataProvider (name = "Experitest-DataProvider") public Object[][] ExperitestDPMethod(){ return new Object[][] {{"Experitest"}, {"DécouvrirTest"}}; } @BeforeMethod public void setUp() throws Exception { url = new URL("https://cloud.seetest.io/wd/hub"); dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME); dc.setCapability(CapabilityType.PLATFORM, Platform.ANY); dc.setCapability("accessKey", ACCESS_KEY); dc.setCapability("testName", "Démo de démarrage rapide du navigateur Chrome"); driver = new RemoteWebDriver(url, dc); @Test(dataProvider = "Experitest-DataProvider") public void ExperiTest(String val) { driver.get("https://www.google.com"); new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.name("q"))); WebElement searchBar = driver.findElement(By.name("q")); searchBar.click(); searchBar.sendKeys(val); searchBar.sendKeys(Keys.ENTER); } @AfterMethod public void tearDown() { System.out.println("URL du rapport : " + driver.getCapabilities().getCapability("reportUrl")); driver.quit(); } }
Voici le résultat:

DécouvrirTest est un outil complet d'automatisation des tests web et mobiles Il vous permet d'exécuter et de gérer facilement vos tests depuis un tableau de bord intuitif. Il offre également un outil de reporting performant qui simplifie l'analyse de vos tests.
Voici le rapport du test de démonstration :

Voici les détails du test :

Résumé
Les DataProviders sont une fonctionnalité pratique permettant aux testeurs de rédiger un cas de test unique et de l'exécuter plusieurs fois avec des valeurs de jeu de données prédéfinies. Ils permettent également d'exécuter plusieurs méthodes avec un seul jeu de données. Les DataProviders de TestNG simplifient et facilitent les tests pilotés par les données. La plateforme DécouvrirTest vous permet d'exploiter pleinement cette fonctionnalité pour exécuter facilement des cas de test avec différents jeux de données et générer des rapports personnalisés.
Vous aimerez aussi
Appium et les frameworks mobiles modernes : comprendre les défis de l’automatisation
L'automatisation mobile a considérablement mûri au cours de la dernière décennie, en grande partie…
Le mythe du verrouillage de l'automatisation : migrer Quantum sans réécriture
Lors de mes échanges avec de nombreuses équipes d'assurance qualité d'entreprise en tant que…
Cadre de conception d'applications axé sur l'automatisation et meilleures pratiques
Un concept promouvant la manière dont les développeurs peuvent concevoir leurs applications pour…