2015-07-07 16 views
7

Ho un'applicazione web, su cui vorrei correre Yslow. I test dovrebbero essere integrati con Jenkins. L'applicazione ha una pagina di accesso. Se fornisco l'URL dell'applicazione, se un utente valido non è registrato nella pagina di accesso verrà visualizzato. Quindi, come posso testare le prestazioni usando YSLow & Jenkins? È possibile automatizzare la parte di accesso?performance test UI con YSlow e Jenkins

+0

Shouldnt si essere in grado di fare un login con uno script phantomJS prima di eseguire Yslow? [Qui] (http://stackoverflow.com/questions/18739354/how-can-i-use-persisted-cookies-from-a-file-using-phantomjs) sono alcuni suggerimenti interessanti su come si potrebbe fare l'autenticazione. Come in [questa risposta] (http://stackoverflow.com/a/24184040/3623345), è possibile * tentare il login * per ottenere una sessione, quindi procedere con il lancio di Yslow.js. –

risposta

3

sì è possibile, ma si dimentica ancora questa parte automatizzato. Hai bisogno di qualcosa di più di un YSlow & Jenkins. È altamente dipendente dall'architettura di rete dell'applicazione: se si eseguono test localmente o in remoto.

Robotframework + Selenio Server

Con selenium2library di Robotframework possono utilizzare attacchi Selenio Server di manipolare con i browser DOM. In altre parole, è possibile creare test e azioni di login automatizzati molto semplici. Successivamente la libreria SSHLibrary o Terminal può eseguire comandi YSlow e devi solo fornire i file di output alla posizione leggibile di Jenkins. È una soluzione piuttosto complessa adatta per un'architettura di rete avanzata con molte dipendenze.

PhantomJS + CasperJs

Se avete bisogno di eseguire i test di performance a livello locale, è possibile utilizzare vantaggio di PhantomJS del browser senza testa. In combinazione con CasperJS, puoi manipolare con DOM per creare processi di login automatizzati. PhantomJS è anche compatibile con YSlow, quindi ancora una volta, devi solo definire la posizione dei file di output per Jenkins.

Per entrambe le soluzioni (o qualsiasi altro) sarà necessario Jenkins ulteriori plugin per leggere i file di output generati da YSlow.

4

Dal YSlow grado di generare un report di prestazioni da un file di input HAR, vorrei usare un server proxy per registrare i dati sulle prestazioni durante la navigazione del sito web con selenio. In questo modo, è possibile misurare in modo indipendente le prestazioni su un vero browser (Chrome, Firefox, Safari ...) o su un senza testa uno come PhantomJS.

Per procedere, prima proxy scaricare browsermob e decomprimerlo:

https://github.com/lightbody/browsermob-proxy/releases

quindi scrivere il codice per avviare il server proxy e per eseguire lo scenario con un cliente selenio. Questo esempio è stato scritto in Python, ma potresti scrivere allo stesso modo con Java, Ruby, Javascript o PHP.

from browsermobproxy import Server 
from selenium import webdriver 
import json, sys 

# setup the proxy server 
server = Server(r"C:\Download\browsermob-proxy-2.1.0-beta-5\bin\browsermob-proxy") 
server.start() 
proxy = server.create_proxy() 

try: 
    # setup the browser 
    profile = webdriver.FirefoxProfile() 
    profile.set_proxy(proxy.selenium_proxy()) 
    driver = webdriver.Firefox(firefox_profile=profile) 

    # start collecting the data 
    proxy.new_har("google") 

    # login to a twitter account 
    driver.get("https://twitter.com/login?lang=en") 
    driver.find_element_by_css_selector(".js-username-field").send_keys("my name") 
    driver.find_element_by_css_selector(".js-password-field").send_keys("my password") 
    driver.find_element_by_css_selector("button.submit").click() 

    # save the collected data to a file 
    with open(sys.argv[1], 'w') as file: 
    file.write(json.dumps(proxy.har, indent=2)) 

finally: 
    driver.quit() 
    server.stop() 

Infine, per eseguire lo script e generare il rapporto prestazioni con una riga di comando:

python perf-login.py perf-login.har 
yslow perf-login.har