15

I am looking for a way to regularly test the front-end performance of my web application.

Specifically, I'm interested in the time it takes to resolve hostnames, to get responses from the servers, to download/render/execute resources, etc. I also want to measure these things when interacting with the application, not just when loading the page.

I could use Firebug or Chrome Developer Tools while interacting with my web application manually, but I want this front-end performance testing to be a part of my continuous integration process. I want to have nightly front-end performance test results, so that it becomes easy to catch performance regressions. That is why one of my preliminary conclusions is that I want to leverage my existing functional Selenium/WebDriver test suite (or a subset of the test suite).

So assuming I'm using Selenium to interact with my web application, what I really need is a tool to measure the front-end performance in the browser.

So far I've looked at three options:

1) browsermob-proxy

browsermob-proxy is an open source proxy that captures performance data using the HAR format. It provides an HTTP REST API in addition to Java and NodeJS bindings. Because it's a proxy which analyzes HTTP traffic, it doesn't give me any information about what is happening in the browser (e.g. rendering and so on), which is what I am most interested in.

2) WebPagetest

WebPagetest is also open source software, and available as a free cloud service at webpagetest.org. It is possible (and not too hard) to set up a private instance of this service. I give it a URL and I get a performance report of the loading of that page. However, it doesn't allow me to monitor the application while I am interacting with it - which is vital - especially in a single page web application with a lot of stuff going on on the client-side - like mine.

3) Compuware APM AJAX Edition (formerly DynaTrace AJAX Edition)

Compuware APM AJAX Edition is free (as in gratis) proprietary software that uses browser plugins to capture information from the browser while browsing, meaning it can automatically gather data during a Selenium test suite execution.

It's pretty easy to automate it and integrate the execution of it into a continuous integration process, but the reporting leaves a lot to be desired. Test results are grouped into "sessions" which is the period from the browser window is opened until it is closed. There is no functionality for comparing test results over time, which makes it hard to track progress and catch regressions.

Compuware APM AJAX Edition is the best alternative I've seen so far - but there has to be something better out there - right?

4

12 回答 12

5

将YSlow和/或Google Page SpeedSelenium一起使用怎么样?

  1. 创建单独的 Firefox 配置文件 - 一份用于 Google Page Speed,一份用于 YSlow。
  2. 在各自的配置文件中安装扩展
  3. 在各自的配置文件中为配置文件和 Page Speed 和 YSlow 安装 Firebug(为每个配置文件单独安装和配置扩展)。
  4. 使用 Selenium 加载自定义配置文件

在这里这里阅读更多

上面的链接给出了一个想法。希望这可以帮助。

于 2013-09-24T08:59:36.573 回答
2

Compuware AJAX 版本确实允许比较、长期、分析和 CI 集成,以便随着时间的推移查看构建和功能。有一个与该功能相关的许可证,以及将浏览器端 PurePaths 一直链接回 SQL。

http://apmblog.compuware.com/2012/09/11/top-performance-mistakes-when-moving-from-test-to-production-supersized-content-2/

于 2013-09-16T23:06:46.320 回答
1

我对这个主题的感觉是,最好的方法是将 javascript 注入页面并让该报告返回有关用户体验的指标。有多种方法可以解决此问题,但它们基本上可以解决为滚动您自己的代码(更多工作但最终获得更好的结果)或使用第三方产品。New Relic有一个很好的解决方案。

这种方法的问题是您仍然需要一些东西来锻炼浏览器才能触发 javascript - 这很难自动化。这就是问题所在,但除此之外,您还有一种可靠、一致、免维护的方法来记录和记录用户体验。

于 2013-09-22T17:23:22.100 回答
1

我一直在开发一项在后台运行 WebPagetest 并允许您跟踪前端性能随时间推移的服务。

http://speedcurve.com

您可以跟踪并深入了解每个测试的瀑布,以了解您所追求的一些内容。为了捕捉交互性能,WebPagetest 最近还添加了用户计时,因此您可以将简单的 JS 事件添加到您的页面并让它们显示在 WebPagetest 和 SpeedCurve 中。

