SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Tests d’interfaces web
                                           avec Selenium


           Frédéric BONJOUR (développeur web)              www.greenivory.com
mardi 27 octobre 2009
Présentation


                        • Frédéric BONJOUR (si, si, c’est mon nom !)
                          ‣ développeur web

                          ‣ interfaces riches - ergonomie

                        • GreenIvory - sponsor du DeveloperForum
                          ‣ Haguenau (France) et Durham (USA) - 12 personnes

                          ‣ Mashup (dynamisation de sites web)
                            e-réputation (mesure de réputation en ligne)
                            Réseaux sociaux d’entreprise
                          ‣ Technologies : Java, Hibernate, GWT/GXT


mardi 27 octobre 2009
Sommaire



                          Introduction
                        1. Principe
                        2. Selenium RC (Remote Control)
                        3. Mise en place des tests
                        4. Maintenance des tests
                        5. Comment faire avec AJAX ?
                          Conclusion


mardi 27 octobre 2009
Introduction




                         • Différents types de tests
                          ‣ tests unitaires

                          ‣ tests d’intégration

                          ‣ tests d’interfaces




mardi 27 octobre 2009
Introduction




                         • Tests unitaires
                          ‣ vérifient le fonctionnement de briques logicielles simples

                          ‣ bas niveaux : méthodes, classes

                          ‣ ➜ JUnit




mardi 27 octobre 2009
Introduction




                         • Tests d’intégration
                          ‣ vérifient que les composants de l’application s’intègrent bien les
                            uns avec les autres
                          ‣ vérifient le fonctionnement global et la cohérence d’un système

                          ‣ ➜ JUnit, Maven




mardi 27 octobre 2009
Introduction




                         • Tests d’interfaces
                          ‣ vérifient que l’interface répond correctement aux actions de
                            l’utilisateur
                            - présence des éléments interactifs (contrôles)
                            - affichage correct (messages)
                          ‣ ne vérifie pas si l’affichage est visuellement correct

                          ‣ ➜ Selenium | http://seleniumhq.org/



mardi 27 octobre 2009
Tests d’interfaces web
                              1. Principe




mardi 27 octobre 2009
1. Principe

                                      Réseau local
                   Poste de                                                                         Serveur de tests
                développement



                                 Envoi de messages                                               Pilote le navigateur

                                                                                                 Effectue des tests

                Test case                                  rs
               (code Java)                            s ve                Application à tester
                                                                              Selenium RC
                                                         lt at            (dans un navigateur)
           client Selenium
                                                    és
                                                       u                r serveur Selenium
                                                s r               it eu
                                          ie
                                             le              l ’éd
                                      vo               ou
                                    en              le
                                  R             so
                                             on
                                       l ac




mardi 27 octobre 2009
2. Selenium RC




mardi 27 octobre 2009
2. Selenium RC (Remote Control)




                        • Serveur
                        • Reçoit des messages du test case via le réseau
                        • Pilote un navigateur (Firefox, Safari, Internet Explorer)
                          Simule des actions de l’utilisateur
                        • Teste la présence d’éléments dans le DOM
                                    Document Object Model
                                    Hiérarchie des objets composant un document HTML



mardi 27 octobre 2009
Démo : Selenium RC




mardi 27 octobre 2009
3. Mise en place des tests




mardi 27 octobre 2009
3. Mise en place des tests




                          Avoir une application web à tester !
                          Un super formulaire d’inscription
                          Ecrit en GWT/GXT : utilise AJAX

                        1. Rédiger le test case
                        2. Intégrer le test case dans un projet Java
                        3. Lancer le test case



