20080923 04 - Selenium web application testing system

Selenium : Web Application
Testing System
23 septembre 2008
- Fabrice BELLINGARD -
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
Présentation de
Selenium
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 !
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
6Club Qualimétrie : Selenium 23/09/2008
Composant 1 : Selenium IDE
• Démonstration
– Enregistrement
– Customisation
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
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=…
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
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
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
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());
}
}
Mise en place au
niveau projet
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
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 »
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
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
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 ?
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
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 ]
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
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
Pour aller un peu plus
loin…
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']");
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
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
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 ?
28Club Qualimétrie : Selenium 23/09/2008
CubicTest (1/2)
29Club Qualimétrie : Selenium 23/09/2008
CubicTest (2/2)
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
31Club Qualimétrie : Selenium 23/09/2008
Merci pour votre attention !
–
Questions / Réponses
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
1 of 32

Recommended

20091008 Tests Interaces Web Riches Selenium by
20091008   Tests Interaces Web Riches Selenium20091008   Tests Interaces Web Riches Selenium
20091008 Tests Interaces Web Riches SeleniumGreenIvory
1K views31 slides
Selenium by
SeleniumSelenium
SeleniumIlhem Daoudi
648 views11 slides
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet by
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetNormandie Web Xperts
2.1K views19 slides
Tests ihm automatises avec selenium by
Tests ihm automatises avec seleniumTests ihm automatises avec selenium
Tests ihm automatises avec seleniumsojavawest
10.4K views24 slides
Allons plus loin avec Selenium by
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec SeleniumSOAT
1.3K views31 slides
Selenium Tutorial Java by
Selenium Tutorial  JavaSelenium Tutorial  Java
Selenium Tutorial JavaAhmed HARRAK
414 views36 slides

More Related Content

What's hot

Maven by
MavenMaven
MavenXavier Carpentier
659 views18 slides
Play Framework by
Play FrameworkPlay Framework
Play FrameworkArmaklan
1.3K views26 slides
Netbeans Install by
Netbeans InstallNetbeans Install
Netbeans InstallDghaies Jihed , PSM I Ⓡ
503 views3 slides
Suivi de qualité PIC afup2010 by
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Gabriele Santini
616 views46 slides
Selenium WebDriver avec Java by
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java Ahmed HARRAK
246 views49 slides
JENKINS_OWF11_OSDC_PARIS20110924 by
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
1.6K views34 slides

What's hot(20)

Play Framework by Armaklan
Play FrameworkPlay Framework
Play Framework
Armaklan1.3K views
Selenium WebDriver avec Java by Ahmed HARRAK
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java
Ahmed HARRAK246 views
Tech Days Spring Intégration by Arrow-Institute
Tech Days Spring IntégrationTech Days Spring Intégration
Tech Days Spring Intégration
Arrow-Institute1.1K views
Intégration Continue PHP avec Jenkins CI by Hugo Hamon
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
Hugo Hamon9.1K views
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web by Frédéric Harper
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Frédéric Harper961 views
Les nouveautés de Visual Studio 11 by Microsoft
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
Microsoft434 views
20081113 - Nantes Jug - Apache Maven by Arnaud Héritier
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
Arnaud Héritier1.2K views
Workshop Spring - Session 5 - Spring Integration by Antoine Rey
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
Antoine Rey10.8K views
Présentation Maven by SOAT
Présentation MavenPrésentation Maven
Présentation Maven
SOAT4.3K views
Qualité Logiciel - Outils Open Source pour Java et Web by Christophe Rochefolle
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
AT2010 Principes Integration Continue by Normandy JUG
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
Normandy JUG734 views
Octo Technology - Refcard Tests Web front-end by François Petitit
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
François Petitit1.6K views

Similar to 20080923 04 - Selenium web application testing system

