Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
L E S T E S T S D ’ I N T E R F A C E A U T O M A T I S É S
A S S E M B L É E G É N É R A L E A E R I S
François ANDRE
Relation avec les autres types de tests
PYRAMIDE DES TESTS
L A P Y R A M I D E D E S T E S T S
La priorité doit être donnée aux tests de bas niveaux
Ces tests sont prévus par les technologies utilisées
Ex: ecosystème java: junit, spring permet de tester tester facilement les couches backend
Ces outils sont intégrés aux forges logicielles
L E S T E S T S B A S N I V E A U X
Nécessitent du temps
Doivent être prévus dès la conception
On un impact généralement très positif sur la qualité du code
Permettent l’acceptation du changement
Nécessitent des compétences et de la méthodologie
Ex: gestion des profils en Spring, conception par interface
Conditionnent la génération du livrable
Nécessitent la mise en place de jeux de tests
L E S T E S T S D ’ I N T E R F A C E Nécessitent du temps
On la réputation de ne pas être pérennes
Peuvent être mis en place a posteriori
Peuvent être mis en place avant que l’application ne
soit codée
Peuvent être enregistrés sous forme de vidéos
Correspondent exactement à la vision du client
Sont indépendants de la technologie Backend.
Permettent l’acceptation du changement
Peuvent inclure d’autres projets
Nécessitent des compétences et de la méthodologie
Ex: Utilisation de Page Objects, besoin d’identifiants
pérennes.
Nécessitent la mise en place de jeux de tests
Sont plus longs à exécuter
Peuvent :
conditionner la génération du livrable (rare)
s’exécuter régulièrement sur une application déjà déployée
SeleniumHQ
S E L E N I U M H Q
UN STANDARD
Standard reconnu dans le monde du test d’interface
Stable
Multi-language
PRINCIPE
Lancement d’un navigateur en mode contrôlé (le driver)
Identification d’élément(s) sur la page en cours via des sélecteurs (Id, css,
xpath, personnalisé)
Actions sur les éléments identifiés (click, saisie de valeur, …)
Test d’existence d’éléments, test sur la valeur de texte,…
S E L E N I U M I D E Selenium IDE est un plugin Firefox permettant d’enregistrer les actions
effectuées dans un navigateur sous forme de script SeleniumHQ
L’utilisation de ce plugin est à prescrire car les scripts générés sont en
général difficile à maintenir
Bonne pratique
L E S T E S T S D ’ I N T E R F A C E F I N I S S E N T M A L Les utilisations naïves de Selenium sont en général vouées à l’échec car:
1. Un changement dans l’interface peut impacter beaucoup de scripts.
2. Les modifications sont difficiles à identifier
3. Les sélecteurs sont peu pérennes
Les scripts sont souvent abandonnés.
L E S T E S T S D ’ I N T E R F A C E F I N I S S E N T M A L
login
mdp
OK
Page 2
Page 3
Script 1
Script 2
Script 3
Appels Selenium
Scripts faiblement sémantisés
login
mdp
OK
L E S T E S T S D ’ I N T E R F A C E F I N I S S E N T M A L
Page 2
Page 3
Script 1
Script 2
Script 3
CE GENRE DE PROBLÈME EST APPARAIT ÉGALEMENT:
LORSQUE LE SÉLECTEUR EST CHANGÉ,
LORSQUE LA CINÉMATIQUE DE L’APPLICATION EST CHANGÉE….
… E N G E N E R A L Les tests peuvent devenir plus robuste en adoptant le Design Pattern Page Object, qui est l’équivalent
du DAO pour les tests d’interface.
Il consiste à rajouter un objet qui va représenter une des pages web de l’application
Il expose les méthodes de la page aux scripts de tests
Il masque les appels Selenium sous-jacents
LoginPage
setName() setPassword() login() … login(name password) loginAdministrator() isLogged() getErrorMessage()
login
mdp
OK
Script 1 Script 1
Scripts
Appels Selenium
Appels Langage X
Scripts fortement sémantisés
… E N G E N E R A L L’utilisation des Page Objects permet:
Un impact limité en cas de changement de l’application
Des scripts plus faciles à maintenir (éventuellement écrits en Gherkin)
Une identification plus aisée des scripts à modifier en cas de changement des méthodes du page object via le compilateur.
… E N G E N E R A L
login
mdp
OK
Page 2
Page 3
Script 1
Script 2
Script 3
LoginPage
setName() setPassword() login() …
SecondPage
…
ThirdPage
…
… E N G E N E R A L
Page 2
Page 3
Script 1
Script 2
Script 3
LoginPage
setName() setPassword() login() …
SecondPage
…
ThirdPage
…
login
mdp
OK
Exemple en Spring (boot)
U n e x e m p l e s i m p l e
https://github.com/francoisandre/seleniumdemo
Test basique du catalogue GMOS
Code source:
Prérequis: installation du driver (des librairies comme Arquillian permettent le téléchargement
automatique)
Architecture du code:
Les pages objects sont regroupés dans un même package
Dans classes de tests sont nommés xxxScenario afin de ne pas être pris en compte par maven par défaut (mais au sein de profils).
U n p a g e o b j e c t : l e s s é l e c t e u r s
U n p a g e o b j e c t : l e s m é t h o d e s
S c r i p t d e t e s t s
Q u e l q u e s r e c o m m a n d a t i o n s
Anticiper les tests avec des sélecteurs sémantiquement claires (ex: fausses classes CSS)
Privilégier les secteurs CSS et ID à Xpath
Privilégier les drivers Firefox et Chrome