13

Ho un sistema per testare, che è una tecnologia di distribuzione di annunci video. Ho bisogno di caricare ogni video come 1-2 minuti per servire gli annunci. I video vengono riprodotti in un client Flash e trasmessi in streaming come flussi FLV come in YouTube.Come test di stress simulando un carico pesante usando Selenium

Il motivo per cui ho bisogno di testarlo solo tramite browser - e ogni altro metodo non funzionerà - è quello di mettere alla prova sia i server di streaming video e i server di annunci contemporaneamente e visualizzare gli annunci in tempo reale.

Ho utilizzato Selenium, WatiN, Automation Anywhere e molti altri strumenti di automazione. Tuttavia, quando sto cercando di avviare come 10000 browser sulla mia macchina (32 GB di RAM, CPU a 16 core), nessuno di loro è in grado di fare il lavoro.

Con il selenio, sono in grado di avviare le massime istanze di FireFox finora, ma è ancora troppo basso: metà delle istanze non esegue il test.

Qualche suggerimento da fare con il selenio?

+0

Se è necessario simulare un carico, è possibile utilizzare lo strumento open source denominato pylot (http://pylot.org/) questo strumento può simulare connessioni simultanee ed è possibile fornire uno scenario di test scritto in XML (leggi l'inizio sul posto). Lo strumento non utilizza i browser reali. – alonp

risposta

4

Non hai intenzione di eseguire 10.000 browser sul tuo computer. Ciò darebbe 3,2 MB di memoria fisica per istanza del browser e sono abbastanza sicuro che FireFox non gli piacerà.

È possibile creare uno script JMeter che colpisca il server con molti thread. Non interagirà con l'interfaccia utente, ma simulerebbe il carico di molti client che colpiscono qualsiasi URL che gli dici. Credo che includa anche la possibilità di registrare una sessione e riprodurla per una facile configurazione delle sessioni.

+0

10000 era un numero ipotetico, Per l'attuale configurazione del server anche 1000-5000 andrebbe bene. Jmeter non è utile nel mio caso in quanto ho un'applicazione rich media che deve essere eseguita per un minuto affinché il test abbia successo. –

+2

3.2 MB o 32 MB di RAM, ho il sospetto che Firefox si strozzerà ugualmente bene su entrambi. Probabilmente stai testando il server se stai cercando di lanciare 1000 thread così che a chi importa cosa sta facendo il client? Se il client è pieno di firefox utilizzando i media e facendo qualcosa con esso, o solo un curl o wget per gli URL appropriati con lo stesso tempismo dell'app Rich Media non dovrebbe importare al server, dovrebbe? – digitaljoel

+2

Il test ha più a che fare con il modo in cui l'app Rich Media si comporta sotto stress, non solo il server sotto carico. Sto provando a testare il possibile scenario utente più vicino al mondo reale qui. Una richiesta di ricciolo non eseguirà l'app Rich Media Client, quindi non sarà un vero test dell'intera applicazione. –

1

Se si utilizza la macchina Windows, in base alla mia esperienza esiste un limite al numero di istanze della finestra del browser da aprire. Come per il mio test l'ultima volta, limita tra 100-150 finestre del browser.

Si consiglia di utilizzare un robot senza testa, che non richiede l'apertura della finestra del browser. Penso che l'ultima versione di Selenium abbia questa capacità. Ma sembra essere più simile a un test di caricamento, mentre stai provando a simulare più di 10.000 istanze utente, ti consiglio di utilizzare lo strumento di test di carico come JMeter o LoadRunner.

+0

Iam è in grado di eseguire più di 500 istanze di firefox con selenio, ma il problema è che metà non carica lo script di test registrato, ma mostra solo il browser vuoto. Questo test non è possibile senza un vero browser, aggiornerò il mio post originale con alcuni dettagli sullo scenario di test. –

+0

Sumit, se devi eseguire il test con la finestra attiva del browser, allora hai le seguenti opzioni: –

+0

Sumit, se devi eseguire il test con la finestra attiva del browser e hai già investito molto tempo e denaro nella scrittura di script di selenio, vorrei suggerire le seguenti opzioni: 1) Impiegare istanze multiple su Amazon EC2. Puoi impostare Selenium Grid nella tua istanza EC2. Trova i dettagli su: http://selenium-grid.seleniumhq.org/setting_up_selenium_grid_on_ec2.html. 2) Se per motivi di sicurezza dei dati o per qualsiasi altra ragione non è possibile utilizzare il cloud, è possibile configurare la griglia di selenio utilizzando più computer di prova nel proprio laboratorio. Personalmente preferirei usare l'EC2 come opzione veloce, facile ed economica. –

1

Mi sembra che si stia tentando di verificare ciò che il client vedrà in base al traffico intenso, no?

In tal caso, Joel ha ragione. Se è assolutamente necessario fare , vedere ciò che il client vede, è possibile utilizzare hit filettati e semplicemente scaricare i risultati in un database. Questo ti mostrerà tutto ciò che il client vedrebbe comunque, ed è molto più facile da ordinare rispetto a migliaia di istanze del browser.

In entrambi i casi, il client non vedrà errori se non ci sono errori presenti sul lato server. Se stai testando la funzionalità in ambienti con larghezza di banda limitata, ambienti con utilizzo intensivo della CPU o ambienti ad alto utilizzo di memoria, è molto più facile ottenere che eseguire migliaia di istanze del browser.

5

Il selenio non è realmente ottimizzato per il test di carico/stress, soprattutto se si esegue il browser in locale. Esecuzione di oltre 1000 browser sta per soffocare anche il server più ape. Sebbene la RAM sia un collo di bottiglia evidente, hai anche risorse e larghezza di banda limitate. Quest'ultimo è una preoccupazione primaria se si caricano video.

Per non parlare del test di un singolo IP con browser 10k, quindi il bilanciamento del carico potrebbe non essere eseguito correttamente, così come l'effettiva distribuzione di annunci video a specifici utenti virtuali.

Se si desidera attenersi ai test del selenio esistenti, ho avuto esperienze positive con BrowserMob. Hanno fondamentalmente un'enorme griglia per eseguire veri test di caricamento del browser, distribuiti su AWS.

Un'altra raccomandazione sarebbe uno strumento di test delle prestazioni effettivo. Io raccomanderei lo Soasta CloudTest. Hanno una versione gratuita che esegue 100 utenti in modo che tu possa vedere se sarà adatto a te. Ho scoperto che lo scripting per CloudTest è relativamente semplice.

Disclaimer: Le mie esperienze con entrambe le società sono state un cliente pagante e non ho mai lavorato per nessuno dei due.

+0

Sembra BrowserMob cambiato in Neustar ... –

0

Il tuo post odora di qualche forma di frode basata sugli annunci, ma in entrambi i casi: hai considerato l'utilizzo di browser Web diversi oltre a Firefox? PhantomJS è un browser basato su Webkit headless compatibile con Selenium. Supporta tutte le funzionalità principali del browser come la gestione DOM, i selettori CSS, Javascript e Canvas. Non so se supporta Flash.

This post ha una lista decente di altri browser Web headless e automatizzabili che potresti prendere in considerazione.

Inoltre, se ogni istanza del browser crea un'istanza di un plug-in Flash, non trascurare la possibilità che il problema sia con Flash e non con Firefox. In alternativa, perché istanziare diversi processi di Firefox? Riuscirai a realizzare ciò che desideri attraverso l'uso delle schede?

Problemi correlati