http://blog.patrickmeenan.com/2013/07/measuring-performance-of-user-experience.html

如果它是一个单页应用程序,那么 Caliper 是新的并且看起来很有前途。

http://caliper.io/

于 2013-11-07T22:17:41.777 回答
0

我最近在寻找如何实现前端性能测试。我还没有实现它,但我计划将 yslow 与 phantomjs http://yslow.org/phantomjs/#screenshots一起使用

于 2013-09-15T22:20:51.713 回答
0

您是否查看过服务器会根据您的请求为您捕获的内容?每个 Web 服务器都能够以秒为单位(有些以微秒为单位)捕获和记录前端发出的每个请求的时间。您可以在后端提取数据并使用任意数量的工具将其可视化。将它与免费的 GEoIP 数据库相结合,您甚至可以按国家和城市查看数据。为 GEoIP 数据支付更多费用,您可以查看移动网络上的移动设备与家庭或企业网络上的移动设备,以观察网络连接(您无法控制)在行为上的关键差异。

至于对前端性能的痴迷,留给你的功能测试人员吧。可以在单台 PC 上使用浏览器中的工具与诸如 Charles 代理之类的工具来处理优化,以改变缓存选项和速度。一旦您的应用程序投入使用,无论如何您将无法控制前端性能。渲染时间因 PC 而异,具体取决于浏览器类型和各个 PC 上的负载。您是否见过只加载了几个工具栏并跟踪所有用户操作的浏览器会发生什么?即使是页面优化程度最高的网站,速度最快的网站也会缓慢爬行。

做好你的工作并优化页面设计、组件数量、缓存模型等……然后为了性能和可伸缩性,将你的注意力从客户端转移到服务器上。

于 2013-09-22T16:02:06.063 回答
0

由于您已标记 ASP.Net,您可能想查看 ANTS 性能分析器 - http://www.red-gate.com/products/dotnet-development/

于 2013-09-24T09:01:08.730 回答
0

http://html5testing.co一起使用了 phantom.js 和 casper.js。他们自定义构建了一个测试,使用 webkit 在任何浏览器上与您的应用程序交互。您可以获得带有屏幕截图的报告,可以随时运行测试,它会进行延迟监控,并且您可以查看之前运行的所有测试。

它不是免费的,但它肯定比你可以用拼凑的东西进行测试的所有时间便宜得多。

于 2013-09-18T19:38:36.537 回答
0

阿帕奇 JMeter

阿帕奇 JMeter

描述:开源负载测试工具:它是一个Java平台应用程序。它主要被认为是一种性能测试工具,也可以与测试计划相结合。除了负载测试计划,您还可以创建功能测试计划。该工具具有加载到服务器或网络中的能力,以检查其性能并分析其在不同条件下的工作情况。最初,它是为了测试 Web 应用程序而引入的,但后来它的范围扩大了。它在测试 Servlet、Perl 脚本和 JAVA 对象等资源的功能性能方面非常有用。需要 JVM 1.4 或更高版本才能运行。

Apache JMeter 系统要求:在 Unix 和 Windows 操作系统下工作
下载链接Apache JMeter 下载

NeoLoad

在此处输入图像描述

描述:负载和性能测试软件:这是一个用于测量和分析网站性能的工具。使用此工具可以评估性能和最终结果,并且可以采取任何进一步的步骤。这有助于您改进和优化 Web 应用程序的性能。该工具通过增加网站流量来分析 Web 应用程序的性能,并且可以确定重负载下的性能。您可以了解应用程序的容量以及它可以同时处理的用户数量。这个工具是由一家名为 Netosys 的法国公司开发的,它是用 JAVA 编写的。它有两种不同的语言版本;英语和法语。

NeoLoad 系统要求:此工具与 Microsoft windows、Linux 和 Solaris 等操作系统兼容。
下载链接NeoLoad 下载

LoadRunner

在此处输入图像描述

说明:这是一款惠普产品,可用作性能测试工具。这可以作为 HP 产品从其 HP 软件部门购买。此外,当存在实际负载时,它对于理解和确定系统的性能和结果非常有用。该测试工具的主要吸引力之一是,它可以同时创建和处理成千上万的用户。此工具使您能够收集有关性能以及基于基础架构的所有必需信息。LoadRunner 包含不同的工具;即虚拟用户生成器、控制器、负载生成器和分析。

