Bonnes pratiques et astuces

Bonnes pratiques et astuces

MAJ 31 OCT 2024

Bonnes pratiques en GDSL

Préparer la mesure de l’environnement web avec browserPrepareAndOpenForReference qui permet de nettoyer le cache et supprimer les onglets ouverts. Ensuite, une page entièrement noire est ouverte (https://dl.greenspector.com/black/), qui servira pour la mesure de référence pour le web.

 

Nommer les étapes avec la convention d'appellation camelCase (exemple : CHRGT_homePage)

  • Ne pas utiliser "/" dans le nom de l'étape : les mesures ne seront pas envoyées

  • Mentionner le nom de la vue dans celui de l'étape :

    • CHRGT_[nomVue]

    • Dans le cas d’une étape d’action, il est recommandé d’utiliser un nommage de la forme ACTION_[NomVue]_[nomAction] (exemple: ACTION_homePage_writeSearch)

    • SCROLL_[nomVue]

    • PAUSE_[nomVue]

 

Lors d’un chargement d’une nouvelle vue :

  • Attendre (waitUntil) le dernier élément à s’afficher. Cette commande peut également être utilisée pour détecter le succès d’une action (si celle-ci entraîne la modification de l’affichage).

    • Il est recommandé d’attendre l'élément exact : waitUntilTextExact

    • Dans tous les cas, n’utiliser waitUntilPageLoaded qu’en dernier recours. En effet, toutes les données ne sont pas forcément chargées après cette fonction. Cela dépend de la qualité du réseau. Il est préférable d’utiliser une fonction comme waitUntilText ou waitUntilId.

  • Avant de procéder à une mesure de chargement, vérifiez que l'élément prévu (waitUntil) n’est pas déjà présent : (assertNotExists)

 

## Ajouter des commentaires pertinents au code :

  • Au début du script, donnez une brève description du scénario

  • Lors de l'utilisation d'une commande ClickByXY ou ClickById, indiquez l'action effectuée par cette commande.

  • Lors de l'utilisation d'une commande if, while ou find. Précisez le but de l'utilisation.

  • Lorsqu'une manipulation sort de l'ordinaire (nécessité d'une intervention manuelle, traitement hors mesure, pause anormale, etc.) Expliquer la manipulation en question et pourquoi elle doit être effectuée de cette manière.

 

Les valeurs d’étapes de pause :

  • Une étape de pause suit chaque étape de chargement. Elle a alors une durée PAUSEDURATION de 30000 ms. Ce type de pause peut également être utilisé pour mesurer l'état inactif d’un service numérique.

  • Une pause PAUSEAFTERLOAD de 1000 ms à la fin des étapes de chargement et d’action/scroll

  • Une pause PAUSEAFTERACTION de 500 ms est placée après chaque commande d’action (sauf avant une pausePAUSEAFTERLOAD). Cela certifie que les étapes durent au moins une seconde.

  • Une pause PAUSEAFTERSCROLL de 500 ms est placée après chaque commande de scroll/swipe (sauf avant une pause PAUSEAFTERLOAD)

 

Priorités des balises de détection d'éléments : texte/description > id > classe > package

  • S'il n'est pas possible de trouver l'élément via ces balises, utiliser la méthode de l’arborescence (parent/enfant)

  • Seulement si les méthodes ci-dessus ne sont pas possibles, utiliser XY ou Percent (et préciser en commentaire l'élément cliqué)

 

Pendant un défilement d'écran, swipeVertical est préférable à scrollDownward ou scrollUpward, car il est plus précis. Pour encore plus de précision, vous pouvez ajouter un 4e paramètre avec le temps de balayage (par défaut 500 ms). Pour en savoir plus, voir la documentation sur le scroll.

La fonction swipeVerticale n’existe pas sur iOS. A la place, il existe les fonctions scrollDown, scrollUp et swipe.

 

En particulier sur le web, accepter les cookies dans une mesure à part :

measureStart,CHRGT_homePageAfterCookies clickByText,accept all waitUntilText,Actu pause,${PAUSEAFTERLOAD} measureStop measureStart,PAUSE_homePageAfterCookies pause,${PAUSEDURATION} measureStop

 

La fonction clickByText effectue une recherche par texte, puis par description. Elle est donc utile quand la description est accessible.

 

Lors du remplissage des formulaires :

  • La fonction pressBack permet de désactiver le clavier. Cela permet aussi de sortir du mode plein écran des vidéos.

  • Si les champs ne sont pas accessibles par leur texte, leur description ou leur identifiant, il est possible d’utiliser la fonction clickOnFirstEmptyEditText. Cela permet de sélectionner le prochain champ de texte vide.

  • Après la fonction enterText, ne pas écrire de caractères spéciaux ni accentués car ils ne sont pas pris en compte. Cette fonction peut aussi inverser des numéros lors du remplissage d’un numéro de téléphone dans un champ. Pour contourner ce problème, il est possible d’utiliser les fonctions commençant par setText.

 

Astuces pour l’automatisation

Passer le terminal en anglais car les terminaux du testbench sont en anglais.

 

Parfois, il existe des éléments présents seulement au premier affichage d’un écran. Cela peut poser problème dans le cas où plusieurs tests sont effectués sur la même application.

Ainsi, nous vous conseillons d’utiliser les commandes suivantes : Les "waitUntilBeforeClick"

  • WaitUntilByTextBeforeClick

  • WaitUntilByDescBeforeClick

  • WaitUntilByTextExactBeforeClick

  • WaitUntilByIdBeforeClick

Le second paramètre de ces méthodes est un booléen optionnel qui permet s’il est à true de ne pas faire échouer le test sur cette instruction même si elle est fausse. La valeur par défaut de ce paramètre est false.

Ce test échouera si "OK" n'est pas trouvé : waitUntilByTextBeforeClick,OK

Ce test continue à la prochaine instruction si "OK" n'est pas trouvé : waitUntilByTextBeforeClick,OK,true

 

Spécificités automatisation/mesure en local

L'extension GDSL de VS Code permet de guider le processus de mise au point et d'éviter les erreurs.

Pour aller plus vite lors de l'écriture des scripts et de la partie test, modifiez le fichier job.yml :

  • Remplacer PAUSEDURATION: 30000 qui définit le temps d’une étape de pause, par PAUSEDURATION: 1000

  • config-skipsetupphone: true permet de passer la préparation de l’appareil au début du test

  • La commande testrunner testdslcommand -c "clickBy..." permet d’exécuter une commande unitaire sans relancer le script entier

  • --dd ou --disable-dumpsys pour supprimer l'itération dumpsys avec le CLI. Veillez à supprimer cette option pour les mesures finales.

 

Chaque fois que vous lancez un test, il est envoyé par défaut sur le serveur Greenspector. Pendant la phase d'automatisation, il n'est pas nécessaire d'envoyer les données sur l'application Greenspector. Dans le fichier job.yml,

  • Remplacer online: true par online: false pour éviter que des mesures non pertinentes soient chargées dans l’interface web.

Si vous souhaitez voir des résultats détaillés sur la plateforme en ligne, réglez ce paramètre à true et créez une version test pour ne pas les mélanger avec les mesures officielles.

Spécificités iOS

  • Le nom du package est différent sur iOS. Pour trouver le nom des applications installées, taper la commande ios-deploy -B.

  • Les fonctions de gestion du navigateur fonctionnent seulement avec certaines versions de Google Chrome sur iOS. Si cela ne fonctionne pas, il faut réaliser les actions de nettoyage du cache et des onglets à la main avant de lancer les mesures.

  • La fonction clickByText effectue une recherche par label, puis par name.