Réunion technique


 Selenium
Oui mais non ...




                   réunion technique
                           05/03/2010
                                    2
Stop au massacre !


• Coupling is the single greatest problem in large
    software systems.
• Toujours penser :
 ●
     Qu'on voudra utiliser cette classe dans un contexte
     différent (en CLI par exemple !)
 ●
     Que si, sur le moment c'est pénible, les chatons t'en
     remercient




                                                     réunion technique
                                                             05/03/2010
                                                                      3
N'introduisez pas de dépendances


• Non vraiment …
• Sinon, au plus simple
 ●
     Injection dans le constructeur
 ●
     Injection sur certaines méthodes
 ●
     Notifiez un événement
 ●
     Parlons en …




                                        réunion technique
                                                05/03/2010
                                                         4
Point boulet direct !




                        réunion technique
                                05/03/2010
                                         5
En fait … Epic Fail !




                        réunion technique
                                05/03/2010
                                         6
C'est mieux !




                réunion technique
                        05/03/2010
                                 7
En plus on t'aide !


• Dans les contrôleurs
 ●
     $this->getContext()
 ●
     $this->getPmsipilotContext()
• Dans les formulaires étendant BaseForm
 ●
     $this->getValidUser()
 ●
     $this->getValidContext()




                                           réunion technique
                                                   05/03/2010
                                                            8
Tests unitaires


• Fatalement on peut les faire sur du code
    faiblement couplé
• Face à un bug ou une évol d'une classe
 ●
     Ecrire un test validant le comportement voulu
 ●
     Faire le dev
• != tests fonctionnels
• En général c'est tout simple




                                                     réunion technique
                                                             05/03/2010
                                                                      9
Tests unitaires




                  réunion technique
                          05/03/2010
                                  10
Tests unitaires


• On peut tester :
 ●
     le retour de fonctions
 ●
     Le type des objets
 ●
     Le lancement d'exception
 ●
     ...
• Cf Adrien
• Cf test/unit




                                réunion technique
                                        05/03/2010
                                                11
Les tests chez PMSIpilot


• Tests unitaires
 ●
     Bas niveau
 ●
     Fonctionnement des classes
 ●
     Comportements attendus et effets de bord
• Tests fonctionnels
 ●
     Tester les données, les workflows
 ●
     Parcourir le logiciel
• Tests d'interfaces
 ●
     Tester le JS, la CSS
 ●
     Sur différents navigateurs


                                                réunion technique
                                                        05/03/2010
                                                                12
Selenium


•   Un framework de test en Javascript (fear !)
•   Conçu pour tester les interfaces
•   Pour gérer les différences entre les navigateurs
•   http://seleniumhq.org/projects/ide/




                                             réunion technique
                                                     05/03/2010
                                                             13
Test suite


• OMG c'est hachetéheumelle !
• web/selenium/TestSuite_PMSIpilot.html




                                          réunion technique
                                                  05/03/2010
                                                          14
Ecrire un test
• MERILESTFOU c'est toujours du hachetéheumelle




                                     réunion technique
                                             05/03/2010
                                                     15
Ecrire un test

• Une instruction
 ●
     Commande
 ●
     Cible
 ●
     Valeur