mardi 27 octobre 2009
3.1. Rédiger le test case
                           package com.greenivory.devforum5.uitest;

                           import com.thoughtworks.selenium.SeleneseTestCase;

                           public class SubscriptionTest extends SeleneseTestCase {
                                                               Simule la saisie du texte « Fred »
                   	 public void setUp() throws Exception {    dans le champ de saisie identifié
                   	 	 setUp("http://localhost:81/", "*firefox");        « x-auto-10 »
                   	 	 selenium.setSpeed("1000");                 ainsi que la saisie du texte
                   	 }                                           « f.bonjour@greenivory.com »
            Demande le chargement de l’URL indiquée            dans le champ de saisie identifié
                   	 public void testSubscription() throws Exception { « x-auto-11 »
                           	   	   selenium.open("/formations/selenium/");
                           	   	   selenium.type("x-auto-10", "Fred");
                           	   	   selenium.type("x-auto-11", "f.bonjour@greenivory.com");
                                                                                Simule un clic sur le bouton
                           	   	   selenium.click("//button[@type=‘submit’]");
                                   selenium.click("//button[@type='submit']");
                                                                                  de validation « submit »
                           	   	   verifyTrue(selenium.isTextPresent("Super"));
                           	   }
                                           Vérifie que le texte « Super » est bien
                           }
                                                 présent dans la page web
mardi 27 octobre 2009
On ne va quand même pas
                          écrire ça à la main ?...




mardi 27 octobre 2009
3.1. Rédiger le test case avec Selenium IDE


                         • Selenium IDE
                          ‣ Module pour Firefox

                          ‣ Enregistre les actions de l’utilisateur

                          ‣ Exporte le cas d’utilisation sous forme
                            de code Java, PHP, Ruby, ...




mardi 27 octobre 2009
Démo : Selenium IDE




mardi 27 octobre 2009
3.2. Intégrer le test case dans un projet Java




       •      Création du source folder « test »
       •      Création du package
       •      Création de la classe test case
                                                         Client Selenium
                                                       (SeleneseTestCase)




mardi 27 octobre 2009
3.3. Lancer le test case


                             Clic droit sur la classe test case : Run As ➜ JUnit Test




mardi 27 octobre 2009
Mise en place des tests
                                 En vrai.




mardi 27 octobre 2009
3. Familles de commandes Selenium

                           ‣   verify* / verifyNot*
                               Vérifie des éléments dans la page webattendu
                               verifyTextPresent, verifyValue, ...
                           ‣   waitFor* (particulièrement avec AJAX)
                               Attend le changement de l’élément
                               waitForVisible, waitForAttribute, ...
                           ‣   mouse*
                               Simulation de la souris (déplacements, boutons, ...)
                               mouseDown, mouseMove, ...
                           ‣   store* (avancé)
                               Stocke des valeurs pour utilisation ultérieure
                           ‣   click*
                               click, clickAndWait, clickAt, ...


mardi 27 octobre 2009
3. Commandes Selenium les plus utilisées
                           ‣   open
                               Charge une URL
                           ‣   click / clickAndWait
                               Effectue un clic / puis attend un chargement de la page
                           ‣   verifyTitle
                               Vérifie que le titre est celui attendu
                           ‣   verifyTextPresent
                               Vérifie qu’un morceau de texte est présent dans la page
                           ‣   verifyElementPresent
                               Vérifie qu’un élément est présent dans la page
                           ‣   verifyText
                               Vérifie qu’un élément contient le texte indiqué
                           ‣   verifyValue
                           ‣   Vérifie qu’un contrôle (champ de saisie) a la valeur indiquée

mardi 27 octobre 2009
4. Maintenance des tests

                           Cas d’un problème fréquent...




mardi 27 octobre 2009
4. Maintenance des tests




                         • Ajout, modification, suppression de fonctionnalités
                          ➜ mettre à jour les tests en conséquence
                          (comme tous les tests...)
                         • Problème de l’identification des éléments
                          ➜ identifier sans équivoque les éléments
                          manipulés par l’utilisateur (et donc par Selenium RC)




mardi 27 octobre 2009
4. Identification des éléments


                         • Par ID
                          Exemple : emailField
                         • Par nom (attribut name), pour les éléments nommés
                          Exemple : email
                         • Par XPath
                          Exemple : xpath=//button[@type=‘submit’]
                         • Par sélecteur CSS (recommandé)
                          Exemple : css=#mainToolbar .createButton
                         • Plus d’informations : Locating Elements

