Pulling performance stats from browsers is *hard* work - probably the
hardest part of the whole thing. Just look at all the work Pat Meenan
has had to do, or that WebMetrics does, or that BrowserMob does. Now
do the same for Firefox, Opera, Safari, Chrome, mobile devices, and
whatever comes out next.
PageSpeed and YSlow started their lives (and continue to do so) as
Firefox-specific tools, but the core of what they do (page performance
analysis) really isn't Firefox-specific. I want to avoid having to
create a PageSpeed/YSlow for every browser and having new proprietary
APIs to pull that data. We already have to do that to get HAR data,
let's not multiply the work by 2X or 3X.
Yes, I understand there are data inputs that they need that HAR does
not provide. But maybe we should move the goalposts around HAR and get
those data inputs (such as JS performance) in there. Or if not HAR,
some other standard data structure that sits of top of HAR. That way
we have a chance at A) getting browser vendors to provide a conduit to
that data natively (holy grail), and B) allowing innovation with
YSlow/PageSpeed-style analysis without getting bogged down in browser
internals.
So while I agree we _can_ capture PageSpeed/YSlow beacons and that we
_should_ do the analysis they provide, it strikes me as more efficient
if we focus our energy on pulling out data in a cross-browser
compatible manner and then do analysis in a way that is offline and
works for all browsers.
Hopefully that clarifies my position a bit more.
Patrick
--
We provide FREE website monitoring and load testing
http://browsermob.com
Patrick Lightbody
Founder, BrowserMob
+1 (503) 828-9003 x 101
I posted a doc with the initial component thoughts and everyone currently in
the group should have permission to go in and modify it. The GUI components
may end up not being important to discuss in this context as they are just
API consumers and don't expose an API of their own.
Thanks,
-Pat
I just added some comments to the doc (look for the [PL: ... ])
My gut says that if I had to prioritize the various components, I'd
personally start with:
1) Results Storage (particularly locking down the API)
2) Browser Automation Engine (particularly the extraction of the perf
data to pass in to the above API)
3) Processing Engine
4) Task Manager
5) Front-end/GUIs
Patrick
I didn't want to jump the gun too much for throwing out just my thoughts but
I'd love to see all of the interfaces be REST http interfaces and any
process-specific stuff would be contained within each box.
What I was proposing as the task manager would essentially be the
centralized logic that knew how to hand work out to various test agents and
scheduling tests but wouldn't do any browser control itself. An interesting
point of discussion would be if the task manager would push to test agents
or the test agents would poll the central scheduler (though this is probably
getting a little too in the weeds already).
If I can carve out some time tomorrow I'll try and put a picture together of
what I was thinking for people to throw darts at. As a bunch of us have
some pretty large scale deployments I expect there are multiple ways to
solve the problem and I don't want to push my way too hard so please feel
free to shred it and tell me I'm an idiot :-)
At a minimum we might at least be able to come up with a subset of the rules
that can be handled this way and potentially leave the other rules for users
using the actual desktop plugin. Enough sites so utterly fail to even get
the basics right that we don't necessarily need to solve for 100%.
-Pat
-----Original Message-----
From: web-testin...@googlegroups.com
[mailto:web-testin...@googlegroups.com] On Behalf Of Adrian Yee
Sent: Thursday, June 03, 2010 8:18 PM
To: Web Testing Framework
Subject: Re: Ideas so far
Adrian
IMO, we should try to make most of the this effort work with the
assumption that we can get eventually get 100% of the data we need to
process recommendations from PageSpeed and YSlow offline.
For the stuff that we can't (currently) get out, perhaps this is a
place to take advantage of HAR's custom extensions (keys that start
with _ I believe) and encode custom data/results there?
Patrick
BTW when I said "3 major browsers" I meant Firefox, IE, and the
webkit-based browsers (Chromium and Safari together).
Patrick
--
We provide FREE website monitoring and load testing
http://browsermob.com
Patrick Lightbody
BrowserMob
(w) +1 (503) 828-9003 x 101
(m) +1 (415) 830-5488
On 6/3/2010 1:46 PM, Souders, Steve wrote:
[let's move this to web-testin...@googlegroups.com when everyone's
there]
It's very cool to see these tools evolving and the potential as they fit
together. We're really at the beginning of a new space that's going to be
big. HAR was just an idea that has flourished. It's very likely whatever we
settle on here will become pervasive and a standard within a year.
Wrt offline YSlow & Page Speed - some critical rules (% of JS executed)
aren't feasible offline.
Wrt scripting languages - we'll definitely need this eventually, but right
now most (all?) web sites don't have the basic performance metrics on their
main URLs. We need to keep scripting languages in mind, but definitely a
phase 2 or 3 item IMO.
The phase 1 goal for me would be that web site owners have a chart of page
load time, total page weight, and YSlow and/or Page Speed score plotted over
time. And then we can add drill down capabilities.
-Steve
On 6/3/2010 9:31 AM, Rachitsky, Lenny wrote:
I'm 100% in on this too. The things that I see as more important are having
a consistent scripting language that you can use across services/tools (e.g.
Selenium/Webdriver), and being able to compare apples-to-apples when looking
at performance metrics amongst different services/browsers (e.g. HAR,
Firebug, Speed Tracer, PageTest). This would have the biggest impact imho,
especially in the commercial monitoring space.
Recently I've been working on adding support for exporting to HAR from our
monitoring service, which will allow us to integrate Page Speed/YSlow
recommendations and eventually integrate directly with the tools we're
talking about here.
On 6/3/10 6:46 AM, "Patrick Lightbody" <pat...@browsermob.com> wrote:
I'm absolutely behind this effort. I think all the parts can and should have
at least one open source implementation over time, but the most critical
shared components are likely:
- Browser automation (ie: Selenium)
- Automated HAR extraction (ie: PageTest for IE, Firebug+NetExport+XYZ for
Firefox, Proxy-based approach for other browsers, etc)
- "HAR Server" that provides standard set of APIs to save, organize, and
query HAR resources
In my opinion, we shouldn't even be thinking about things like capturing
PageSpeed or YSlow at the browser. We should just capture HAR and work with
those teams to get to the point where we can generate complete reports
entirely from offline HAR captures. And if HAR 1.1 or 1.2 doesn't contain
enough data to do that, then we evolve HAR as well.
I think once those three components are taken care of, all the various open
source, free, and commercial interests will sort of work themselves out and
we'll see other stuff, such as graphing or scheduling, open up naturally.
I'm attaching an incomplete slide deck that I've previously shared with Pat
Meenan and Steve Souders that has my thinking around this. It's based around
two existing opensource projects I've been tinkering with, both of which are
nascent efforts at the above three components:
- http://github.com/lightbody/browsermob-proxy
- http://github.com/lightbody/browsermob-page-perf
Pat: would be great for you to set up a mailing list for us to go down this
effort. Only question is what the name of the group/list should be?
--
We provide FREE website monitoring and load testing
http://browsermob.com
Patrick Lightbody
Founder, BrowserMob
On Thu, Jun 3, 2010 at 5:30 AM, Meenan, Patrick
<patrick...@corp.aol.com> wrote:
Just wanted to pull this off of the list for a bit so we don't have to spam
everyone else.
There have been at least 3 or 4 side conversations I've been having about
standardizing the interfaces for different parts of the web performance
testing stack. I think if we put our heads together we could carve up a
typical performance testing architecture into standard blocks that we all
use and come up with standard interfaces between the components. That way
we could mix and match open source components and proprietary services and
we don't all have to re-invent the wheel.
Does this sound reasonable? If so I'll see about starting up a new group
where we can hash through some of the details. I'm willing to commit to
having Pagetest and WebPagetest use whatever standard we would come to
agreement on which at a minimum would open up IE testing for all of the
tools that are currently firefox-only.
At a really high level I'm thinking the sort building blocks we'd be talking
about are:
- A browser automation engine that knows how to take tasks (pages/scripts),
run them and provide results
- A task manager that knows how to hand out jobs to the automation
engine(s), including support for one-off and recurring tasks
- Front-end components for taking-in and managing work
- A back-end that can take the test results and store them (with standard
interfaces for retrieving the results)
- Processing engines that could plug into the back-end and evaluate the
results (may not make sense but post-processing performance checks may be a
good option to have)
- A GUI for presenting test results (individual and trended support)
The standardization would be around the interfaces in and out of each of
these components. That way we can share browser automation for example but
still leave room for commercial services to differentiate themselves.
Thoughts?
Thanks,
-Pat