Utilisation des variables dans Agilitest

5 septembre 2019

Une gestion adaptée aux utilisateurs

A l’origine de notre démarche : produire un logiciel qui permet à des personnes ne connaissant pas le développement de réaliser des tests logiciels automatisés, nous avons beaucoup réfléchi à la notion de variables, qui sont incontournables.

Nous avons décidé de les implémenter de façon à ce qu’elles n’impactent pas le déroulement des actions réalisées par le testeur. C’est pourquoi il n’y a pas d’action de calcul, mise à jour, transformation de variables dans Agilitest. L’ensemble de ces opérations est géré dans un onglet variables séparé.

Ce fonctionnement permet de réserver la partie éditée du script aux actions sur les composants des applications testées et aux contrôles qui sont réalisés, et facilite la compréhension des tests.

Onglet de gestion des variables dans Agilitest

Pour simplifier les opérations et éviter les erreurs, nous avons défini deux origines de variables:

les variables de couleur orange qui sont issues des écrans et des éléments de l’application testée, et qui sont non modifiables.

les variables de couleur violette qui sont déclarées par l’utilisateur ou créées à partir de variables non modifiables orange, elle sont modifiables

Ces deux variables peuvent être utilisées pour déclarer de nouvelles variables, qui seront à leur tout modifiable.

L’ensemble des variables d’un test est donc un assemblage d’arbres de dépendances de variables, Agilitest et ATS vont automatiquement remettre à jour les variables dépendantes d’autres variables quand ces dernières sont modifiées.

Ainsi, l’utilisateur ne doit que se soucier de récupérer des valeurs sur les éléments des pages ou écrans testés et créer des variables dépendantes, et il sait que, de toutes façons, les valeurs de l’ensemble des variables dépendantes qu’il a déclarées seront toujours à jour par rapport au contexte actuel du test réalisé.

Ce mécanisme permet beaucoup de souplesse et de facilité de traitement pour des personnes qui ne sont pas habituées au développement informatique.

Comment créer une variable ?

Il y a plusieurs façons de créer des variables dans Agilitest:

Variable d’environnement

Les variables d’environnement sont déclarées dans les exécutions de votre projet, dans l’onglet « Paramètres d’exécution ».

Il suffit de sélectionner une exécution, ensuite vous pouvez ajouter un nouveau paramètre et modifier sa valeur.

Gestion des paramètres d’exécutions

N.B: Ces variables sont forcément déclarées comme des chaines de caractères et ne peuvent faire appel à des fonctions de modifications qui sont accessibles pour les autres variables.

Pour les utiliser dans vos scripts, utilisez la fonction $env(nom_du_paramètre), par exemple dans le cas ci-dessus, $env(navigateur_cible) affichera « chrome »

Variable de script modifiables

Ces variables se créent dans l’onglet « Variables du script en cours » en cliquant sur le menu et en sélectionnant « Créer une variable« .

Création d’une variable de script modifiable

Vous allez créer une variable de couleur violette, modifiable. Vous pouvez ensuite lui donner un nom et une valeur.

Dès que votre variable a une valeur, celle-ci va s’afficher à droite de son nom. Cela permet à tout moment de vérifier les valeurs des variables du script en cours.

Si la variable n’est pas déclarée correctement et qu’Agilitest ne peut lui attribuer une valeur, il affiche un message d’erreur en face du nom de la variable.

Erreur dans la déclaration d’une expression régulière


Pour définir la valeur de la variable, vous pouvez utiliser le menu « Insérer une valeur spéciale » à droite du champ de saisie, qui vous permet d’accéder à tous les types de variables utilisables dans Agilitest.

Menu Insérer une valeur spéciale

Ces fonctions sont accessibles pour définir toutes les variables modifiables dont vous aurez besoin, elles peuvent être concaténées pour générer une valeur plus complexe.

Voici les principales fonctions qui permettent d’y accéder:

  • $env(paramètre) : Renvoie la valeur d’un paramètre d’exécution défini dans l’exécution courante.
  • $var(variable) : Renvoie la valeur d’une variable
  • $param(index_param) : Dans un sous-script, renvoie la valeur d’une variable passée en paramètre en donnant son index.
  • Caractères aléatoires : Renvoie une string aléatoire en indiquant le nombre de caractères désiré et sa casse. La fonction s’utilise comme ceci:
    • $rnd(10) ou $rndstring(10) : génère une chaîne de 10 caractères aléatoires
    • $rnd(15, low) ou $rndstring(15, low) : génère une chaîne de 15 caractères en minuscule
    • $rnd(8,upp) ou $rndstring(8,upp) = génère une chaîne de 8 caractères en majuscule
    • $rnd(5,num) ou $rndstring(5,num) = génère une chaîne de 5 caractères uniquement numériques
    • $rnd(7,abbcccdddd) ou $rndstring(7,abbcccdddd) = génère une chaîne de 7 caractères dont la probabilité de tirage de chaque caractère dépend de leur fréquence dans la chaîne de référence (ici le « d » à 4x plus de chances d’être dans la chaîne aléatoire que le « a » et tous les caractères absents n’ont aucune chance de tirage)
  • Identifiant unique : Renvoie un identifiant au format Universal Unique Identifier, elle s’utilise comme ceci:
    • $uuid : génère un UUID, exemple : 110e8400-e29b-11d4-a716-446655440000
  • Maintenant : Renvoie une chaine de caractères indiquant l’heure actuelle du poste qui rejoue le test (ou le serveur d’intégration continue), elle s’utilise comme ceci:
    • $now : heure serveur, par exemple : 17:38:11
  • Aujourd’hui : Renvoie une chaine de caractères indiquant le jour actuel du poste qui rejoue le test (ou le serveur d’intégration continue), elle s’utilise comme ceci:
    • $today : heure serveur, par exemple : 08/30/2019
  • Identification projet : Renvoie une chaine qui identifie le projet contenant le fichier ats, elle s’utilise comme ceci:
    • $pgav : com.functional.Test(0.0.1)

