L E S T E S T S ’INT R A · 2019-10-15 · PYRAMIDE DES TESTS L A P Y R A M I D E D E S T E S T S...

Post on 10-Apr-2020

0 views 0 download

Transcript of L E S T E S T S ’INT R A · 2019-10-15 · PYRAMIDE DES TESTS L A P Y R A M I D E D E S T E S T S...

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