views:

484

answers:

7

I'm maintaining a web app that has performance problems.

I want to record a series of actions, then play back those actions once I've made changes and compare page load times so that I can quantify the performance improvement.

The Selenium IDE does what I need for recording and playing back the actions, but I haven't found an easy way to record timings.

Is there a good way to record and compare page load timings using Selenium? Is there a better tool to use instead?

A: 

To answer the subject, I like to use the IIS Resource Toolkit for a few things.

Noon Silk
+2  A: 

Depending on the complexity of your application, you may be able to use JMeter, by the ASF.

It's a purely Java based load-testing application with a number of graphing plug-ins, protocol supports, controllers, reporting frameworks and such. You can choose what data to log, how to graph it, how to output it to file and so on. It'll even put it into CSV or a variety of XML based formats.

It's ugly but workable, unless your application is heavy with JavaScript... It doesn't include a VM capable of running it and you'll have to do things like AJAX using hacks (Such as Regexes and handcrafted responses. Icky.) It's open source so you can add additional controllers if you need too.

Still, to do what you want (Record actions, replay, graph/store results) it should suffice.

Dylan Lacey
A: 

I generally measure the time that each request takes using System.currentTimeMillis, and log it at the debug level in development and test environment. Then I run selenium or JMeter, and later process the logs to gets different stats. I take the slower requests and keep drilling into them to see where the slowness and bottleneck is.

Alternatively, instead of doing it in the code itself, you can either write your own selenium scripts or use the script the recorder generates, and add some logging into the generated code.

UI performance is a completely different beast. I pretty much rely on YSlow for it.

Langali
+2  A: 

The Net Tab in Firebug can help you measure and find out what exactly is affecting the load time of the website. You don't even need to have access to the server to use it. YSlow Gives you very cool tips for improving the overall load and feel of a specified site. I personaly use the Net tab to identify possible load times, may it be large images, javascripts css or bad latencies. I never heard of an automated tool for doing this, AFAIK selenium helps you build integration tests which helps you ensure certain parts of the application works as expected, but I'm not sure if it can also be used as a profiling tool. I hope this helps

Lonecat
+5  A: 

You might want to take a look at BrowserMob (http://browsermob.com/). You can upload your Selenium IDE test scripts and get them to run on your site. It's founder is the creator of Selenium RC, Patrick Lightbody.

Dave Hunt
A: 

I've just read this blog post and remembered your question. It involves YSlow, Selenium and some skills, but will give you just what you were looking for, a quick and automated performance report of your application: http://adam.goucher.ca/?p=1017

Santi
A: 

I would take a look at Faban.

Simple to setup and use for the easy case, stressing a single page using "feh".

For more complex usage patterns you can build your patterns to mimic a full load on your site.

sfriberg