LoadRunner 系统要求:Microsoft Windows 和 Linux 是该测量工具的理想操作系统。
下载链接LoadRunner 下载

加载UI

在此处输入图像描述

描述: 开源压力测试工具:Load UI 是另一个开源和负载测试软件,用于测量 Web 应用程序的性能。该工具在与功能测试工具soapUI 集成时可以有效地工作。LoadUI 是最灵活和交互式的测试工具。这允许您在测试应用程序时创建、配置和更新测试。它还通过拖放体验为用户提供视觉帮助。这不是一个静态性能工具。即使在测试应用程序时,高级分析和报告生成功能也允许您通过输入新数据来检查实际性能。每次修改或更改应用程序时,您无需费心重新启动 LoadUI。它会在界面中自动更新。

系统要求:跨平台。价格:这个工具是一个开源应用程序,它是免费提供的,每个人都可以轻松访问它的完整源代码。
下载链接LoadUI下载

网页加载

在此处输入图像描述

描述: Web应用的负载测试和压力测试工具:要找出网站的瓶颈,就要审视利弊。有许多性能测试工具可用于测量特定 Web 应用程序的性能。WebLoad 就是这样一种用于负载测试和压力测试的工具。该工具可用于负载测试任何 Internet 应用程序,例如 Ajax、Adobe Flex、Oracle Forms 等等。通过此工具,您可以衡量工作绩效及其对用户的反应。这是由 Radview Software 开发的,用于测试 Web 应用程序。该工具是Radview Software的著名且屡获殊荣的软件。该工具广泛用于对最大负载测试有高要求的环境中。

WebLOAD 系统要求:跨平台。
下载链接WebLOAD下载

WAPT

在此处输入图像描述

描述:网站和内网应用的性能测试工具:WAPT是指Web应用性能工具。这些是用于测量任何 Web 应用程序或 Web 相关接口的性能和输出的尺度或分析工具。这些工具帮助我们衡量任何 Web 服务、Web 应用程序或任何其他 Web 界面的性能。使用此工具,您可以在各种不同的环境和不同的负载条件下测试 Web 应用程序的性能。WAPT 在负载测试期间向其用户提供有关虚拟用户及其输出的详细信息。这被认为是分析 Web 服务性能的最佳成本效益工具。WAPT 工具可以测试 Web 应用程序与浏览器和操作系统的兼容性。

WAPT 系统要求:此测试工具需要 Windows 操作系统。
下载链接WAPT下载

装载机

在此处输入图像描述

描述:Loadster 是一个基于桌面的高级 HTTP 负载测试工具。网页浏览器可用于记录脚本,易于使用和记录。使用 GUI,您可以使用动态变量修改基本脚本以验证响应。通过控制网络带宽,您可以为应用程序压力测试模拟大型虚拟用户群。执行测试后生成 HTML 报告以供分析。此工具最适合识别应用程序中的性能瓶颈。

Loadster 系统要求:Windows 7/Vista/XP
下载链接Loadster 下载

负载影响

在此处输入图像描述

描述:LoadImpact 是一个负载测试工具,主要用于基于云的服务。这也有助于网站优化和即兴任何 Web 应用程序的工作。该工具通过模拟用户来生成网站流量,从而找到它可以工作的压力和最大负载。这个 LoadImpact 包括两个主要部分;负载测试工具和页面分析器。负载测试可分为Fixed、Ramp up和Timeout三种类型。页面分析器的工作原理类似于浏览器,它提供有关网站工作和统计信息的信息。开发此负载测试工具的名声属于 Gatorhole AB。这是一项免费增值服务,这意味着它可以免费获得,也可以以高价购买。但,

系统要求:这在 Windows 操作系统和 Linux 上运行良好。
下载链接LoadImpact 下载

Rational 性能测试器

在此处输入图像描述