Variables de script non modifiables

Ces variables sont générées à partir d’éléments provenant des applications testées, en utilisant l’action « Propriété ».

Cette action prend en entrée un élément d’interface qu’il faudra capturer, ainsi que le nom de l’attribut de cet élément qui nous intéresse.

Récupération d’un attribut d’un élément puis réutilisation dans un appel SOAP.

Ces variables sont de couleur orange et non modifiables.

Un script contenant des variables modifiables et d’autres non modifiables

Les constantes systèmes $sys

Depuis la version Agilitest 2.9.4, il est possible d’utiliser des constantes système avec la syntaxe $sys. Voici la liste des valeurs utilisables :

  • Nom du système d’exploitation : $sys(os-name)
  • Version du système d’exploitation : $sys(os-version)
  • Version de build de Windows : $sys(os-build)
  • Pays défini dans Agilitest : $sys(country)
  • Hostname de l’ordinateur : $sys(machine-name)
  • Nom de l’application : $sys(app-name)
  • Version de l’application : $sys(app-version)
  • Chemin vers l’application : $sys(app-path)
  • Nom de l’utilisateur : $sys(user-name)

Les paramètres de sous-scripts

Ces variables sont passées par paramètre d’un script parent à un sous-script.

Utilisation avancée des variables

Agilitest gère 5 types des variables différentes pour faciliter les calculs.

  • Chaines de caractères
  • Expressions régulières
  • Date
  • Horaire
  • Numérique

Les variables de type chaines de caractère

Par défaut, toutes les variables sont des chaines de caractères.

Le type d’une variable peut être déclaré à la création en cliquant sur le bouton correspondant.

Les types de variables

La déclaration d’un type différent de chaine de caractère fait apparaitre une page dépendants du type qui va permettre de le gérer. Si vous cliquez sur le bouton « Annuler », votre variable redevient une chaine de caractère.

Nous allons prendre deux variables qui vont nous servir d’exemple.

date : 8/9/2019
heure : 11:34:33

Déclaration de la variable « heure »

Vous pouvez concaténer des variables de type chaine de caractères entre elles et avec du texte.

Par exemple, si vous créez une variable $jour, et que vous lui donnez la valeur $var(date)_$var(heure), sa valeur littérale sera 8/9/2019_11:34:33

Les variables de type expressions régulières

Les expressions régulières permettent de sectionner les variables des autres types pour générer des variables correspondant à des sous-groupes de caractères.

Le menu de gestion des Regex vous demande un Modèle qui doit correspondre (on dit aussi matcher) à votre valeur d’origine.

Ce modèle comporte des parenthèses qui définissent les sous-groupes et sont utilisées pour déterminer quelle sera la valeur de la variable. La sélection du groupe 1 permettra de donner à la variable la valeur qui correspond au modèle défini dans la première parenthèse.

Récupération du la date à partir de la variable jour
Récupération de l’heure à partir de la variable jour

Les variables de type date

Il est possible d’effectuer des calculs de date pour obtenir une date postérieure ou ultérieure, dans un jour, un mois etc.

A partir de la valeur entrée, des sélecteurs permettent d’ajouter ou soustraire des jours, des mois, des années

Le format d’origine supporté peut être m/d/yy ou yyyy-mm-dd

La date obtenue peut ensuite être reprise dans des variables de type regex pour récupérer le jour, le mois ou l’année.

Déclaration d’une variable date

Les variables de type horaire

Le fonctionnement est similaire aux variables de type date, dans le cas présent, des sélecteurs permettent d’ajouter ou enlever des heures, minutes ou secondes à une heure donnée.

Le format de la variable d’entrée est hh:mm:ss

Déclaration d’une variable horaire

Les variables de type numérique

Les variables de type numérique permettent de gérer des nombres entiers ou décimaux au format nn.nnnnnn

Le format d’entrée peut être un nombre décimal respectant ce format, mais aussi un nombre décimal dont le séparateur sera une virgule.

Déclaration d’une variable numérique

Il est possible d’utiliser les opérateurs standard pour faire des calculs :

  • + : addition
  • : soustraction
  • * : multiplication
  • / : division

La plupart des fonctions mathématiques les plus courantes sont implémentées côté éditeur : sin, cos, tan, puissance, ln, etc..

Toutes les fonctions mathématiques ne sont implémentées : N’oubliez pas que vos tests doivent être déterministes et que vous connaissez les valeurs que vous devez vérifier.

Pours les cas très spécifiques où vous auriez des opérations très particulières à réaliser, vous pouvez appeler du code java en passant certaines valeurs en paramètre et en récupérant ensuite une variable sur laquelle vous pourrez mettre un contrôle.