La gouvernance, ou comment rapprocher les équipes de développement et d'infra... by
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
377 views36 slides
20111004 05 - Présentation Squash by
20111004 05 - Présentation Squash20111004 05 - Présentation Squash
20111004 05 - Présentation SquashLeClubQualiteLogicielle
490 views12 slides
Cerberus Testing by
Cerberus TestingCerberus Testing
Cerberus TestingCIVEL Benoit
1.7K views28 slides
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft by
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
2.8K views36 slides
What's Next Replay - IC / Jenkins by
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
917 views47 slides
Automatisation des tests - objectifs et concepts - partie 2 by
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
2.4K views48 slides

Similar to 20080923 04 - Selenium web application testing system(20)

La gouvernance, ou comment rapprocher les équipes de développement et d'infra... by PimpMySharePoint
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
PimpMySharePoint377 views
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft by Christophe HERAL
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
Christophe HERAL2.8K views
What's Next Replay - IC / Jenkins by ZenikaOuest
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
ZenikaOuest917 views
Automatisation des tests - objectifs et concepts - partie 2 by Christophe Rochefolle
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
Industrialisation des développements logiciels by Sylvain Leroy
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
Sylvain Leroy1.9K views
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf by qsdqsd4
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
qsdqsd412 views
What’s Next Replay! Lyon 2011 - G. Darmont by Zenika
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
Zenika1.5K views
Industrialisez vos projets Php by ALTER WAY
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
ALTER WAY3.6K views
Formation Extreme Programming, Tests unitaires, travail collaboratif by kemenaran
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
kemenaran3.1K views
SharePoint 2010 & Team Foundation Server by Philippe Sentenac
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation Server
Philippe Sentenac1.5K views

More from LeClubQualiteLogicielle

20171122 03 - Les tests de performance en environnement DevOps by
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOpsLeClubQualiteLogicielle
2.3K views30 slides
20171122 04 - Automatisation - formation et certifications by
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certificationsLeClubQualiteLogicielle
764 views37 slides
20171122 01 - REX : Intégration et déploiement continu chez Engie by
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
1.1K views30 slides
20171122 02 - Engage developers to use better coding practices by
20171122 02 - Engage developers to use better coding practices20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practicesLeClubQualiteLogicielle
269 views21 slides
20171122 - Accueil Club Qualité Logicielle by
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle LeClubQualiteLogicielle
415 views12 slides
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des... by
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...LeClubQualiteLogicielle
460 views23 slides

More from LeClubQualiteLogicielle(20)

20171122 03 - Les tests de performance en environnement DevOps by LeClubQualiteLogicielle
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
20171122 01 - REX : Intégration et déploiement continu chez Engie by LeClubQualiteLogicielle
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des... by LeClubQualiteLogicielle
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20140410 - Cartographie applicative multi-technologies et analyse d'impact by LeClubQualiteLogicielle
20140410 - Cartographie applicative multi-technologies et analyse d'impact20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie by LeClubQualiteLogicielle
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu... by LeClubQualiteLogicielle
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a... by LeClubQualiteLogicielle
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e... by LeClubQualiteLogicielle
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 04 - Tests d'integration et virtualisation - La vision IBM by LeClubQualiteLogicielle
20130113 04 - Tests d'integration et virtualisation - La vision IBM20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130523 06 - The mathematics the way algorithms think / the mathematics the ... by LeClubQualiteLogicielle
20130523 06 - The mathematics the way algorithms think / the mathematics the ...20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test by LeClubQualiteLogicielle
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test

20080923 04 - Selenium web application testing system

  • 1. Selenium : Web Application Testing System 23 septembre 2008 - Fabrice BELLINGARD -
  • 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
  • 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. 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. 6Club Qualimétrie : Selenium 23/09/2008 Composant 1 : Selenium IDE • Démonstration – Enregistrement – Customisation
  • 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. 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. 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. 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. 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. 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. Mise en place au niveau projet
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Pour aller un peu plus loin…
  • 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. 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. 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. 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. 28Club Qualimétrie : Selenium 23/09/2008 CubicTest (1/2)
  • 29. 29Club Qualimétrie : Selenium 23/09/2008 CubicTest (2/2)
  • 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. 31Club Qualimétrie : Selenium 23/09/2008 Merci pour votre attention ! – Questions / Réponses
  • 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