描述:Rational 性能测试器是一种自动化性能测试工具,可用于涉及输入和输出过程的 Web 应用程序或基于服务器的应用程序。该工具创建了用户和 Web 服务之间的原始交易过程的演示。最后,收集所有统计信息并对其进行分析以提高效率。借助此工具,可以立即识别并纠正网站或服务器中的任何泄漏。此工具可能是构建有效且无错误的云计算服务的最佳选择。这个 Rational 性能测试器是由 IBM(Rational 软件部门)开发的。他们提出了这个自动化测试工具的许多版本。

Rational Performance Tester 系统要求:Microsoft Windows 和 Linux AIX 对于这个性能测试工具来说已经足够好了。
下载链接Rational Performance Tester 下载

随时随地测试

在此处输入图像描述

描述:Test Anywhere 是一种自动化测试工具,可用于测试任何网站、Web 应用程序或任何其他对象的性能。许多开发人员和测试人员使用这个工具来找出他们的 Web 应用程序中的任何瓶颈并相应地纠正它们。它是一个强大的工具,可以自动测试任何应用程序。该测试工具附带一个内置编辑器,允许用户根据需要编辑测试标准。随处测试工具涉及创建测试的 5 个简单步骤。它们是对象记录器、高级网络记录器、SMART 测试记录器、图像识别和具有 385 条以上评论的编辑器。最初,该测试软件是由位于圣何塞的 Automation Anywhere Inc 开发的。如今,该产品有超过 25000 名用户。

Testing Anywhere 系统要求:此工具与所有版本的 Windows 操作系统兼容。
下载链接Testing Anywhere 下载

开放式STA

在此处输入图像描述

描述:开源HTTP性能测试工具:Open STA代表Open System Testing Architecture。这是应用程序开发人员用于负载测试和分析的基于 GUI 的性能工具。这被认为是所有其他性能测试工具中的复杂工具。它在过去已经证明了它的能力,并且当前的工具集能够对脚本化的 HTTP 和 HTTPS 执行重负载测试和分析。在这里,使用录音和简单的脚本进行测试。为了成功进行测试,通过各种测试运行获取结果和其他统计数据。这些数据和结果可以稍后导出到软件以创建报告。这是一个免费的测试工具,它是在 GNU GPL 下分发的,它将永远免费。这个工具最初是由 Cyrano 开发的,

OpenSTA 系统要求:OpenSTA 只能在 Windows 操作系统上运行。
下载链接OpenSTA 下载

QEngine(管理引擎)

QEngine

描述: QEngine (ManageEngine) 是一种最常见且易于使用的自动化测试工具,可帮助您对 Web 应用程序进行性能测试和负载测试。许多开发人员发现它是最简单易用的工具,可用于找出其 Web 服务或网站中的任何泄漏。此测试工具的关键重要特性是它能够从任何地理位置执行 Web 服务的远程测试。除此之外,QEngine(ManageEngine)还提供了其他测试选项,如功能测试、兼容性测试、压力测试、负载测试和回归测试。该自动化测试工具具有生成和模拟用户批次的能力,以便在最大负载期间可以很好地分析性能。这是一个免费软件,可供用户在线使用。

QEngine 系统要求:此工具适用于 Microsoft Windows 和 Linux。
下载链接QEngine下载

负载风暴

在此处输入图像描述

描述: Web 应用程序的云负载测试:Loadstorm 是最便宜的可用性能和负载测试工具。在这里,您可以选择创建自己的测试计划、测试标准和测试场景。您可以通过为您的网站生成流量然后进行测试来生成多达 50000 个并发用户。通过这个工具,您可以结束所有昂贵的性能测试工具。该工具使用了云基础架构,使您能够每秒发送大量请求。全世界有数千台服务器可用于此软件。他们以最低的云负载测试工具而自豪。使用此工具不需要任何脚本知识。您将获得许多图表和报告,这些图表和报告可以衡量各种指标的性能,例如错误率、平均响应时间和用户数量。该工具是免费提供的,但高级帐户带有附加功能。

Loadstorm 系统要求:Windows 操作系统。
下载链接:Loadstorm下载

Soasta 云测试

在此处输入图像描述

