L'automatisation des tests logiciels est une pratique essentielle pour la mise en place d'un processus de développement Agile. En particulier, les tests de non-régression doivent être réalisés de manière automatisée afin de libérer du temps aux équipes de validation pour automatiser de nouveaux tests sur les dernières fonctionnalités, ou même pour réaliser des tests exploratoires.
Puisque nous parlons d'automatisation, abordons une question fondamentale : la variabilité des tests à l'aide d'un fichier de données. Bienvenue dans ce que l'on appelle data-driven testing dans le développement de logiciels.
Qu'est-ce que le data-driven testing ?
Le test piloté par les données (ou DDT) est une méthodologie de test de logiciels qui utilise un ensemble 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.
La façon la plus simple de configurer DDT est de créer un tableau au format CSV et d'attribuer une ou plusieurs colonnes aux paramètres d'entrée et aux données de sortie. Chaque ligne représentera un ensemble de données pour une itération du test. C'est précisément ce que nous allons faire. On l'appelle aussi test piloté par tableau ou test paramétré.
Les tests pilotés par les données sont stratégiques car les testeurs disposent souvent de plusieurs ensembles de données pour un seul test et la création de tests individuels pour chaque ensemble de données peut prendre beaucoup de temps et représenter un véritable défi. Les tests orientés données permettent de séparer les données des scripts de test et les mêmes scripts de test peuvent être exécutés pour différentes combinaisons de données de test en entrée. De cette façon, les résultats des tests peuvent être générés efficacement.
Les tests pilotés par les données avec Agilitest
Créer un projet avec un script principal ATS
Pour commencer, vous devez créer un nouveau projet ou ouvrir un projet existant.
Nous allons créer un script principal ATS qui sera utilisé pour accrocher le jeu de données DDT aux actions du test. Ce script ATS contiendra une ligne Sub-script qui sera configurée avec deux données de base : le nom du script à ouvrir et le chemin du fichier CSV.
Créer un fichier de données CSV (ou JSON)
Vous devez 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 principal ATS . Pour ce faire, il suffit de glisser-déposer le fichier CSV dans la case CSV file path. Le chemin sera relatif à la racine du projet, par exemple : assets:///data/data.csv
Le fichier CSV est créé et édité dans Agilitest. Vous pouvez ensuite éditer ce fichier avec un éditeur de texte classique à condition de respecter 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 externe.
Agilitest vous permet également d'utiliser un fichier CSV distant en saisissant une adresse URL au lieu de assets:///data/data.csv. Le fichier CSV peut alors être généré dynamiquement par une petite application web, ou simplement rester statique à distance.
Les champs de vos fichiers CSV peuvent contenir des textes à saisir au clavier, des textes à reconnaître sur l'application, ou encore des attributs à reconnaître sur la page (classes ou id CSS, attributs de bureau, etc.). Enfin, ils peuvent contenir des valeurs à comparer avec des champs de votre application.
Créer un script secondaire ATS
Pour créer le fichier secondaire ATS , vous pouvez faire un clic droit sur le dossier des sous-scripts et cliquer sur Nouveau script ATS .
Le fichier secondaire ATS contiendra toutes les actions souhaitées de l'ouverture du canal à la fermeture du canal. Une bonne pratique consiste à fermer le canal à la fin du script afin de pouvoir varier les canaux (chrome, firefox, etc) si nécessaire.
Une autre méthode conduisant à la création du script secondaire est de créer toutes les actions dans un script, puis de sélectionner les actions ATS à isoler dans un script secondaire ATS , et de les glisser-déposer dans le dossier des sous-scripts. Cela permet de créer des sous-scripts de manière naturelle, et donc d'accéder à la possibilité de variabiliser simplement les actions.
Exploitation des données de test
Les données contenues dans vos fichiers CSV peuvent être de différents types :
- le texte à taper dans une cible donnée
- text to be recognized in <tag>content of an HTML tag</tag>
- valeur d'un attribut HTML de type class, id, ou autre
- texte à comparer avec une variable Agilitest capturée avec l'action Propriété
- le texte à comparer avec le champ Contrôle > Valeurs
- nom d'une variable à récupérer et qui contient la valeur recherchée
Quels types de tests basés sur les données pourrai-je effectuer ?
Les tests pilotés par les données avec Agilitest consistent à 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.
Voici quelques exemples :
- Effectuer des tests sur le contrôle d'accès d'une application en fonction des rôles des utilisateurs. Dans ce cas, vous pouvez gérer un fichier CSV comprenant les données de connexion et les privilèges à contrôler. Pour faire cela simplement, un script maître appellera plusieurs sous-scripts successifs : login, puis un sous-script pour chaque type de contrôle, et logout, avant de passer à l'utilisateur suivant.
- Effectuer des tests sur les transitions d'un objet soumis à un workflow ou à un graphe d'états : là aussi, il est très simple de vérifier quelles transitions sont possibles pour passer d'un état à un autre. Cela nécessite évidemment de pouvoir générer des objets successifs avec un état donné, mais c'est assez simple avec un sous-script.
- Donnez de la profondeur à vos tests fonctionnels : sur la base d'un test fonctionnel réalisé précédemment, vous pouvez le transformer en 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 problèmes liés aux données bugs: ce sont généralement ceux qui sont signalés par vos clients, même si vous avez effectué des tests fonctionnels très complets de votre application.
Ce ne sont que trois exemples parmi tant d'autres. Agilitest vous permet d'aller très loin dans votre processus de test pour couvrir un maximum de cas.