使用YSlow和Jenkins进行性能测试UI

时间:2015-07-07 08:06:36

标签: jenkins phantomjs yslow

我有一个Web应用程序,我想在其上运行Yslow。测试需要与Jenkins集成。该应用程序有一个登录页面。如果我提供了应用程序的URL,如果未登录有效用户,将显示登录页面。那么如何使用YSLow& amp;测试性能呢?詹金斯?是否可以自动化登录部分?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

是的,你可以,但你仍然错过了这个自动化部分。你需要的不仅仅是YSlow&詹金斯。它非常依赖于应用程序的网络架构 - 如果您在本地或远程运行测试。

Robotframework + Selenium Server

使用Robotframework的selenium2library可以使用Selenium Server绑定来操作浏览器DOM。换句话说,您可以创建非常简单的自动登录测试和操作。之后,SSHLibrary或终端库可以运行YSlow命令,您只需要将输出文件提供给Jenkins可读位置。它是一个非常复杂的解决方案,适用于具有许多依赖关系的高级网络架构。

PhantomJS + CasperJs

如果您需要在本地运行性能测试,可以使用无头浏览器PhantomJS。与CasperJS结合使用,您可以使用DOM操作来创建自动登录过程。 PhantomJS也兼容YSlow,所以再一次,你只需要为Jenkins定义输出文件的位置。

对于这两种解决方案(或任何其他解决方案),您将需要额外的jenkins插件来读取YSlow生成的输出文件。