Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20080923 04 - Selenium web application testing system

88 views

Published on

Selenium web application testing system

Published in: Software
  • Be the first to comment

  • Be the first to like this

20080923 04 - Selenium web application testing system

  1. 1. Selenium : Web Application Testing System 23 septembre 2008 - Fabrice BELLINGARD -
  2. 2. 2Club Qualimétrie : Selenium 23/09/2008 Plan • Démonstration • Présentation de Selenium – Principe – Composants – Exemple de code • Mise en place au niveau projet – Selenium : • pour qui ? • pour quels types de tests ? • comment ? – Utilisation de Maven pour le processus d’intégration continue – Selenium et la qualimétrie • Pour aller plus loin – Quelques conseils et limitations – Fonctionnalités avancées
  3. 3. Présentation de Selenium
  4. 4. 4Club Qualimétrie : Selenium 23/09/2008 Principe 3 – Lancer les tests ! – Ils s’exécutent dans le navigateur choisi – Grâce à Selenium Core 2 – Démarrer le serveur Selenium – Avec Selenium RC 1 – Enregistrer une série de tests – Avec Selenium IDE – … ou alors écrire les tests à la main !
  5. 5. 5Club Qualimétrie : Selenium 23/09/2008 Composant 1 : Selenium IDE • Plugin Firefox permettant de : – Enregistrer une séquence d’actions sur une application Web – Customiser l’enregistrement (XPath, valeurs input, timeout…) • Fournit l’auto-complétion pour les commandes – Le rejouer – Sauvegarder les scénarios sous différents langages : • HTML, Java, C#, PHP, Perl, Python, Ruby • Agnostique par rapport à la technologie serveur – Ne fait que « naviguer » sur des pages Web • Evite d’avoir à écrire les tests à la main
  6. 6. 6Club Qualimétrie : Selenium 23/09/2008 Composant 1 : Selenium IDE • Démonstration – Enregistrement – Customisation
  7. 7. 7Club Qualimétrie : Selenium 23/09/2008 Composant 2 : Selenium RC • Constitué de 2 parties : – lib clientes : transformation des scénarios (sauvegardés dans un langage particulier) en commandes Selenium – serveur : programme qui lance le navigateur et lui sert proxy • 2 modes : normal ou interactif Test JUnit Test nUnit Test PHP Test Ruby Lib Java Lib .NET Lib PHP Lib Ruby Selenium RC Server Navigateur Application Web Selenese
  8. 8. 8Club Qualimétrie : Selenium 23/09/2008 Composant 2 : Selenium RC • Démonstration – Mode interactif : • Lancer le serveur : – java -jar selenium-server.jar -interactive • Ouvrir Opera sur Squale as a Service : – cmd=getNewBrowserSession&1=*opera&2=http://saas.qualixo.com/ demo-squale/ – cmd=open&1=http://saas.qualixo.com/demo-squale/&sessionId=…
  9. 9. 9Club Qualimétrie : Selenium 23/09/2008 Composant 3 : Selenium Core • Moteur permettant de manipuler les navigateurs pour exécuter les tests – Utilise un langage : Selenese • Locators : id, dom, xpath, … • Actions : open, select, check, submit, … • Assertions : verify<xxx>, assert<xxx>, waitFor<xxx>, … – Utilise JS et iFrame pour s’incorporer dans le navigateur – Supporte une large gamme de navigateurs • Firefox 2 & 3, IE 6 & 7, Safari 2 & 3, Opera 8 & 9 • Livré avec Selenium RC
  10. 10. 10Club Qualimétrie : Selenium 23/09/2008 Composant 3 : Selenium Core • Démonstration – Le code Selenese en HTML – L’exécution d’un test dans le navigateur
  11. 11. 11Club Qualimétrie : Selenium 23/09/2008 Selenium : pour résumer • Le processus est très simple : 1. Écrire le test 2. Démarrer le serveur Selenium RC 3. Lancer le test • Technologie : – Multi OS : Windows, Unix/Linux, Mac – Multi navigateur : IE, FF, Opera, Safari – Multi plateforme technologique • tant qu’il s’agit d’une application Web – Multi langage d’écriture de tests: Java, C#, PHP, Perl, Ruby, Python, … • Simple et très puissant
  12. 12. 12Club Qualimétrie : Selenium 23/09/2008 Exemple de code JUnit import com.thoughtworks.selenium.SeleneseTestCase; public class SqualeAASTest extends SeleneseTestCase { public void setUp() throws Exception { setUp("http://saas.qualixo.com/", "*firefox"); } public void testPlay() throws Exception { selenium.open("/demo-squale/"); selenium.waitForPageToLoad("10000"); selenium.type("login", "user"); selenium.type("pass", "user"); selenium.click("td1"); selenium.waitForPageToLoad("30000"); selenium.click("link=squale"); selenium.waitForPageToLoad("30000"); selenium.click("link=squaleCore"); selenium.waitForPageToLoad("30000"); selenium.click("link=Maintenabilité"); selenium.waitForPageToLoad("30000"); String noteComprehension = selenium .getText("//a[@onclick="javascript:F_MyOngletSelectionner( 'criteriumdetail', 'rule.comprehension')"]/../../td[2]"); assertEquals("2.3", noteComprehension.trim()); } }
  13. 13. Mise en place au niveau projet
  14. 14. 14Club Qualimétrie : Selenium 23/09/2008 Selenium : pour qui ? • Nécessite des connaissances plus ou moins approfondies en : – HTML – DOM – XPath – Langage de développement • Cible : plutôt technique – Maîtrise d’œuvre • Développeur • Testeur – Éventuellement assistance à maîtrise d’ouvrage • Une des cibles initiales de Selenium… Tests plus poussés
  15. 15. 15Club Qualimétrie : Selenium 23/09/2008 Selenium : pour quel type de test ? • Niveaux de tests (définis selon l’ISTQB) – Unitaire ? (= un composant fonctionne bien unitairement) – D’intégration ? (= les composants fonctionnent bien entre eux) – Système ? (= l’application fonctionne bien sur l’infrastructure cible) – D’acceptance ? (= l’application répond au besoin) • Caractéristiques de tests (non exhaustif) – Performance ? (= vérification des performances annoncées dans les spécifications) – Robustesse ? (= vérification de la résistance aux erreurs / problèmes) – Vulnérabilité ? (= vérification de sécurité) – Fonctionnels ? (= validation des fonctions « métier ») • Tests en mode quasi « boîte noire »
  16. 16. 16Club Qualimétrie : Selenium 23/09/2008 Selenium : comment ? • Mise en place simple : – Pour évaluer et prendre en main la technologie Selenium – Principe : • Application déployée sur un serveur d’intégration • Développer les tests avec Selenium IDE (en HTML par ex.) • Les rejouer à la main Développeur Testeur Serveur d’intégration Définition des tests Exécution des tests Développement et déploiement IDE RC
  17. 17. 17Club Qualimétrie : Selenium 23/09/2008 Selenium : comment ? • Mise en place dans un processus d’intégration continue – Les tests sont sauvegardés en configuration – Ils sont rejoués automatiquement par une plate-forme d’intégration continue Développeur Testeur Serveur d’intégration Définition des tests 2- Exécution des tests Plate-forme d’intégration continue Référentiel source IDE RC Développement Mise en configuration des tests 1- Génération et déploiement de l’application
  18. 18. 18Club Qualimétrie : Selenium 23/09/2008 Selenium en mode IC (Intégration Continue) • Avantages : inhérents à l’intégration continue – Détection précoce des bugs – Assure la non-régression • Points à gérer : – Plate-forme d’intégration sans couche graphique : • Lancement d’un navigateur ? – Initialisation de l’environnement d’exécution : • Déploiement de l’application ? – Comment déployer automatiquement et quand ? • Quel serveur Web ? – Tests seulement d’intégration ou plus orientés système ? • Quelle base de données ? – Base dédiée pour les tests avec Selenium ?
  19. 19. 19Club Qualimétrie : Selenium 23/09/2008 Selenium et l’IC : Maven à votre secours ! • Plugin Maven pour Selenium : – Arrêt / relance de Selenium RC – Démarrage optionnel d’un serveur X virtuel (Xvfb) Développeur Testeur Définition des tests Référentiel source IDE Serveur d’intégration Plate-forme d’intégration continue RC 1- Compilation, exécution des tests unitaires, packaging de l’application 2- Déploie l’application, démarre Selenium RC et lance les tests d’intégration 3- Valide le build
  20. 20. 20Club Qualimétrie : Selenium 23/09/2008 Selenium et Maven : les phases d’un build • test : – exécute les tests unitaires • Si KO : possibilité de faire échouer le build • package : – génère le composant ou l’application • pre-integration-test : – [ démarre la BDD et l’initialise ] – [ démarre le serveur ] – déploie l’application – démarre Selenium RC • integration-test : – exécute les tests d’intégration • Si KO : possibilité de faire échouer le build • pre-integration-test – arrête Selenium RC – [ arrête le serveur ] – [ arrête la BDD ]
  21. 21. 21Club Qualimétrie : Selenium 23/09/2008 Selenium et Maven : démonstration • Au départ de cette présentation, pour exécuter les tests d’intégration : 1. Démarrer Selenium RC 2. Exécuter les tests • Maintenant, avec Maven : – « mvn install » – … et c’est tout ! • Démonstration : – Avec un build KO
  22. 22. 22Club Qualimétrie : Selenium 23/09/2008 Selenium et la qualimétrie • Tests ? Couverture de test ! – En Java : • JUnit + Cobertura / Emma • Maven sait générer un rapport aux formats HTML et XML ! • Principe : vérifier que le code complexe est bien couvert par les tests d’intégration – Mise en relation des métriques : • De couverture de test • D’indication de la complexité : v(g), ev(g), CBO, … • Intégration dans le modèle qualimétrique
  23. 23. Pour aller un peu plus loin…
  24. 24. 24Club Qualimétrie : Selenium 23/09/2008 Quelques conseils • Plus le HTML de l’application est bien programmé… – … plus l’écriture de tests est facilite – … plus les tests sont résistants aux changements « cosmétiques » des pages Ex. : utilisation abondant d’identifiant dans les balises HTML • Test d’interfaces AJAX : – Difficultés à cause de l’asynchronisme • Le résultat d’une action peut arriver n’importe quand ! – Penser à utiliser les « waitFor<xxx> » avant de faire des tests / assertions selenium.getText("/html/body/div[3]/div[4]/div/div[2]/table/tbo dy/tr/td/table[2]/tbody/tr/td[2]"); selenium.getText("//td[@id='totalFacture']");
  25. 25. 25Club Qualimétrie : Selenium 23/09/2008 Limitations à connaître • Selenium ne sait pas interagir avec : – Certaines technologies Web • Ex. : applet, Flash, ActiveX Impossibilité d’enregistrer des actions sur ces éléments – Certains formats de fichiers • Ex. : PDF, Excel Impossibilité de vérifier des résultats dans le contenu de ces fichiers • La maintenabilité des tests diminue facilement au fur et à mesure du temps – Évolution liée à la qualité du code HTML – Pas d’outil qui sache répercuter une modification de page sur les tests qui lui correspondent Le coût de test Selenium peut augmenter rapidement
  26. 26. 26Club Qualimétrie : Selenium 23/09/2008 Fonctionnalités avancées (1/2) • Selenium Grid – Permet de lancer des tests Selenium : • en parallèle, • sur plusieurs machines, • en environnement hétérogène • le tout sur la même application, • et de manière simple. – Avantages : • Performances • Temps de test réduit – Utilisation • Editeurs de solutions • Cloud Computing – Ex. : Amazon EC2 Source image : http://selenium-grid.openqa.org/how_it_works.html
  27. 27. 27Club Qualimétrie : Selenium 23/09/2008 Fonctionnalités avancées (2/2) • CubicTest – Éditeur de tests Selenium sous forme de plugin Eclipse – Fonctionnalités : • Couche d’abstraction sous forme de modèle : – Pages / états – Actions / transitions • Visualisation et édition graphique des scénarios de test • Enregistrement de tests « à la Selenium IDE » – Remplacement du plugin Firefox – Avantages : • Fonctionnalités intégrées ensemble dans Eclipse – Évolutions potentielles intéressantes • Lien entre le modèle et le code ?
  28. 28. 28Club Qualimétrie : Selenium 23/09/2008 CubicTest (1/2)
  29. 29. 29Club Qualimétrie : Selenium 23/09/2008 CubicTest (2/2)
  30. 30. 30Club Qualimétrie : Selenium 23/09/2008 Résumé / conclusion • Idées forces pour Selenium : – Automatisation de test d’applications Web – Agnostique en terme de technologie serveur – Plutôt orienté tests d’intégration car encore relativement technique – Bien intégré dans la stack Java avec JUnit et Maven – Utilisable en mode intégration continue
  31. 31. 31Club Qualimétrie : Selenium 23/09/2008 Merci pour votre attention ! – Questions / Réponses
  32. 32. 32Club Qualimétrie : Selenium 23/09/2008 Références • Selenium : – http://selenium.openqa.org • ISTQB : – International Software Testing Qualifications Board – http://www.istqb.org • Canoo WebTest : – WebTest : http://webtest.canoo.com

×