Download - Test Automatisation
TESTS FONCTIONNELS
AUTOMATISÉS SELENIUM 2 : WebDriver & Selenium RC
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
SOMMAIRE
Application témoin – Spring ROO Présentation
Atouts
Un peu d’histoire Selenium Remote Control
Selenium 2 & WebDriver
Suite d’outils Selenium Selenium IDE
Selenium server
Exécution des tests fonctionnels automatisés Selenium server
Junit
Intégration Maven
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
APPLICATION TÉMOIN Spring ROO
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
SPRING ROO
Framework haute productivité qui permet :
de produire rapidement un modèle d’architecture
applicative, basé sur des technologies couramment
employées (Maven, Spring core/MVC/security, JPA,
REST…)
faire de la génération de code (ou Scaffholding) à
partir du modèle objet (approche « model first ») jusqu’à
la couche de présentation.
Les objets métiers, ou entités, sont des objets Java (POJO)
portant des annotations JPA pour décrire le mapping
objet / relationnel.
POJO : Plain Old Java Object
JPA : Java Persistence Annotation
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
ATOUTS
o Particulièrement adapté pour du prototypage rapide à partir d’un
modèle objet
o Très bien documenté
o Environnement de développement adapté et complet
o Courbe d’apprentissage très courte
o Les modèles de page, produits avec Tiles et des feuilles de style CSS, sont
parfaitement personnalisables,
o Grâce à la gestion d’extensions, facilite l’accès à des technologies telles
que : Solr, Google App Engine, Spring Mobile & User Agent Analysis,
Selenium…
o Spring ROO fournit une méthodologie pas à pas pour débrancher vers
une application J2E / Spring standard.
Petit bémol : Utilise beaucoup l’AOP. Pourrait-être difficile à maintenir
sans un environnement adapté tel que Spring Tool Suite.
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
UN PEU D’HISTOIRE Selenium RC versus WebDriver
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM 1 - REMOTE CONTROL
o Bibliothèque JavaScript permettant de simuler des
interactions avec une application Web
o Cette bibliothèque devint le Framework Selenium Core
, sur lequel se base Selenium Remote Control et Selenium
IDE.
o Le JavaScript entraine certaines limitations, notamment
du fait des restrictions de sécurité imposées par les
navigateurs mais aussi, à cause de la complexité
grandissante des applications Web, utilisant les
fonctionnalités fournies par les navigateurs nouvelle
génération.
o En 2008, fusion de Selenium et de WebDriver
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM 2 & WEBDRIVER
o WebDriver est un projet initialement réalisé par un
ingénieur de chez Google pour piloter directement un
navigateur.
o Cet outil permet d’interagir avec le navigateur, tel
qu’un utilisateur humain le ferait, et sans les restrictions
imposés par la technologie JavaScripts.
o Le projet Selenium RC est pour le moment maintenu
pour des raisons de rétrocompatibilité et surtout en mode
maintenance. Il ne sera plus maintenu à l’avenir.
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
SUITE D’OUTILS SELENIUM Présentation
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM IDE
Selenium IDE est un environnement de développement
pour la réalisation de scripts de test, développé sous
forme d’extension Firefox.
Il permet entre autre :
d’enregistrer les scripts simplement en effectuant le test
dans le navigateur.
de rédiger les étapes du script à l’aide des outils
avancés de l’éditeur (autocomplétion, menus
contextuels…).
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM SERVER
Selenium server est indispensable pour lancer les tests
sur une machine distance mais également pour lancer
une suite de test HTML en local et sur les différents
navigateurs supportés.
II est rétrocompatible avec les tests implémentés sous
Selenium Remote Control.
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
RÉALISATION DES TESTS
FONCTIONNELS Enregistrement VS Implémentation
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM IDE
Les « + »
Réalisation rapide de scripts de test
Scripts de test aisés à maintenir
Rapports d’exécution esthétiques et exploitables en
l’état
Facile à échanger avec les équipes de tests
Les « – »
Scripts de test non variabilisables
Incompatible avec les composants Flash, Java
(Applet)…
Intégration dans l’environnement de développement
par l’intermédiaire d’un outil de « build », tel que Maven
(voire batchs)
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
LANGAGE DE PROGRAMMATION SUPPORTÉ
Les « + »
Plus robuste et plus homogènes que les tests HTML dans
un contexte projet
Variabilisables / maîtrise des saisies / supporte les
conditions et les itérations offert
Accès à toutes les API supportées par le langage
Intégration continue
Les « – »
Charge de développement plus importante (environ 20-
25 % PTU)
Plus dur à maintenir dans la durée
Moins portable
Ne permet pas un échange avec les équipes de tests
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
RECOMMANDATIONS
Les équipes Selenium recommandent l’écriture des scripts de
test dans le langage de développement choisi pour le
projet, pour plus de robustesse et de stabilité.
Cependant, pour des tests simples, pour des tests « manuels »,
pour des scripts de test destinés à une population autre
que des développeurs, les tests HTML peuvent être
appropriés.
Pour des tests implémentés en Java, le design pattern
recommandé est celui implémenté ici :
http://code.google.com/p/selenium/wiki/PageObjects
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
ANNEXES Intégration Maven
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
MAVEN SELENIUM PLUGIN
Permet de démarrer Selenium server et de lancer une suite de tests HTML.
mvn selenium:selenese
MAVEN SUREFIRE PLUGIN
MAVEN FAILSAFE PLUGIN
Surcouche de Surefie destiné à gérer spécifiquement les tests d’intégration
mvn failsafe:integration-test
mvn failsafe:verify
Utiliser pendant la phase de test pour exécuter les tests unitaires et générer les rapports
d’erreur.
mvn surefire:test
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
ANNEXES Navigateurs et plateformes supportés
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM-WEBDRIVER¶
Google Chrome 12.0.712.0+
Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable
Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7
Opera 11.5+
HtmlUnit 2.9
Android – 2.3+ for phones and tablets (devices & emulators)
iOS 3+ for phones (devices & emulators) and 3.2+ for tablets
(devices & emulators)
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
SELENIUM 1.0 AND SELENIUM-RC Browser Selenium IDE Selenium 1 (RC) Operating Systems
Firefox 3.x Record and playback tests Start browser, run tests Windows, Linux, Mac
Firefox 3 Record and playback tests Start browser, run tests Windows, Linux, Mac
Firefox 2 Record and playback tests Start browser, run tests Windows, Linux, Mac
IE 8 Test execution only via
Selenium RC* Start browser, run tests Windows
IE 7 Test execution only via
Selenium RC* Start browser, run tests Windows
IE 6 Test execution only via
Selenium RC* Start browser, run tests Windows
Safari 4 Test execution only via
Selenium RC Start browser, run tests Windows, Mac
Safari 3 Test execution only via
Selenium RC Start browser, run tests Windows, Mac
Safari 2 Test execution only via
Selenium RC Start browser, run tests Windows, Mac
Opera 10 Test execution only via
Selenium RC Start browser, run tests Windows, Linux, Mac
Opera 9 Test execution only via
Selenium RC Start browser, run tests Windows, Linux, Mac
Opera 8 Test execution only via
Selenium RC Start browser, run tests Windows, Linux, Mac
Google Chrome Test execution only via
Selenium RC Start browser, run tests Windows, Linux, Mac
Others Test execution only via
Selenium RC Partial support possible** As applicable
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
ANNEXES Spring ROO
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
EXEMPLES DE COMMANDES¶
roo> hint
roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
roo> entity jpa --class ~.Timer --testAutomatically
~.Timer roo> field string --fieldName message --notNull
roo> web mvc all --package ~.web
roo> selenium test --controller ~.web.TimerController
roo> web mvc scaffold --class com.foo.web.PersonController
roo> quit
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS
ANNEXES Ressources
Gw
en
dal - so
javaw
est@
gm
ail.co
m - L
icen
ce
CR
EA
TIV
E C
OM
MO
NS
LIENS
http://static.springsource.org/spring-roo/reference/html/index.html
http://blog.xebia.fr/2011/02/18/automatiser-les-tests-selenium-avec-maven/
http://www.hascode.com/2012/03/selenium-webdriver-selenium-server-and-pageobjects-by-example/
docs.seleniumhq.org/docs/01_introducing_selenium.jsp
Gw
en
dal - so
javaw
est@
gm
ail.co
m -
Lice
nce
CR
EA
TIV
E C
OM
MO
NS