• Recherche / manip sur des éléments
 ●
     Facile pour les formulaires et les liens
 ●
     Xpath est ton ami pour le reste (ou d'autres trucs)
 ●
     Merci firebug




                                                     réunion technique
                                                             05/03/2010
                                                                     16
Ecrire un test




                 réunion technique
                         05/03/2010
                                 17
Commandes et assertions


•   open
•   click/clickAndWait
•   verifyTitle/assertTitle
•   verifyTextPresent
•   verifyElementPresent
•   verifyText
•   verifyTable
•   waitForPageToLoad
•   waitForElementPresent

                              réunion technique
                                      05/03/2010
                                              18
Démo




       réunion technique
               05/03/2010
                       19
Firefox … ça roule




                     réunion technique
                             05/03/2010
                                     20
IE 7 .. fail !




                 réunion technique
                         05/03/2010
                                 21
ROADMAP


• /pmsipilot/
• HUDSON
 ●
     http://wiki.hudson-
     ci.org/display/HUDSON/Selenium+Plugin




                                             réunion technique
                                                     05/03/2010
                                                             22
pmsiPicole




             réunion technique
                     05/03/2010
                             23

Réunion technique PMSIpilot - Mars 2010

  • 1.
  • 2.
    Oui mais non... réunion technique 05/03/2010 2
  • 3.
    Stop au massacre! • Coupling is the single greatest problem in large software systems. • Toujours penser : ● Qu'on voudra utiliser cette classe dans un contexte différent (en CLI par exemple !) ● Que si, sur le moment c'est pénible, les chatons t'en remercient réunion technique 05/03/2010 3
  • 4.
    N'introduisez pas dedépendances • Non vraiment … • Sinon, au plus simple ● Injection dans le constructeur ● Injection sur certaines méthodes ● Notifiez un événement ● Parlons en … réunion technique 05/03/2010 4
  • 5.
    Point boulet direct! réunion technique 05/03/2010 5
  • 6.
    En fait …Epic Fail ! réunion technique 05/03/2010 6
  • 7.
    C'est mieux ! réunion technique 05/03/2010 7
  • 8.
    En plus ont'aide ! • Dans les contrôleurs ● $this->getContext() ● $this->getPmsipilotContext() • Dans les formulaires étendant BaseForm ● $this->getValidUser() ● $this->getValidContext() réunion technique 05/03/2010 8
  • 9.
    Tests unitaires • Fatalementon peut les faire sur du code faiblement couplé • Face à un bug ou une évol d'une classe ● Ecrire un test validant le comportement voulu ● Faire le dev • != tests fonctionnels • En général c'est tout simple réunion technique 05/03/2010 9
  • 10.
    Tests unitaires réunion technique 05/03/2010 10
  • 11.
    Tests unitaires • Onpeut tester : ● le retour de fonctions ● Le type des objets ● Le lancement d'exception ● ... • Cf Adrien • Cf test/unit réunion technique 05/03/2010 11
  • 12.
    Les tests chezPMSIpilot • Tests unitaires ● Bas niveau ● Fonctionnement des classes ● Comportements attendus et effets de bord • Tests fonctionnels ● Tester les données, les workflows ● Parcourir le logiciel • Tests d'interfaces ● Tester le JS, la CSS ● Sur différents navigateurs réunion technique 05/03/2010 12
  • 13.
    Selenium • Un framework de test en Javascript (fear !) • Conçu pour tester les interfaces • Pour gérer les différences entre les navigateurs • http://seleniumhq.org/projects/ide/ réunion technique 05/03/2010 13
  • 14.
    Test suite • OMGc'est hachetéheumelle ! • web/selenium/TestSuite_PMSIpilot.html réunion technique 05/03/2010 14
  • 15.
    Ecrire un test •MERILESTFOU c'est toujours du hachetéheumelle réunion technique 05/03/2010 15
  • 16.
    Ecrire un test •Une instruction ● Commande ● Cible ● Valeur • Recherche / manip sur des éléments ● Facile pour les formulaires et les liens ● Xpath est ton ami pour le reste (ou d'autres trucs) ● Merci firebug réunion technique 05/03/2010 16
  • 17.
    Ecrire un test réunion technique 05/03/2010 17
  • 18.
    Commandes et assertions • open • click/clickAndWait • verifyTitle/assertTitle • verifyTextPresent • verifyElementPresent • verifyText • verifyTable • waitForPageToLoad • waitForElementPresent réunion technique 05/03/2010 18
  • 19.
    Démo réunion technique 05/03/2010 19
  • 20.
    Firefox … çaroule réunion technique 05/03/2010 20
  • 21.
    IE 7 ..fail ! réunion technique 05/03/2010 21
  • 22.
    ROADMAP • /pmsipilot/ • HUDSON ● http://wiki.hudson- ci.org/display/HUDSON/Selenium+Plugin réunion technique 05/03/2010 22
  • 23.
    pmsiPicole réunion technique 05/03/2010 23