mardi 27 octobre 2009
5. Comment faire avec
                              AJAX ?




mardi 27 octobre 2009
5. Comment faire avec Ajax ?




                         • verifyTextPresent se moque de la visibilité des éléments
                           ➜ ne pas créer les messages utilisateur à l’avance, en ne
                           jouant que sur leur visibilité
                         • utiliser les commandes waitFor :
                           ➜ waitForAttribute, waitForVisible (exemple)




mardi 27 octobre 2009
Conclusion




mardi 27 octobre 2009
Conclusion


                        • Comme tous les tests, ils...
                          ‣ sont très importants !

                          ‣ permettent un évolution mieux contrôlée des logiciels

                        • Mais, comme tout programme, ils sont assez difficiles à
                          maintenir
                        • AJAX ➜ complexité des tests d’interfaces
                          ‣ peut amener à modifier (légèrement ?) l’interface pour la rendre
                            « Selenium-friendly »

                        • Des tests mal faits ou non maintenus ne servent à rien !
mardi 27 octobre 2009
Merci de votre attention !
                                    Thank you!
                                   Vielen Dank!
                                  Muchas gracias!
                                   Grazie mille!
                                    !!"#$ ‫('&ا‬
           GreenIvory FRANCE                         GreenIvory USA
           www.greenivory.fr                         www.greenivory.com
           info@greenivory.fr                       info@greenivory.com
           +33 (0)9 50 53 10 34                         +1 775-855-3598
mardi 27 octobre 2009

Más contenido relacionado

La actualidad más candente

Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
laurent_opnworks
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Emmanuel Hugonnet
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
Klee Group
 

La actualidad más candente (20)

Mon environnement de travail a-t-il encore un avenir ?
Mon environnement de travail a-t-il encore un avenir ?Mon environnement de travail a-t-il encore un avenir ?
Mon environnement de travail a-t-il encore un avenir ?
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Déploiement d'applications Java EE
Déploiement d'applications Java EEDéploiement d'applications Java EE
Déploiement d'applications Java EE
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Netbeans Install
Netbeans InstallNetbeans Install
Netbeans Install
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
NextCloud
NextCloudNextCloud
NextCloud
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Subversion - Utilisation et bonnes pratiques
Subversion - Utilisation et bonnes pratiquesSubversion - Utilisation et bonnes pratiques
Subversion - Utilisation et bonnes pratiques
 

Similar a 20091008 Tests Interaces Web Riches Selenium

DevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianDevoxxFR 2013 - Arquillian
DevoxxFR 2013 - Arquillian
Alexis Hassler
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
qsdqsd4
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
Gregory Boissinot
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
CocoaHeads France
 

Similar a 20091008 Tests Interaces Web Riches Selenium (20)

RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
DevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianDevoxxFR 2013 - Arquillian
DevoxxFR 2013 - Arquillian
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-end
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Les tests en PHP
Les tests en PHPLes tests en PHP
Les tests en PHP
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Conformiq
ConformiqConformiq
Conformiq
 

Más de GreenIvory

Más de GreenIvory (6)

Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Devforumfrancois Tonic
Devforumfrancois TonicDevforumfrancois Tonic
Devforumfrancois Tonic
 
Desktop A Franke
Desktop A FrankeDesktop A Franke
Desktop A Franke
 
20091006 Dev Forum Fr 001Introduction à GWT en utilisant AppCase SDK
20091006 Dev Forum Fr 001Introduction à GWT en utilisant AppCase SDK20091006 Dev Forum Fr 001Introduction à GWT en utilisant AppCase SDK
20091006 Dev Forum Fr 001Introduction à GWT en utilisant AppCase SDK
 
Web sémantique
Web sémantiqueWeb sémantique
Web sémantique
 
Agilite Teletravail
Agilite TeletravailAgilite Teletravail
Agilite Teletravail
 

