9

I'm using Jmeter at my organization for performance testing. The application is a secured web portal that provides a lot of reports and documents to its user.

A major issue that I've run into is measuring the page load times, this is very important for me to measure. Apparently JMeter doesn't support this.

So my question is what tools can I use to measure the page rendering times? It doesn't have to free, all that I need is a reliable tool. Again, this is for a secure application which requires user authentication.

  • 1
    Welcome to SQA, user5392. What do you mean by page load times: how long it takes to fetch a URL, or how long it takes to fetch the URL plus everything the URL references, e.g. CSS, JavaScript, and image files? – user246 Jun 5 '13 at 18:33
5

There are no tools that can provide you client-side rendering times. Client side rendering is not a measurable value, unless all of the devices accessing the system are identical in terms of hardware and network access to the SUT.

However, It is completely viable to do a stopwatch test of the total page rendering time, as long as you communicate to the client/whoever you are reporting to that those measurements are an indication only and take note of the configuration you were using when you took your measurements.

In the past I've had a JMeter test running to apply peak load to the system, and manually I browsed the site using Fiddler in "Streaming" mode. By viewing the timeline you can see the client side rendering time which shows up as "gaps" between requests.

Remember that almost all performance testing tools send network traffic to apply load to a system and therefore will never capture client side render times. Even if they claim to do so, I would be extremely wary.

  • I see an article where you can measure the rendering times for 1 user : nateberkopec.com/2015/10/07/… – anjanb Oct 9 '15 at 10:06
  • Is it possible to measure the total render time from the time the request is submitted until it is done rendering in, say Firebug or even Firefox proper, even if it takes doing it manually ? It should be able to separately record the response time (before the response is received by the client but before the UI is rendered) and then deduct it from the total, which would be just the render time – amphibient Dec 14 '16 at 18:19
  • Yes, you can absolutely measure total rendering time for a single user. I was talking about during a load test where you are simulating hundreds or thousands of users. The value of capturing the rendering time for just a single user is arguable - low sample size, different devices and platforms perform differently, network latency varies from user to user, etc - but as I said it's worth measuring so long as you understand those limitations. – n00ber Dec 14 '16 at 22:20
3

Check out HTTPWatch http://www.httpwatch.com/

It's a really good tool that sounds like it may meet your needs.

I've used the free "Basic Edition" version for some client-side performance tests and analysis. And I've recommended it to some friends who use the "Professional Edition".

Good stuff, and one I keep in my Tester's Toolbox http://www.allthingsquality.com/2010/04/testers-tool-box.html

1

Check out DynaTrace Ajax edition. http://www.compuware.com/en_us/application-performance-management/products/ajax-free-edition/overview.html

It's free, and gives a timeline that includes javascript execution & page rendering.

1

I've read that HTTPWatch doesn't cover javascript rendering time (although can't confirm this). Compuware Gomez has a commercial tool.

WebpageTest also has a version you can download and run on your servers to test a variety of aspects of the load.

Chrome and Firefox also have web developer tools, where you can inspect the load t imes of the various elements.

  • What do you mean by "javascript rendering time"? – Joe Strazzere Jun 6 '13 at 12:16
  • 1
    @Joe - Javascript execution and browser rendering happens after a response is recieved from the server. Tools like HTTPWatch measure how long it takes to get a response, but do not measure any additional time it takes for the browser to execute the javascript or render the page, which if it's a javascript/ajax heavy page could be significant. – Sam Woods Jun 6 '13 at 23:05
1

A few tools have been mentioned in other answers that could help such as Dynatrace Ajax edition, Compuware Gomez and WebPageTest. Another tool I have used is Selenium Webdriver with some custom timers.

There are a few caveats that you need to be aware of for this kind of performance measurement:

  1. The browser you are using will affect the JavaScript execution and rendering speed, you will get different results in different browsers.
  2. The available system memory and CPU will affect the speed. If you have a resource constrained or under-powered machine it will affect the results.
  3. You need to quantify what "done" is. A single page load could encompass many additional xmlhttp requests and additional javascript execution, and sometimes pages will even have timers that execute javascript at certain intervals.
  4. If using tools like Selenium your test needs to be clear about what done is, for example you may be watching for an element to appear and as soon as that element appears you consider it "done".
  5. Selenium (and the other mentioned tools) use javascript to poll for a certain state and that polling can in and of itself add time onto the execution and rendering time. The amount of time that can be added depends on the size of the page and the complexity of JavaScript execution.

So in summary, if you are testing on a standard hardware/browser setup you can get somewhat reliable numbers with a little extra time added on for the time the tool adds in. You'll never get anywhere near as reliable numbers as you would from measuring server response times because there are a lot more factors to take into consideration. With all of this said, I would still say it's a good idea on ajax/javascript heavy pages to measure the performance.

  • By the way, DynaTrace Ajax is only for for Firefox version 17 - 30, other versions are not supported – user9067 Oct 27 '14 at 17:19
0

One of the most interesting approach I've used in the past is the combination of Selenium/WebDriver with BroserMobProxy. There is an article with some code examples in Python written by David Burns. This approach is nice when you already have some Selenium tests and just want to calculate the page load time on the way of your scripts.

0

Use this code for Selenium Webdriver:

long start = System.currentTimeMillis(); long end = System.currentTimeMillis();

System.out.println("Execution time was "+(end-start)+" ms.");

0

The tools HPE Loadrunner/Performancecenter with the TruClient protocol (more info) and MicroFocus Silk Performer with the Browser Driven protocol (more info) do offer measuring client side.

0

At Microsoft Dynamics 365 CRM, we measure rendering time on various browsers and devices. Various DOM events are tracked for this purpose called markers. These markers are coded into a javascript which listens to DOM events and writes out the time taken to browser console.

  • 1
    This doesn't really answer the OP's question because it relies on code embedded into the application in test. – Kate Paulk Mar 15 '18 at 11:28
  • There is no tool. But This one of the nice ways to do it. Even a chrome plugin that has minimal foot print can do this job externally without being a part of the app. – Bikramaditya Padhi Mar 16 '18 at 12:32
  • Please add that information to your answer to make it more relevant - the OP needs a way to solve their problem when they have no control over the application in test. – Kate Paulk Mar 16 '18 at 12:43

protected by Kate Paulk Mar 15 '18 at 11:26

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.