2015-07-07 4 views
7

У меня есть веб-приложение, на котором я хотел бы запустить Yslow. Тесты должны быть интегрированы с Дженкинсом. Приложение имеет страницу входа. Если я укажу URL-адрес приложения, если действительный пользователь не войдет в систему на странице входа в систему. Итак, как я могу проверить производительность с помощью YSLow & Jenkins? Возможно ли автоматизировать регистрационную часть?Проверка производительности UI с YSlow и Jenkins

+0

вы не должны быть в состоянии сделать вход со сценарием phantomJS, прежде чем запускать YSlow? [Здесь] (http://stackoverflow.com/questions/18739354/how-can-i-use-persisted-cookies-from-a-file-using-phantomjs) - некоторые интересные подсказки о том, как вы можете выполнить аутентификацию. Как и в [этом ответе] (http://stackoverflow.com/a/24184040/3623345), вы можете * попытаться войти в систему *, чтобы получить сеанс, а затем приступить к запуску Yslow.js. –

ответ

3

да, вы можете, но вы все еще пропустите эту автоматическую часть. Вам нужно нечто большее, чем YSlow & Дженкинс. Это сильно зависит от архитектуры сети приложения - если вы запускаете тесты локально или удаленно.

Robotframework + Селен Сервер

С selenium2library Robotframework может использовать привязок Селен Server, чтобы манипулировать с браузерами DOM. Другими словами, вы можете создавать очень простые автоматические тесты и действия для входа в систему. Впоследствии библиотека SSHLibrary или Terminal может запускать команды YSlow, и вам просто нужно предоставить выходные файлы в читаемое место Jenkins. Это довольно сложное решение, подходящее для расширенной сетевой архитектуры со многими зависимостями.

PhantomJS + CasperJs

Если вам необходимо запустить тесты производительности локально, вы можете использовать преимущество обезглавленного PhantomJS браузера. В сочетании с CasperJS вы можете манипулировать с помощью DOM для создания автоматизированных процессов входа в систему. PhantomJS также совместим с YSlow, поэтому еще раз вам нужно определить местоположение выходных файлов для Jenkins.

Для обоих решений (или любых других) вам понадобятся дополнительные плагины jenkins для чтения выходных файлов, созданных YSlow.

4

Поскольку YSlow может генерировать отчет о производительности из входного файла HAR, я бы использовал прокси-сервер для записи данных о производительности во время навигации по сайту с помощью Selenium. Таким образом, вы можете независимо измерять производительность на реальном браузере (Chrome, Firefox, Safari ...) или на безголовом, таком как PhantomJS.

Чтобы продолжить, сначала загрузить browsermob прокси и распакуйте его:

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

Затем написать код для запуска прокси-сервера и запустить сценарий с клиентом Selenium. Этот пример был написан на Python, но вы можете написать его аналогично с некоторыми Java, Ruby, Javascript или 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() 

Наконец, чтобы запустить скрипт и сгенерировать отчет о производительности с помощью командной строки:

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