Introduction au data-driven testing avec Agilitest

4 juillet 2019

L’automatisation des tests logiciels est une pratique indispensable à la mise en place d’un processus de développement Agile. En particulier, les tests de non-régression doivent se faire de manière autonome pour dégager du temps aux équipes de validation pour automatiser de nouveaux tests des dernières fonctionnalités, ou encore effectuer du test exploratoire.

Et puisqu’il est question d’automatiser, abordons un point fondamental, celui de la variabilisation des tests grâce à un fichier de données. Bienvenue dans ce qu’on appelle le data-driven testing.

Qu’est-ce que le data-driven testing ?

Le data-driven testing (ou DDT pour les intimes) est une méthodologie de test logiciel qui utilise un tableau de conditions pour alimenter les données d’entrée du test, ainsi que ses données de sortie attendues, et ses variables d’environnement et de contrôle (source Wikipedia). Les variables du test ne sont donc pas hard-codées et il devient facile de faire varier le test.

La traduction française du DDT est : test piloté par les données.

La manière la plus simpliste de mettre en place le DDT consiste à créer un tableau au format CSV et d’affecter une ou plusieurs colonnes pour les paramètres d’entrées et les données de sortie. Chaque ligne ainsi constituée représentera un jeu de données pour une itération du test. C’est précisément ce que nous allons faire.

Faire du DDT avec Agilitest

Créer un projet avec un script ATS principal

Pour commencer, vous devez créer un nouveau projet ou ouvrir un projet existant.

Nous allons créer un script ATS principal qui servira à raccorder le jeu de données DDT aux actions du test. Ce script ATS contiendra une ligne Sous-script qui se configure avec deux données de base : le nom du script à ouvrir et le chemin de fichier CSV.

Créer un fichier de données CSV

Il faut donc créer un fichier CSV avec le bouton Nouveau composant. Les noms de ces fichiers doivent correspondre aux noms appelés dans le script ATS principal. Pour cela il suffit de glisser-déposer le fichier CSV dans la boite Chemin du fichier CSV et le chemin sera relatif à la racine du projet comme par exemple : assets:///data/data.csv

Le fichier CSV se créer et s’édite dans Agilitest. Par la suite vous pourrez éditer ce fichier avec un éditeur texte classique pourvu que vous respectiez sa syntaxe (CSV encodé en UTF-8 avec séparateur de champ virgule, caractère d’encadrement double guillemets, et sauts de ligne CRLF). Le fichier peut également être généré par une routine extérieure.

Agilitest permet également d’utiliser un fichier CSV distant en saisissant une adresse URL à la place de assets:///data/data.csv. Le fichier CSV peut alors être généré dynamiquement par une petite application web, ou tout simplement rester statique à distance.

Les champs de votre fichiers CSV peuvent contenir des textes à saisir au clavier, du texte à reconnaitre sur l’application, ou encore des attributs à reconnaitre sur la page (classes ou id CSS, attributs desktop,etc). Enfin ils peuvent contenir des valeurs à comparer avec des champs de votre application.

Créer un script ATS secondaire

Pour créer le fichier ATS secondaire vous pouvez faire un clic droit sur le dossier subscripts et cliquer sur Nouveau script ATS.

Le fichier ATS secondaire contiendra toutes les actions souhaitées depuis l’ouverture du canal jusqu’à la fermeture du canal. C’est une bonne pratique de refermer le canal à la fin du script afin d’être en mesure de variabiliser les canaux (chrome, firefox, etc) si besoin.

Une autre méthode aboutissant à la création du script secondaire est de créer toutes les actions dans un même script, puis de sélectionner les actions ATS à isoler dans un script ATS secondaire, et de les glisser-déposer dans le dossier subscripts. Cela permet de créer des sous-scripts de manière naturelle, et donc d’accéder à la possibilité de variabiliser simplement les actions.

Exploiter les données du test

Les données de vos fichiers CSV pourront être de différentes natures

  • texte à saisir au clavier dans une cible donnée
  • texte à reconnaitre en <balise>contenu d’une balise HTML</balise>
  • valeur d’un attribut HTML de type class, id, ou autre
  • texte à comparer avec une variable Agilitest capturée avec l’action Propriété
  • texte à comparer avec l’action Vérifier > Valeurs.

Quels types de tests vais-je pouvoir réaliser ?

Le data-driven testing avec Agilitest consiste donc à exécuter un sous-script alimenté par un fichier de données CSV où chaque colonne est un paramètre et chaque ligne correspond à une itération de test.

De nombreuses possibilités s’ouvrent à vous, toutes plus intéressantes les unes que les autres. En voici quelques exemples :

  • Réaliser des tests sur le contrôle d’accès d’une application en fonction des rôles des utilisateurs. Dans ce cas vous pourrez gérer un fichier CSV incluant les données de login et les privilèges à contrôler. Pour le réaliser simplement, un script maitre s’assurera d’appeler plusieurs sous-scripts successifs : login, puis un sous-script par type de contrôle, et logout, avant de passer à l’utilisateur suivant.
  • Réaliser des tests sur les transitions d’un objet soumis à un workflow ou un graphe d’état : là aussi, il est très simple de contrôler quelles sont les transitions possibles pour passer d’un état à un autre. Cela nécessite évidemment de pouvoir générer successivement des objets ayant un état donné, mais c’est assez simple avec un sous-script.
  • Donner de la profondeur à vos tests fonctionnels : sur la base d’un test fonctionnel précédemment réalisé, vous pouvez le transformer un sous-script et le variabiliser afin de l’appeler avec un fichier de données CSV. Cette procédure vous permettra ensuite de vérifier régulièrement que vous n’avez pas de bug liés aux données : ce sont généralement ceux qui sont remontés par vos clients, quand bien même vous auriez réalisé des tests fonctionnels très complets de votre application.

Il s’agit de trois exemples parmi d’autres. Agilitest vous permet d’aller très loin dans votre démarche de tests pour couvrir un maximum de cas de figures.

Voir un exemple concret

Voici ci-dessous une courte vidéo de moins de 2 minutes qui décrit la procédure.

Présentation courte 2 minutes

Pour aller plus loin et avec plus de détails, nous avons réalisé un webinaire de 45 minutes qui aborde le sujet, avec la réalisation pas à pas d’un scénario de test utilisant un fichier de données CSV.

Si vous avez des questions sur la mise en place de data-driven testing avec Agilitest, vous pouvez nous contacter et nous y répondrons.