22
LES TESTS D’INTERFACE AUTOMATISÉS ASSEMBLÉE GÉNÉRALE AERIS François ANDRE

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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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

Page 2: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

Relation avec les autres types de tests

Page 3: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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

Page 4: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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

Page 5: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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

Page 6: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

SeleniumHQ

Page 7: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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,…

Page 8: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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

Page 9: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

Bonne pratique

Page 10: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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.

Page 11: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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

Page 12: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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….

Page 13: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

… 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

Page 14: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

… 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.

Page 15: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

… 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

Page 16: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

… 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

Page 17: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

Exemple en Spring (boot)

Page 18: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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).

Page 19: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

U n p a g e o b j e c t : l e s s é l e c t e u r s

Page 20: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

U n p a g e o b j e c t : l e s m é t h o d e s

Page 21: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

S c r i p t d e t e s t s

Page 22: 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 La priorité doit être donnée aux tests de bas niveaux Ces tests sont prévus

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