20091008 Tests Interaces Web Riches Selenium

  • 1. Tests d’interfaces web avec Selenium Frédéric BONJOUR (développeur web) www.greenivory.com mardi 27 octobre 2009
  • 2. Présentation • Frédéric BONJOUR (si, si, c’est mon nom !) ‣ développeur web ‣ interfaces riches - ergonomie • GreenIvory - sponsor du DeveloperForum ‣ Haguenau (France) et Durham (USA) - 12 personnes ‣ Mashup (dynamisation de sites web) e-réputation (mesure de réputation en ligne) Réseaux sociaux d’entreprise ‣ Technologies : Java, Hibernate, GWT/GXT mardi 27 octobre 2009
  • 3. Sommaire Introduction 1. Principe 2. Selenium RC (Remote Control) 3. Mise en place des tests 4. Maintenance des tests 5. Comment faire avec AJAX ? Conclusion mardi 27 octobre 2009
  • 4. Introduction • Différents types de tests ‣ tests unitaires ‣ tests d’intégration ‣ tests d’interfaces mardi 27 octobre 2009
  • 5. Introduction • Tests unitaires ‣ vérifient le fonctionnement de briques logicielles simples ‣ bas niveaux : méthodes, classes ‣ ➜ JUnit mardi 27 octobre 2009
  • 6. Introduction • Tests d’intégration ‣ vérifient que les composants de l’application s’intègrent bien les uns avec les autres ‣ vérifient le fonctionnement global et la cohérence d’un système ‣ ➜ JUnit, Maven mardi 27 octobre 2009
  • 7. Introduction • Tests d’interfaces ‣ vérifient que l’interface répond correctement aux actions de l’utilisateur - présence des éléments interactifs (contrôles) - affichage correct (messages) ‣ ne vérifie pas si l’affichage est visuellement correct ‣ ➜ Selenium | http://seleniumhq.org/ mardi 27 octobre 2009
  • 8. Tests d’interfaces web 1. Principe mardi 27 octobre 2009
  • 9. 1. Principe Réseau local Poste de Serveur de tests développement Envoi de messages Pilote le navigateur Effectue des tests Test case rs (code Java) s ve Application à tester Selenium RC lt at (dans un navigateur) client Selenium és u r serveur Selenium s r it eu ie le l ’éd vo ou en le R so on l ac mardi 27 octobre 2009
  • 10. 2. Selenium RC mardi 27 octobre 2009
  • 11. 2. Selenium RC (Remote Control) • Serveur • Reçoit des messages du test case via le réseau • Pilote un navigateur (Firefox, Safari, Internet Explorer) Simule des actions de l’utilisateur • Teste la présence d’éléments dans le DOM Document Object Model Hiérarchie des objets composant un document HTML mardi 27 octobre 2009
  • 12. Démo : Selenium RC mardi 27 octobre 2009
  • 13. 3. Mise en place des tests mardi 27 octobre 2009
  • 14. 3. Mise en place des tests Avoir une application web à tester ! Un super formulaire d’inscription Ecrit en GWT/GXT : utilise AJAX 1. Rédiger le test case 2. Intégrer le test case dans un projet Java 3. Lancer le test case mardi 27 octobre 2009
  • 15. 3.1. Rédiger le test case package com.greenivory.devforum5.uitest; import com.thoughtworks.selenium.SeleneseTestCase; public class SubscriptionTest extends SeleneseTestCase { Simule la saisie du texte « Fred » public void setUp() throws Exception { dans le champ de saisie identifié setUp("http://localhost:81/", "*firefox"); « x-auto-10 » selenium.setSpeed("1000"); ainsi que la saisie du texte } « f.bonjour@greenivory.com » Demande le chargement de l’URL indiquée dans le champ de saisie identifié public void testSubscription() throws Exception { « x-auto-11 » selenium.open("/formations/selenium/"); selenium.type("x-auto-10", "Fred"); selenium.type("x-auto-11", "f.bonjour@greenivory.com"); Simule un clic sur le bouton selenium.click("//button[@type=‘submit’]"); selenium.click("//button[@type='submit']"); de validation « submit » verifyTrue(selenium.isTextPresent("Super")); } Vérifie que le texte « Super » est bien } présent dans la page web mardi 27 octobre 2009
  • 16. On ne va quand même pas écrire ça à la main ?... mardi 27 octobre 2009
  • 17. 3.1. Rédiger le test case avec Selenium IDE • Selenium IDE ‣ Module pour Firefox ‣ Enregistre les actions de l’utilisateur ‣ Exporte le cas d’utilisation sous forme de code Java, PHP, Ruby, ... mardi 27 octobre 2009
  • 18. Démo : Selenium IDE mardi 27 octobre 2009
  • 19. 3.2. Intégrer le test case dans un projet Java • Création du source folder « test » • Création du package • Création de la classe test case Client Selenium (SeleneseTestCase) mardi 27 octobre 2009
  • 20. 3.3. Lancer le test case Clic droit sur la classe test case : Run As ➜ JUnit Test mardi 27 octobre 2009
  • 21. Mise en place des tests En vrai. mardi 27 octobre 2009
  • 22. 3. Familles de commandes Selenium ‣ verify* / verifyNot* Vérifie des éléments dans la page webattendu verifyTextPresent, verifyValue, ... ‣ waitFor* (particulièrement avec AJAX) Attend le changement de l’élément waitForVisible, waitForAttribute, ... ‣ mouse* Simulation de la souris (déplacements, boutons, ...) mouseDown, mouseMove, ... ‣ store* (avancé) Stocke des valeurs pour utilisation ultérieure ‣ click* click, clickAndWait, clickAt, ... mardi 27 octobre 2009
  • 23. 3. Commandes Selenium les plus utilisées ‣ open Charge une URL ‣ click / clickAndWait Effectue un clic / puis attend un chargement de la page ‣ verifyTitle Vérifie que le titre est celui attendu ‣ verifyTextPresent Vérifie qu’un morceau de texte est présent dans la page ‣ verifyElementPresent Vérifie qu’un élément est présent dans la page ‣ verifyText Vérifie qu’un élément contient le texte indiqué ‣ verifyValue ‣ Vérifie qu’un contrôle (champ de saisie) a la valeur indiquée mardi 27 octobre 2009
  • 24. 4. Maintenance des tests Cas d’un problème fréquent... mardi 27 octobre 2009
  • 25. 4. Maintenance des tests • Ajout, modification, suppression de fonctionnalités ➜ mettre à jour les tests en conséquence (comme tous les tests...) • Problème de l’identification des éléments ➜ identifier sans équivoque les éléments manipulés par l’utilisateur (et donc par Selenium RC) mardi 27 octobre 2009
  • 26. 4. Identification des éléments • Par ID Exemple : emailField • Par nom (attribut name), pour les éléments nommés Exemple : email • Par XPath Exemple : xpath=//button[@type=‘submit’] • Par sélecteur CSS (recommandé) Exemple : css=#mainToolbar .createButton • Plus d’informations : Locating Elements mardi 27 octobre 2009
  • 27. 5. Comment faire avec AJAX ? mardi 27 octobre 2009
  • 28. 5. Comment faire avec Ajax ? • verifyTextPresent se moque de la visibilité des éléments ➜ ne pas créer les messages utilisateur à l’avance, en ne jouant que sur leur visibilité • utiliser les commandes waitFor : ➜ waitForAttribute, waitForVisible (exemple) mardi 27 octobre 2009
  • 30. Conclusion • Comme tous les tests, ils... ‣ sont très importants ! ‣ permettent un évolution mieux contrôlée des logiciels • Mais, comme tout programme, ils sont assez difficiles à maintenir • AJAX ➜ complexité des tests d’interfaces ‣ peut amener à modifier (légèrement ?) l’interface pour la rendre « Selenium-friendly » • Des tests mal faits ou non maintenus ne servent à rien ! mardi 27 octobre 2009
  • 31. Merci de votre attention ! Thank you! Vielen Dank! Muchas gracias! Grazie mille! !!"#$ ‫('&ا‬ GreenIvory FRANCE GreenIvory USA www.greenivory.fr www.greenivory.com info@greenivory.fr info@greenivory.com +33 (0)9 50 53 10 34 +1 775-855-3598 mardi 27 octobre 2009