IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

[Maven + Hudson] Exécution Selenium à distance


Sujet :

Tests et Performance Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Maven + Hudson] Exécution Selenium à distance
    Bonjour,
    nous avons une VM (Virtual Machine) qui tourne sous RedHat sans ServeurX. Sous cette VM, j'ai installé Hudson et Maven 2.
    Nous avons des tests Selenium à exécuter, gros problème aucun navigateur web sur la VM. Est-il possible de paramétrer Maven ou Hudson pour demander l'exécution des tests à distance. Il faudrait que :
    1. Maven déploie le site
    2. Intéroger un serveur windows distant pour exécuter les tests

    Comment exécuter les tests sur le serveur Windows distant ?

    Certes il serait plus facile de déployer Hudson et Maven sur le serveur Windows, mais on a besoin de linux pour d'autres applications.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Aïe. Pas grand monde d'inspiré. Cela dit j'ai un peu avancé sur mon problème

    Ma classe de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package com.testscripts;
     
    import com.thoughtworks.selenium.*;
    import org.testng.annotations.*;
     
    public class DevTestNG1 extends SeleneseTestNgHelper {
     
    	@BeforeSuite
    	public void setUp() {
          selenium = new DefaultSelenium(ip_selenium, 4444, "*iexplore", ip_selenium+":8080");
    	  selenium.start();
       }
     
    	@Test public void test1() throws Exception {
    		selenium.open(ip_selenium+":8080/archiva");
    		verifyTrue(selenium.isTextPresent("archiva"));
    		selenium.close();
    	}
    }
    ip_selenium correspond à l'adresse de la machine (A) qui dispose du serveur Selenium et des navigateurs.

    Avec @BeforeSuite, J'ai bien l'exécution de Selenium sur la machine A mais avant d'exécuter test1, Selenium passe par la méthode setup de la classe SeleneseTestBase :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setUp(String url, String browserString, int port) {
            if (url == null) {
                url = "http://localhost:" + port;
            }
            selenium = new DefaultSelenium("localhost", port, browserString, url);
            selenium.start();
        }
    Comme on peut le voir cette méthode redéfinit selenium pour être exécuté en local.
    Donc ma question : est-il possible d'éviter de repasser par cette méthode ??

  3. #3
    Membre actif
    Avatar de foucha
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Points : 251
    Points
    251
    Par défaut
    Il me semble que c'est possible d'executé les tests selenium sur unix avec un navigateur virtuel.

    As tu cherché "selenium unix" sur google? Il y a des réponses.
    ++
    Foucha.

    =========

    "du code propre c'est du code qui fait exactement ce qu'on croit que ça fait"

    Mes Articles DVP

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 18
    Points
    18
    Par défaut
    En fait, il n'y a pas besoin d'heriter de SeleniumTestBase pour ton test unitaire, tant que tu crées la session et que tu l'arretes toi meme (@Before et @After donc) tu peux tres bien utiliser un test standard
    Tu peux aussi te créer un MySeleniumTestBase avec ce code d'initialisation/arret et en faire hériter tes classes de test.

    Penses également à differencier "ip_selenium" de "webapp_base_url" car ton application à tester peut ne pas etre hébergée sur la meme machine que ton serveur selenium

    En somme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class FooTestCase {
            private Selenium selenium;
            private String ip_selenium_server = "192.168.0.42";
            private String webapp_base_url = "http://192.168.0.43:8080";
     
    	@Before
    	public void setUp() {
              selenium = new DefaultSelenium(ip_selenium_server, 4444, "*iexplore", ip_selenium+":8080");
    	  selenium.start();
           }
     
    	@After
    	public void tearDown() {
    		selenium.close();
            }
     
    	@Test public void testBar() throws Exception {
    		selenium.open(webapp_base_url + "/archiva");
    		verifyTrue(selenium.isTextPresent("archiva"));
    	}
    }
    (je garantis pas l'execution du code c'est plus pour illustrer... )

    Pour ce qui est d'executer les tests sur un serveur sans affichage c'est un peu compliqué..
    Soit on fait tourner un firefox sur le serveur headless dans un buffer X virtuel, soit on utilise une VM dont le systeme invité inclut X ou tout autre systeme d'affichage.
    Cette derniere solution est assez pratique car le systeme invité peut alors etre un Windows, ce qui permet de tester avec IE.

    Au final on aura un serveur linux chargé de lancer les tests avec maven, et une vm dont le systeme invité dispose des navigateurs, et du serveur selenium. La webapp pourra etre hébergée sur la machine linux ou sur une troisieme machine quelconque (d'ou l'utilité de differencier l'ip du serveur selenium de celle de l'applciation à tester)

Discussions similaires

  1. exécuter Backtrack à distance
    Par cdevl32 dans le forum VMware
    Réponses: 1
    Dernier message: 05/06/2010, 18h11
  2. [Exec-plugin-maven] hudson et maven
    Par kahoo dans le forum Maven
    Réponses: 0
    Dernier message: 20/05/2009, 15h59
  3. Réponses: 6
    Dernier message: 04/11/2008, 13h30
  4. Maven 2 : exécuter un profil par défaut
    Par ggalou08 dans le forum Maven
    Réponses: 5
    Dernier message: 09/05/2008, 16h58
  5. exécuter mysql à distance
    Par aliomrani1 dans le forum Installation
    Réponses: 6
    Dernier message: 22/02/2007, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo