SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Play Framework
Play FrameworkPlay Framework
Play Framework
Armaklan
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010
Gabriele Santini
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
Gregory Boissinot
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
SOAT
 

La actualidad más candente (20)

Maven
MavenMaven
Maven
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Netbeans Install
Netbeans InstallNetbeans Install
Netbeans Install
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010
 
Selenium WebDriver avec Java
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Tech Days Spring Intégration
Tech Days Spring IntégrationTech Days Spring Intégration
Tech Days Spring Intégration
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Une 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 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
 
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
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
Qualité Logiciel - Outils Open Source pour Java et Web
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
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
 

Similar a 20080923 04 - Selenium web application testing system

[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
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
Christophe HERAL
 
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
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
ALTER WAY
 
SharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation Server
Philippe Sentenac
 

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

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...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
20111004 05 - Présentation Squash
20111004 05 - Présentation Squash20111004 05 - Présentation Squash
20111004 05 - Présentation Squash
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
[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
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
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
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
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
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 
20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-end
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
20110125 04 - Présentation Squash
20110125 04 - Présentation Squash20110125 04 - Présentation Squash
20110125 04 - Présentation Squash
 
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
 
SharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation Server
 

Más de 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...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
LeClubQualiteLogicielle
 

Más de LeClubQualiteLogicielle (20)

20171122 03 - Les tests de performance en environnement DevOps
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 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
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
 
20171122 02 - Engage developers to use better coding practices
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 practices
 
20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle
 
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...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle 20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue
 
20140410 - Cartographie applicative multi-technologies et analyse d'impact
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
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...
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...
 
20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test
 
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 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...
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 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 201320130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 2013
 
20130113 04 - Tests d'integration et virtualisation - La vision IBM
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 ...
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 05 - Cyclomatic complexity
20130523 05 - Cyclomatic complexity20130523 05 - Cyclomatic complexity
20130523 05 - Cyclomatic complexity
 
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
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