描述: SOASTA CloudTest 是一款云电脑性能测试工具。用户或开发者可以使用云平台作为他们的虚拟测试实验室。开发人员可以通过此 CloudTest 工具以经济高效的方式在云平台上进行性能或负载测试。此 CloudTest 具有使多个用户同时使用该网站的能力。它还增加了网站的流量,以了解压力和重载下的实际性能。开发此软件的功劳归功于一家美国科技公司 SOASTA Inc。他们提供了许多用于测试网站和其他 Web 应用程序的服务,现在他们还帮助测试移动应用程序。它们不是免费服务,价格根据您每小时所需的负载注入机数量而有所不同。

SOASTA CloudTest 系统要求:可在 Windows、Linux 和 Mac OS 上运行。
下载链接SOASTA CloudTest 下载

HTTPerf

在此处输入图像描述

描述:Httperf 是一种高性能测试工具,用于测量和分析任何 Web 服务和 Web 应用程序的性能。这主要用于测试 HTTP 服务器及其性能。该测试工具的主要目标是计算从该特定服务器生成的响应数量。这会从服务器生成 HTTP GET 请求,这有助于总结服务器的整体性能。通过此工具,您将能够得出每个服务器发送响应的速率,从而计算效率。承受服务器过载的能力、支持 HTTP/1.1 协议以及与新工作负载的兼容性是该性能测试工具的三个关键特性。这最初是由 David Mosberger 和惠普的许多其他人开发的。

Httperf 系统要求:Windows 和 Linux。
下载链接httperf

希望这可以帮助..

于 2013-09-20T13:24:45.840 回答
0

首先 - 我使用 browsermob 代理来获取响应时间和代码,但实际上它并没有给你任何像 JS 执行时间这样的东西。你已经提到了 DynaTrace,所以我不会讨论这个。还有什么——我自己没用过,但我听说有人在用httpWatch。它与 C# 集成得非常好,据说能够分析 ajax 调用的性能。

另外,不要忘记,您可以使用 webdriver 注入 javascript,因此您可以尝试使用回旋镖或类似的东西。

于 2013-09-17T18:38:33.730 回答
0

使用AgileLoad进行前端性能测试

AgileLoad 脚本编辑器捕获并分析用户和应用程序之间的所有请求以构建测试场景。

Replay函数验证通过重放和比较每个请求与初始场景生成的脚本。

Replay 选项卡包含测试场景的每个页面的图形条形图,显示主要请求所花费的时间(蓝色)和总体响应时间(橙色)。它还为您提供了所有加载资源的详细信息、每个资源花费的时间、与每个 HTTP 请求相关的详细 HTTP 响应(正文、客户端 HTTP 标头、服务器 HTTP 标头)。

Agileload 前端性能

对于每个页面,您还可以检索 HTML 视图、源视图、结构视图、HTML 树视图、HTML 服务器标题视图

Http 数据窗格

网页性能摘要为您提供有关 DNS 时间、tcp 连接时间、SSL 握手时间、发送时间、服务器时间、接收时间、响应 http 状态、以字节为单位的响应大小等详细信息。

网络性能详细信息

此页面速度瀑布突出显示要针对测试场景的每个页面进行优化的有问题的资源。

Web 应用程序在设计和内容上越来越丰富,同时良好的用户体验成为最令人向往的属性。存在一种误解,即仅通过优化服务器端就可以实现应用程序所需的响应时间。研究表明,80-90% 的页面加载时间花费在客户端,而 40-50% 的页面加载时间可以通过仅关注应用程序的前端来优化,而服务器端优化则为 20%。

前端性能优化也不等同于后端优化。一个是从单个用户的角度提高性能,另一个是从多个用户的角度在资源同时使用时提高性能。

这两个任务是互补的,可以使用Agileload 进行测试。

参考:敏捷负载

于 2013-09-24T12:41:52.263 回答
0

值得一看 Chrome Telemetry ( http://www.chromium.org/developers/telemetry )

它显然只是 Chrome,但它是 Adob​​e 用来测试 TopCoat 性能的工具

于 2013-10-30T11:17:09.420 回答