Question

Je voulais juste connaître l'opinion de personnes ayant exécuté Selenium ( http://selenium.openqa.org . ) J’ai beaucoup d’expérience avec WaTiN et j’ai même écrit une suite d’enregistrement. Je l’ai fait produire du code bien structuré, mais comme je n’étais que maintenue, il semble que mon entreprise l’a abandonné. Si vous avez couru le sélénium, avez-vous eu beaucoup de succès? Je vais utiliser .NET 3.5, Selenium fonctionne-t-il bien avec cela? Le code produit est-il propre ou est-il simplement une liste de toutes les interactions? ( http: / /blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx ) Dans quelle mesure la suite de tests distribués est-elle équitable?

Tout autre reproche ou compliment sur le système serait grandement apprécié!

Était-ce utile?

La solution

Si vous utilisez Selenium IDE pour générer du code, vous obtenez simplement une liste de chaque action. ce sélénium sera exécuté. Pour moi, Selenium IDE est un bon moyen de commencer ou de faire un rapide "essayer et voir". tester. Toutefois, lorsque vous songez à la maintenabilité et à un code plus lisible, vous devez écrire votre propre code.

Pour obtenir un bon code sélénium, utilisez le Modèle d'objet de page . de manière à ce que le code représente votre flux de navigation. Voici un bon exemple que je vois dans Codage du floripa du Dojo (du Brésil):

public class GoogleTest {

    private Selenium selenium;

    @Before
    public void setUp() throws Exception {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox",
                            "http://www.google.com/webhp?hl=en");
            selenium.start();
    }

    @Test
    public void codingDojoShouldBeInFirstPageOfResults() {
            GoogleHomePage home = new GoogleHomePage(selenium);
            GoogleSearchResults searchResults = home.searchFor("coding dojo");
            String firstEntry = searchResults.getResult(0);
            assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }

}


public class GoogleHomePage {

    private final Selenium selenium;

    public GoogleHomePage(Selenium selenium) {
            this.selenium = selenium;
            this.selenium.open("http://www.google.com/webhp?hl=en");
            if (!"Google".equals(selenium.getTitle())) {
                    throw new IllegalStateException("Not the Google Home Page");
            }
    }

    public GoogleSearchResults searchFor(String string) {
            selenium.type("q", string);
            selenium.click("btnG");
            selenium.waitForPageToLoad("5000");
            return new GoogleSearchResults(string, selenium);
    }
}

public class GoogleSearchResults {

    private final Selenium selenium;

    public GoogleSearchResults(String string, Selenium selenium) {
            this.selenium = selenium;
            if (!(string + " - Google Search").equals(selenium.getTitle())) {
                    throw new IllegalStateException(
                                    "This is not the Google Results Page");
            }
    }

    public String getResult(int i) {
            String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
            return selenium.getText(nameXPath);
    }
}

Espérons que cela vous aidera

Autres conseils

J'utilise Selenium Remote Control pour tester les applications ASP.Net (ce que je suppose, c'est que vous allez également cibler), et cela fonctionne très bien.

Si vous n'avez jamais utilisé Selenium, observez certains des screencasts pour utiliser Selenium IDE. Cela vous donnera une bonne idée du fonctionnement de "Selenium". L'IDE est un plugin firefox qui vous permet de développer rapidement des tests d'enregistrement et de lecture au fur et à mesure. Pour les suites de tests plus volumineuses ou pour la rédaction de tests réellement maintenables, je recommanderais Selenium Remote Control. (L’IDE est formidable si vous ne faites que commencer.)

Selenium Remote Control vous permet d'utiliser votre langage favori et votre framework de tests unitaires pour piloter un navigateur Web. afin d'exécuter vos tests. Si vous êtes plus à l'aise avec C # / NUnit, vous pouvez écrire vos tests de cette façon et utiliser tous les goodies NUnit que vous aimez. (Par exemple, le plugin Test-Driven.net). De plus, comme vos tests sont écrits dans un langage de haut niveau, vous pouvez hériter d'une classe de tests particulière que vous pouvez utiliser pour rendre votre code de méthode de test beaucoup plus propre. (Ou du moins ma façon d’écrire mes tests. Elle me permet de tester des scénarios complexes qui maintiennent le nombre de lignes de ma méthode de test à un nombre raisonnable.)

