Outils d’automatisation de tests
d’interfaces Web
David GERBAULT
Ingénieurs 2000 Xposé 2010-2011
1
2
http://www.clever-age.com/
http://watir.com/
3
4
2. Selenium 3. Watir
4. Conclusion
5
Souvent : tests du Contrôleur (code)
Rarement : tests de la Vue (Interface Web)
C ONSTAT !
6
Simuler l’interaction de(s) l’utilisateur(s)
au travers de tests fonctionnels
7
Automatisation de tests
Selenium / CubicTest / Watir / AutoIT / Canoo / WebTest
Gestion des tests
Selenium / Outils borland / Salome / TestLink / Fitnesse / Outil HP / Twist
Tests de charge
Grinder / OpenSta / JMeter
Model Checking
NModel / Smart testing / MaTeLo
Qu’est ce que c’est ? : Vérification algorithmique d’un modèle donné, du système lui-même ou d’une abstraction du système, pour savoir si il satisfait une spécification, souvent formulée en termes de logique temporelle.
= = > Curieux? Google it !
LES TESTS ...
8
Conformité des développements par rapport aux besoins exprimés
Développeurs et équipes d’assurance qualité
Valider le bon fonctionnement de l’application et le passage en production.
9
Le test doit être joué plus d’une fois.
&
Le test peut être automatisé de bout en bout.
Q UAND ?
10
2. Définition du périmètre de test.
3. Rédaction des cas de tests.
4. Enregistrement des tests dans l’outil.
5. Exécution des tests.
11
• Tests de non régressions fréquents
• Retour rapide aux développeurs pendant la phase de développement
• Cas de tests « illimités »
• Rapports personnalisés
• Convient aux développements Agile et d’eXtreme Programming
• Documentation rigoureuse des cas de tests
• Suppression des erreurs des tests manuels
C ONSÉQUENCES ?
12
Ecrire des tests dans le format voulu et adapté à l’outil d’intégration continue.
Exemple
Selenium – Java (Junit) – Eclipse – Hudson
Exemple avec ant + Selenium + Hudson
http://www.clever-age.com/veille/blog/integration-pas-a-pas-de-tests-selenium-dans-hudson.html
13
P ROBLÈMATIQUES
Ce qu'il faut tester
• Contenus
• Liens
• Fonctions
• Eléments dynamiques
• Ajax
Résultats
• Assert vs Verify
• AssertTextPresent vs AssertElementPresent vs AssertText
Localisation
• ID, name attribute, Xpath statement, Document Object Model
• Findbugs
• Objets dynamiques
• AJAX (attente d'éléments)
14
SELENIUM
15
Distribué par OpenQA licence libre Apache 2.0
8 logiciels : http://seleniumhq.org/projects/
http://code.google.com/p/selenium/
16 16
SELENIUM IDE
17
18
SELENIUM IDE
19
20
SELENIUM IDE
21
Démonstration
22
Enregistrement / Lecture des tests
3 Méthodes de constructions de tests
• Enregistrement
• Ajout de vérifications (assert)
• Edition
SELENIUM IDE
23
Debug / Point d’arrêt Sauvegarder/Exporter
HTML, Java, Php, Perl, Python, C#...
Plugins
24
Framework d’exécution de tests DHTML Moteur de
• Selenium IDE
• Selenium Remote Control
Déploiement possible sur serveur d’application
SELENIUM R EMOTE C ONTROL
25
Selenium IDE+ Core
26
Firefox
≥2 IE
≥ 6 Safari
≥ 2 Opera
≥ 8 Chrome
Enregistre et lance les tests Exécution
via RC
Exécution via RC
Exécution via RC
Exécution via RC
Démarre le navigateur &
lance les tests Démarre le navigateur &
lance les tests Démarre le navigateur &
lance les tests Démarre le navigateur &
lance les tests Démarre le navigateur &
lance les tests
Windows, Linux, Mac
Windows
Mac
Windows, Linux, Mac
Windows
SELENIUM R EMOTE C ONTROL
27
.jar èJRE
28
• Dépendance de cas de test
• Historisation des résultats des tests (Framework)
• Gestion des erreurs
• Re-exécution des tests qui ont échoué
• Capture d'écran des tests qui ont échoués
• Tests de Base de Données
SELENIUM R EMOTE C ONTROL
29
30
31
32
33
34
35
36
• Configurer le proxy
• Mode Mono/Multi fenêtre(s)
• Choix du profil Firefox
• Exécuter directement du HTML
• Récupérer les logs directement
• Chemin absolu vers le navigateur (ex : si plusieurs versions)
• Mode interactif
Plus d’options en tapant : java -jar selenium-server.jar –h
SELENIUM G RID
37
Limitations de RC :
• Tests concurrents limités ( <6 conseillé / RC)
• Si trop rapide : Goulot d’étranglement Selenium RC ó navigateur
• Tests différentes versions des navigateurs & OS.
èArchitecture compliqué et non maintenable
38
SELENIUM G RID
39
40
SELENIUM G RID
41
Avantages :
• Améliorations des performances
• Limitation de l’utilisation de chaque RC
• Choix du RC transparent (hub)
• Tests multi navigateurs & multi OS faciles Exemple en java
new DefaultSelenium("localhost", 4444, **'*firefox'**, 'http://www.google.fr');
devient
new DefaultSelenium(”hub", 4444, **Chrome on Ubuntu'**, ‘http://www.google.fr ');
new DefaultSelenium("hub", 4444, ** IE 7 on Chinese locale '**, ‘http://www.google.fr ');
new DefaultSelenium("hub", 4444, ** Safari on Quadri-processor '**, ‘http://www.google.fr ');
42
C UBIC T EST ( POUR E CLIPSE )
43
44
C UBIC T EST ( POUR E CLIPSE )
45
46
C UBIC T EST ( POUR E CLIPSE )
47
48
Couche Graphique Watir ?? (Partie 3)
B ROMINE
49
50
• JUnit Report
• TestNG Report
• ReportNG
• TestNG-xslt
• Python
• HTMLTestRunner
• Ruby
• RSpec Report
Ou : utiliser Bromine !
B ROMINE
51
Application under tests
Managers
Définissent les tests requis et les scénarios de tests Consultent les résultats
Testers
Upload et lancent les tests Consultent les résultats
52
• Upload de tests
• Tests multi navigateurs & OS en un click
• RCs sous forme de Nodes (sans GRID)
• Logs des résultats
• Groupes ó Projets
• Plugins
SELENIUM : B ILAN
53
54
de bases
Tests multi plateformes/OS Approche
projet
Couche graphique
de Ruby
W ATIR
55
Open source
Communauté active et grandissante Ruby
Multi plateforme / OS
"Powerfull"
"easy to use"
"beautifully lightweight"
56
Automated testing that doesn’t hurt
W ATIR
#sudo gem install xxxxxxxx 57
58
Selenium
• Adapté à différents niveaux de besoins
• Multi langages Mon avis :
Watir
• Adapté à un seul un seul niveau de besoin
• « La terre ne s’est pas faite en un jour »
59
Selenium : Compatible avec Spring Roo Des betas coté Selenium…
• Tests sous Android
• Selenium Standalone
(RC + WebDriver en un jar)
• Selenium 2 (WebDriver)
http://code.google.com/p/selenium/downloads/list
60
Le Chat de Philippe Geluck