Fournisseurs de données TestNG : présentation complète et démonstration

Dernière mise à jour : 06 septembre 2020 — Continuous Testing Mode Expert

 

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 :

  1. Java
  2. Sélénium
  3. Eclipse IDE
  4. 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.

fournisseurs de données de testng

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.

fournisseurs de tests Eclipse

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

fournisseurs de données de test Eclipse

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.

fournisseurs de données de test d'espace de travail

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

fournisseurs de données de test Eclipse

É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.

fournisseur de données testng zip

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.

logiciels de test des fournisseurs de données disponibles

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.

fournisseurs de données de test de l'assistant

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.

nouveau projet

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

pot 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.

ajouter une bibliothèque

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.

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.

fournisseurs de données de testng

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

variables de testng

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:

résultats

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 :

rapport d'essai

Voici les détails du test :

de démarrage rapide

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.

Guy Arieli - CTO

Vous aimerez aussi