Vous parlez de tests distribués. Malheureusement, je n'ai pas trouvé le moyen d'utiliser le projet Selenium Grid avec NUnit. Selenium Grid vous permet d'exécuter votre suite de tests sur un certain nombre de machines et d'instances de navigateur différentes. Ainsi, plutôt que d'exécuter 200 méthodes de test les unes après les autres (en série), vous pouvez répartir la charge sur quatre instances de la grille (s'exécutant simultanément dans quatre instances de navigateurs différents) sur une seule machine ou plusieurs machines, sur la distribution que vous voulez obtenir.

Si vous écrivez vos tests en Java ou en PHP, vous aurez peut-être plus de chance. Je pense que cela sera disponible via NUnit avec la publication de NUnit2.5 qui inclura pNUnit pour les tests en parallèle.

Si vous avez d'autres questions sur le sélénium, clarifiez votre question initiale et je me ferai un plaisir d'essayer de vous aider. (Selenium n’est que l’un de ces outils que j’utilise tous les jours, j’aime donc aider de nouvelles personnes à commencer à l'utiliser ..)

J'ai commencé avec Selenium IDE et Selenium Core. Ce sont vraiment de bons outils pour vous aider à démarrer. Mais ils ne sont pas très puissants, car vous ne pouvez utiliser que Selenese, le langage commande par commande de Selenium.

Maintenant, j'utilise Selenium Remote Control avec le pilote Ruby, ce qui me permet d’utiliser ce que Ruby offre. Je teste de nombreux environnements: Windows 2000, XP, Vista, Mac 10.4 / 10.5 et pour chacun de ceux qui s'appliquent, Safari 2/3, Firefox 2/3, Internet Explorer 6/7.

Selenium prétend être compatible avec tous ces systèmes d’exploitation et navigateurs, bien que je rencontre actuellement des problèmes avec Internet Explorer (en fait, ma première question sur StackOverflow concerne ce sujet). Mais je ne connais aucun autre outil aussi puissant qui fonctionne avec autant de plates-formes.

Le plus gros problème que j'ai rencontré avec Selenium est l'analyse DOM. Les childNodes de JavaScript ne sont pas fiables car Safari / Firefox ignore les espaces & amp; commenter les nœuds, contrairement à Internet Explorer. XPath dans Internet Explorer est 10 à 20 fois plus lent que dans SF / FF. innerHTML n'est pas toujours fiable dans IE.

Le sélénium est un outil plutôt convenable, mais il y a deux choses à surveiller:

  • Selenium IDE et Selenium Core ne partagent pas une fonctionnalité identique à 100%. Par exemple, un clic droit est pris en charge par l'IDE, mais la version principale actuelle ne l'a pas. Cependant, utiliser une version plus récente de leur référentiel résout ce problème.

  • En cas d’ext JS, GWT, etc., assurez-vous d’avoir les identifiants appropriés pour vos éléments d’affichage plutôt que ceux générés automatiquement (au hasard).

  • Maintenance des cas de test. J'ai vu des cas où beaucoup d'efforts ont été déployés sur les tests de sélénium et une bonne couverture. Plus tard, les tests ont commencé à échouer car la personne qui les créait était occupée par d'autres tâches et que personne d'autre ne voulait les toucher. Mais c’était un problème de gestion, pas de sélénium.

Je suis un grand fan de Selenium. Un des principaux problèmes à connaître à l'avance, cependant, est que Selenium IDE a beaucoup de problèmes avec les fenêtres contextuelles. Ces problèmes ne persistent pas dans Selenium RC, mais cela peut compliquer le développement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top