2011-01-18 20 views
16

Sono incaricato di testare un'applicazione Web aziendale che fa un uso pesante di AJAX. Ho bisogno di costruire un sistema che permetta il funzionamento continuo di test senza l'intervento umano. Attualmente sono principalmente interessato al test di carico, ma voglio gli stessi script usati per generare il carico da utilizzare nei test funzionali.Vero browser senza testa

Attualmente per il loadtesting sto usando il grinder. Registriamo gli script e quindi li elaboriamo per gestire tra le altre cose le richieste asincrone. Questo sistema funziona per ora; tuttavia gli script sono delicati e non posso mantenerli durante il nostro ciclo di sviluppo. Devo essere in grado di "eseguire un browser" tramite un linguaggio di programmazione che astrae i dettagli di html e javascript, ma deve essere senza testa. In altre parole, se il mio script di test si rompe, deve rappresentare una vera e propria rottura dell'applicazione. L'esecuzione di firefox in xvfb non funziona in quanto Firefox utilizza ancora troppe risorse anche su una macchina Linux headless in esecuzione con xvfb. Ho provato a guidare firefox con il webdriver sotto il server x headless.

Ho lavorato su HTMLUnit per giorni poiché questa è la soluzione ideale. Ho scritto i driver HTMLUnit in Jython e quindi posso usarli con la smerigliatrice. Sfortunatamente sto correndo in errori javascript (che non sono errori reali in firefox/chrome/IE) e penso di essere alla fine della strada per questo. In ogni caso sono a conoscenza di HtmlUnit e ho davvero bisogno di un'alternativa.

So che ci sono altre soluzioni (envjs e zombie.js); tuttavia non so quanto siano sviluppate queste tecnologie e non voglio sprecare un'altra settimana andando in un vicolo cieco.

Quanto sarebbe difficile prendere il codice sorgente per Firefox o Webkit e commentare tutte le chiamate di rendering/GUI e creare un vero browser headless? È stato fatto? Sarebbe più facile farlo con un altro? Onestamente non riesco a capire perché questo non sia già stato fatto, quindi immagino che sia molto più difficile di quanto non preveda.

Suppongo che se riesco a ottenere un browser veramente senza head con caratteristiche di prestazioni ragionevoli (ho una grande flotta di server per lanciare a questo problema, ma non è abbastanza grande per il vero firefox con il rendering della GUI), allora verrò impostato .

+0

Hai considerato l'utilizzo di un servizio commerciale come BrowserMob (http://browsermob.com/performance-testing) o Gomez (http://www.gomez.com/products-solutions/products/load-testing/). Anche se non è economico, sembra molto più facile che tentare di hackerare Firefox/Webkit. –

+0

Non ho davvero esaminato questi servizi, ma ne ho sentito parlare. Sono appassionato di mettere insieme un sistema interno preferibilmente con tecnologia open source. Abbiamo molti server di prova e voglio davvero utilizzarli. Grazie per il suggerimento però. – user573225

risposta

1

Potrebbe essere in grado di sfruttare alcuni degli strumenti di test dell'unità JavaScript disponibili per assemblare il tipo di ambiente necessario.

Ad esempio, ho trovato che il caricamento di env.js in rhino fornisce un browser falso accettabile per testare la maggior parte di JavaScript. Non è sufficiente su alcuni attributi DOM, come gli elementi dimensionati rispetto alla loro finestra, ma non è stato un problema serio nella mia esperienza.

Vedi anche:

+0

Grazie, potrei provare env.js con il rinoceronte successivo. Questo dovrebbe consentirmi di integrarmi con l'attuale framwork di loadtesting basato su java. Qualche idea su come sarà comparabile a HtmlUnit? Qualche esperienza con zombie.js? – user573225

+0

Da quello che ricordo, l'ultima volta che ho guardato su HTMLUnit non aveva il supporto JavaScript di cui avevo bisogno ma potrebbe non essere più il caso. Non ho provato zombie.js ma sembra che valga la pena investigare, grazie per averlo sottolineato. – Jonah

0

Dai un'occhiata alla WebKitDriver. Il progetto include l'implementazione headless di WebKit.

14

enter image description here

Questo è stato fatto dai ragazzi oltre a http://www.phantomjs.org/.Nelle loro stesse parole:

PhantomJS è un WebKit senza testa con API JavaScript. Ha un supporto rapido e nativo per vari standard Web: gestione DOM, selettore CSS, JSON, Canvas e SVG.

PhantomJS è una soluzione ottimale per test senza testa di applicazioni basate sul Web, scraping del sito, acquisizione di pagine, renderizzatore SVG, convertitore PDF e molti altri casi d'uso.

PhantomJS è stato creato da Ariya Hidayat

+5

che dire di Gecko? – Rolf

+1

www.slimerjs.org sebbene non sia senza testa senza xvfb –

1

Date un'occhiata a LoadBooster. Si tratta di un servizio di test di carico basato su cloud che utilizza il browser headless PhantomJS per testare i siti Web. Disclaimer: lavoro per LoadBooster.

Problemi correlati