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
risposta
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.
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
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. –