Domanda

Volevo solo alcune opinioni delle persone che hanno gestito Selenium (http://selenium.openqa.org) Ho avuto molta esperienza con WaTiN e ho anche scritto una suite di registrazione per esso.L'ho fatto produrre un codice ben strutturato ma essendo mantenuto solo da me sembra che la mia azienda lo abbia quasi abbandonato.Se hai eseguito il selenio, hai avuto molto successo?Utilizzerò .NET 3.5, Selenium funziona bene con esso?Il codice prodotto è pulito o semplicemente un elenco di tutte le interazioni?(http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx) Quanto si comporta bene la suite di test distribuita?

Qualsiasi altra lamentela o complimento sul sistema sarebbe molto apprezzato!

È stato utile?

Soluzione

Se stai usando IDE di selenio per generare il codice, ottieni semplicemente un elenco di tutte le azioni che il selenio eseguirà.Per me, Selenium IDE è un buon modo per iniziare o eseguire un rapido test "prova e vedi".Ma, quando pensi alla manutenibilità e al codice più leggibile, devi scrivere il tuo codice.

Un buon modo per ottenere un buon codice di selenio è utilizzare il file Modello oggetto pagina in modo che il codice rappresenti il ​​flusso di navigazione.Ecco un buon esempio che vedo in Codificazione Dojo Floripa (dal Brasile):

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);
    }
}

Spero che aiuti

Altri suggerimenti

Sto utilizzando Selenium Remote Control per testare le app ASP.Net (che è ciò che presumo anche tu sceglierai come target) e funziona benissimo.

Se non hai mai usato il selenio, guarda alcuni dei screencast per l'utilizzo dell'IDE Selenium.Questo ti darà una buona idea di come funziona il "Selenio".L'IDE è un plugin per Firefox che sostanzialmente ti consente di sviluppare rapidi test di registrazione e riproduzione mentre procedi.Per suite di test più grandi o per scrivere test realmente gestibili, consiglierei Selenium Remote Control.(L'IDE è fantastico se hai appena iniziato.)

Telecomando al selenio ti consente di utilizzare il tuo linguaggio preferito e il framework di test unitario per gestire un browser Web al fine di eseguire i test.Se ti senti più a tuo agio con C#/NUnit, puoi scrivere i tuoi test in questo modo e utilizzare tutte le funzionalità NUnit che preferisci.(Ad esempio, il plugin Test-Driven.net).Inoltre, poiché i tuoi test sono scritti in un linguaggio di alto livello, puoi fare cose come ereditare da una particolare classe di test che puoi utilizzare per rendere il codice del tuo metodo di test effettivo molto più pulito.(O almeno è così che scrivo i miei test.Mi consente di testare scenari complessi mantenendo il numero di righe del mio metodo di test a un numero ragionevole.)

Hai menzionato test distribuiti.Purtroppo non ho trovato il modo di utilizzare il file Griglia di selenio progetto con NUnit.Selenium Grid ti consente di eseguire la tua suite di test su un numero di macchine e istanze di browser diverse.Quindi, invece di eseguire, ad esempio, 200 metodi di test uno dopo l'altro (ovvero in serie), è possibile distribuire il carico su quattro istanze Grid (ovvero, in esecuzione in quattro diverse istanze di browser alla volta) su una singola macchina o più macchine a seconda su quanto distribuito vuoi ottenere.

Se scrivi i tuoi test in Java o PHP, potresti avere più fortuna.Mi aspetto che questo sia disponibile tramite NUnit con il rilascio di NUnit2.5 che includerà pNUnit per i test paralleli.

Se hai ulteriori domande sul selenio, chiarisci la tua domanda originale e sarò felice di provare ad aiutarti.(Il selenio è solo uno di quegli strumenti che utilizzo tutti i giorni, quindi mi piace aiutare nuove persone a iniziare a usarlo..)

Ho iniziato con Selenium IDE e Selenium Core.Questi sono sicuramente ottimi strumenti per iniziare.Ma non sono molto potenti, dal momento che puoi usare solo Selenese, il linguaggio comando per comando basato su HTML di Selenium.

Ora utilizzo Selenium Remote Control con il driver Ruby, che mi consente di utilizzare ciò che offre Ruby.Provo molti ambienti:Windows 2000, XP, Vista, Mac 10.4/10.5 e per ciascuno di quelli applicabili, Safari 2/3, Firefox 2/3, Internet Explorer 6/7.

Selenium afferma di essere compatibile con tutti questi sistemi operativi e browser, anche se attualmente sto riscontrando problemi con Internet Explorer (la mia prima domanda su StackOverflow riguarda questo, in realtà).Ma non conosco altri strumenti così potenti e funzionanti con così tante piattaforme.

Il problema più grande che ho avuto con Selenium è l'analisi del DOM.Il childNodes di JavaScript non è affidabile perché Safari/Firefox ignora gli spazi bianchi e i nodi dei commenti, mentre Internet Explorer no.XPath in Internet Explorer è 10-20 volte più lento che in SF/FF.innerHTML non è sempre affidabile in IE.

Il selenio è uno strumento abbastanza valido ma ci sono un paio di cose a cui prestare attenzione:

  • Selenium IDE e Selenium core non condividono al 100% la stessa funzionalità.Ad esempio, il clic con il pulsante destro del mouse è supportato dall'IDE, ma la versione principale corrente non lo prevede.Tuttavia, l'utilizzo di una versione più recente dal loro repository risolve il problema.

  • In caso di ext js, gwt ecc. assicurati di avere ID corretti per i tuoi elementi di visualizzazione anziché quelli generati automaticamente (casuali).

  • Mantenimento dei casi di test.Ho visto casi in cui sono stati fatti molti sforzi sui test del selenio e una buona copertura.Successivamente i test iniziarono a fallire poiché la persona che li creava era impegnata con altre attività e nessun altro voleva toccarli.Ma questo era un problema con la direzione, non con Selenium.

Sono un grande fan del selenio.Un aspetto importante che è bene sapere in anticipo, tuttavia, è che Selenium IDE ha molti problemi con le finestre pop-up.Questi problemi non persistono in Selenium RC, ma possono rendere lo sviluppo un po' un grattacapo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top