2010-03-01 19 views
10

Per un certo periodo di tempo ho studiato Selenium RC per eseguire test funzionali della mia applicazione web. Ora ho trovato una strategia di test che è così efficace, che non voglio allontanarmi da Selenium RC (dopo aver passato settimane a cercare di capire come validare i controlli di convalida di ASP.NET).Perché il selenio RC è così lento?

Ma ora che la mia avventura Selenium RC si sta spostando da un POC per essere qualcosa che effettivamente utilizzo, sto incontrando un problema. È follemente lento. Eseguendo un singolo test che carica una pagina, riempie alcuni campi e fa clic su un pulsante richiede la grandezza dei secondi da eseguire. Quando è in esecuzione, posso facilmente vedere ogni singolo campo compilato uno alla volta. L'uso di Selenio IDE in Firefox non è così lento.

ho trovato questa pagina, che specifica chiaramente che Selenio RC è lento http://selenium-grid.seleniumhq.org/how_it_works.html

Ma perché? È perché il browser sta interrogando il server di selenio? In tal caso, questo intervallo di polling non può essere modificato? O c'è un'altra ragione. Non sono abituato a una chiamata remota che richiede una quantità di tempo umanamente notevole da eseguire.

È orribile che l'esecuzione di alcuni test debba richiedere molto tempo. Sono in grado di eseguire la suite di test dell'intera presentazione (MVP), aziendale e di livello database (oltre 500 test) in modo più rapido di quanto occorra per eseguire 10 test per una singola pagina Web.

risposta

7

I test di funzionamento/integrazione impiegano più tempo a essere eseguiti specialmente perché sono in esecuzione in un browser. Ciò significa che devono caricare tutti e 3 i livelli del tuo MVC e quindi eseguirlo e lo stesso quando sta facendo qualcosa sulla pagina. Quindi ogni azione ha il potenziale per andare al database. Questo è intrinsecamente un lavoro a lungo termine rispetto ai test unitari.

I test iniziano facendo un open su quella pagina che attende quindi che tutto venga caricato. Quindi, se questo richiede molto tempo, potrebbe essere necessario molto tempo per l'utente se dovesse accedere alla pagina. Per esempio. Un sacco di immagini, JavaScript/CSS non ancora terminati, scadenze scadenti per i download.

Ciò che quella pagina di Selenium sta dicendo che il server è un collo di bottiglia perché implica che si stanno eseguendo i test in modo sincronizzato e se si è passati a Selenium Grid è possibile eseguirli in parallelo per rendere la suite di test completa più veloce. Non sta suggerendo che il server di selenio stia effettuando il polling per vedere cosa dovrebbe fare, ma i server Selenium interrogano l'hub della griglia per vedere se è ancora vivo e per mostrare che sono ancora vivi.

L'altro motivo per cui i test sono lenti è il linguaggio di base di Selenium JavaScript che interagisce con il DOM. Il DOM può rallentare molto le cose soprattutto se i tuoi test utilizzano XPath come localizzatori. XPath + JavaScript + IE + Selenio == Doloroso e non c'è nulla che noi sviluppatori Selenium possiamo fare di più per perfezionarlo. Beh, c'è e sarà Selenium 2, che è in alpha e può essere scaricato da http://selenium.googlecode.com/. Ho lavorato sull'implementazione .NET sto vedendo enormi miglioramenti di velocità al momento. Ho blogged su di esso perché le modifiche mi hanno sbalordito. Stavo vedendo fino a 8 test eseguiti nello stesso tempo in cui usava Selenium 1 per eseguire 1 test

+0

Ciao. Grazie per la risposta. Sono perfettamente consapevole che i test funzionali sono relativamente lenti. Ma il Selenium RC stesso è molto più lento del "normale", cioè il selenio non-RC.Eseguendo un test che apre una pagina con un modulo, compila 15 campi e invia il modulo richiede una frazione di secondo utilizzando l'IDE Selenium. Lo stesso test dura circa un secondo con Selenium RC e il driver .NET. Quindi c'è chiaramente un overhead specifico per RC. – Pete

+2

L'avvio del browser è un grande sovraccarico ed è specifico per RC. In tutte le altre istanze di selenio il browser deve essere aperto per avviare il test. – AutomatedTester

+1

C'è qualche altro ritardo, oltre al semplice avvio del browser. A metà test, Selenium RC su IE richiede molti secondi solo per compilare e inviare un singolo campo per me. –

2

È possibile che la velocità di esecuzione predefinita sia troppo bassa? Controlla i metodi getSpeed ​​() e setSpeed ​​() su DefaultSelenium.

7

Stai provando con IE e selenio in modalità multifinestra? Questo è estremamente lento e dovresti provare ad avviare il seleniumserver con -singlewindow

Problemi correlati