Fonctionnement du GDSL
MAJ 31 OCT 2024
Afin de décrire un scénario de parcours utilisateur, un script doit être écrit à l'aide du langage GDSL. Celui-ci permet d'automatiser la navigation de votre application sur les smartphones du banc de mesure, et de prendre des mesures tout au long du scénario.
Structure fondamentale
Dans le fichier script, chaque étape est construite selon le même modèle de commande GDSL :
startMeasure,Nom d'étape
Instructions GDSL (saisie, clic, défilement, vérification de l'affichage de l'application, pause, etc.)
StopMeasureChaque instruction entre measureStart et measureStop sera mesurée et tout ce qui sera en dehors sera ignoré.
Les smartphones présents sur le banc d'essai sont configurés en anglais uniquement. Il faut en tenir compte lors de la création du script (textes détectés en anglais, boutons en anglais, etc.).
Etapes techniques standards
Référenceau début du script
permet de mesurer le smartphone sans l'application ou le navigateur sans le site
Arrière plan (background):à la fin du script
mesure de l'application en arrière-plan puis tuée.
Types d'étapes
Il existe 4 types d'étapes utilisés et indiqués en préfixe du nom de l'étape :
Chargement :
LOAD_(ouCHRGT_)Action :
ACTION_Scroll :
SCROLL_Pause :
PAUSE_
A noter historiquement CHRGT_ était utilisé pour les étapes de chargement, LOAD_ est désormais préconisé mais les 2 usages sont possibles.
Chargement :
Préfixe du nom d'étape :
LOAD_Terminée par l'attente de l’affichage d'un élément dans la nouvelle vue
measureStart,LOAD_exemple
pressEnter
waitUntilText,Accepter les cookies
pause,1000
measureStopAction :
Préfixe du nom d'étape :
ACTION_L'utilisation typique est une action qui n'entraîne pas l'affichage d'une nouvelle vue.
Plusieurs actions peuvent être regroupées si cela a un sens fonctionnel
measureStart,ACTION_exemple
clickByText,Accepter les cookies
pause,500
clickById,onetrust-accept-btn-handler
pause,1000
measureStopScroll :
measureStart,SCROLL_exemple
swipeDownward
pause,500
swipeDownard
pause,1000
measureStopPause :
Préfixe du nom d'étape :
PAUSE_L'utilisation typique est l'observation du comportement de la page sans action de l'utilisateur afin de détecter une consommation inhabituelle de données ou d'énergie.
Unité : ms
measureStart,PAUSE_exemple
pause,30000
measureStopFormat du langage
1 instruction par ligne
commentaire avec
#sur une ligne distincteLes paramètres éventuels suivent des instructions séparées par des
,
Instructions
Plusieurs instructions sont disponibles pour vous aider à automatiser votre parcours utilisateur. Voici les préfixes des principales commandes :
application: liées au démarrage, à l'arrêt, à l'effacement, à l'installation ou à la désinstallation d'applicationsassert: permettent de vérifier la présence d'un élémentbrowser: instructions spéciales permettant de gérer le navigateur pour les tests webclick: offrent plusieurs façons de cliquer sur des boutons par le texte, l'identifiant, la position, etc.find: permettent d'entrer dans la hiérarchie des éléments de l'interface utilisateur pour naviguer facilement jusqu'à un élément spécifiquepause: pour interrompre le test pendant un certain tempspress: utiles pour activer des boutons spéciaux, comme les boutons du clavier ou les boutons physiquesscrollswipewaitutiles après un changement de page pour attendre que la page soit complètement chargée
Variables
Des variables peuvent être utilisées avec ${NOM_PARAMETRE}. Les variables sont utiles si une information est récurrente ou s'il s'agit d'un contenu sensible comme un identifiant, un mot de passe, etc.
Ils doivent être définis :
commande de lancement pour un test sur le Testbench
job.ymlpour un test en local dans la sectionextras
Aucun caractère spécial n'est pris en charge dans le nom du paramètre
Pas d'espace dans le nom du paramètre
It is useful for pause duration for example. Here are 4 pause variable types we recommend to use:
Variable | Type d'étape associé | Fonction | Valeur usuelle (ms) |
|---|---|---|---|
| Pause |
| 30000 (30 sec) |
| Chargement, Action, Scroll |
| 1000 (1 sec) |
| Action |
| 500 (0,5 sec) |
| Scroll |
| 500 (0,5 sec) |
These indications are just propositions, it is possible to adapt them for tests (PAUSEDURATION at 1000 ms during tests and at 30000 ms during measures) or for you specified needs.
Modèles
Pour lancer l’application
Mesure de l'inactivité de référence sur l'écran d'accueil
Lancement de l'application
Attente de l'affichage du dernier élément (
waitUntil)
measureStart,PAUSE_reference
pause,${PAUSEDURATION}
measureStop
measureStart,CHRGT_accueil
applicationStart,com.google.android.youtube
waitUntilText,Home
pause,${PAUSEAFTERLOAD}
measureStopPour lancer un site web :
Lancement du navigateur (
setBrowser)Préparation du navigateur en vidant le cache et l'historique (
browserPrepareAndOpenForReference)Mesure de l'inactivité de référence d'un onglet vide
Ecriture de l'URL (
browserGoToUrl)Mesure du chargement du site web en validant l'URL (
pressEnter)Attente de l'affichage du dernier élément (
waitUntil)
setBrowser,chrome
applicationKill,com.android.chrome
browserPrepareAndOpenForReference
measureStart,PAUSE_referenceBrowser
pause,${PAUSEDURATION}
measureStop
browserGoToUrl,https://metropole.nantes.fr
measureStart,CHRGT_accueil
pressEnter
waitUntilText,Tout accepter
pause,${PAUSEAFTERLOAD}
measureStop
Si, lors de l'installation, l'application affiche des fenêtres qui n'apparaissent pas dans la liste suivante
Solution 1 : Il est obligatoire d'automatiser ce processus si vous voulez utiliser le testbench.
Solution 2 : passer en mode testrunner avec dispositif local pour éviter de réinstaller l'application à chaque itération.
Pour chaque nouvelle vue/page :
Réalise l'action permettant de changer de vue (
clickBy)Attente de l'affichage du dernier élément (
waitUntil)Vérifie que l'élément attendu n'existe pas déjà avant de changer de vue (
assertNotExists)Mise en place d'une étape de pause pour mesurer l'état d'inactivité
assertNotExistsText,Profitez de vos vidéos préférées
measureStart,CHRGT_ongletBibliotheque
clickByTextExact,Bibliothèque
waitUntilTextExact,Profitez de vos vidéos préférées
pause,${PAUSEAFTERLOAD}
measureStop
measureStart,PAUSE_ongletBibliotheque
pause,${PAUSEDURATION}
measureStopPour obtenir les caractéristiques d'un élément dans une vue, voir Obtenir les éléments d'une vue - Android/Web
Pour une action (cliquer, écrire un texte, ...) ou un défilement :
Effectue 3 actions au maximum dans une mesure
Elles doivent être séparées par une pause appropriée (
PAUSEAFTERACTIONetPAUSEAFTERSCROLL)
Action :
measureStart,ACTION_accueil_saisieRecherche
clickByPercent,80,5
pause,${PAUSEAFTERACTION}
enterText,greenspector
pause,${PAUSEAFTERLOAD}
measureStopScroll :
measureStart,SCROLL_videos
swipeVertical,90,10,50
pause,${PAUSEAFTERSCROLL}
swipeVertical,10,90,50
pause,${PAUSEAFTERLOAD}
measureStopPour les étapes techniques finales (pertinent pour les app)
Retour sur la page d'accueil de l'appareil pour mesurer l'activité de l'application en arrière-plan lors d'une pause (
pressHome)Mesure de l'activité de l'application après la fermeture d'une pause par l'utilisateur (
applicationCloseAll)Mesure de l'activité de l'application après une fermeture forcée (fermeture du processus) lors d'une pause (
applicationKill)
pressHome
measureStart,PAUSE_appBackground
pause,${PAUSEDURATION}
measureStop
applicationCloseAll
measureStart,PAUSE_afterUserClose
pause,${PAUSEDURATION}
measureStop
applicationKill,com.android.chrome
measureStart,PAUSE_afterForcedClose
pause,${PAUSEDURATION}
measureStop