У меня есть веб-приложение, на котором я хотел бы запустить Yslow. Тесты должны быть интегрированы с Дженкинсом. Приложение имеет страницу входа. Если я укажу URL-адрес приложения, если действительный пользователь не войдет в систему на странице входа в систему. Итак, как я могу проверить производительность с помощью YSLow & Jenkins? Возможно ли автоматизировать регистрационную часть?Проверка производительности UI с YSlow и Jenkins
ответ
да, вы можете, но вы все еще пропустите эту автоматическую часть. Вам нужно нечто большее, чем YSlow & Дженкинс. Это сильно зависит от архитектуры сети приложения - если вы запускаете тесты локально или удаленно.
Robotframework + Селен Сервер
С selenium2library Robotframework может использовать привязок Селен Server, чтобы манипулировать с браузерами DOM. Другими словами, вы можете создавать очень простые автоматические тесты и действия для входа в систему. Впоследствии библиотека SSHLibrary или Terminal может запускать команды YSlow, и вам просто нужно предоставить выходные файлы в читаемое место Jenkins. Это довольно сложное решение, подходящее для расширенной сетевой архитектуры со многими зависимостями.
PhantomJS + CasperJs
Если вам необходимо запустить тесты производительности локально, вы можете использовать преимущество обезглавленного PhantomJS браузера. В сочетании с CasperJS вы можете манипулировать с помощью DOM для создания автоматизированных процессов входа в систему. PhantomJS также совместим с YSlow, поэтому еще раз вам нужно определить местоположение выходных файлов для Jenkins.
Для обоих решений (или любых других) вам понадобятся дополнительные плагины jenkins для чтения выходных файлов, созданных YSlow.
Поскольку 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
вы не должны быть в состоянии сделать вход со сценарием 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. –