I´ve recently started using JMeter to create load tests for my web applications. I really like the tool, and after watching some videos it was really easy to get started with creating tests.
There´s however one thing that I´m not clear about.
Reading on the JMeter homepage, there´s a “Best practice” section. Among other things, it says:
The most important thing to do is filter out all requests you aren’t interested in. For instance, there’s no point in recording image requests (JMeter can be instructed to download all images on a page – see HTTP Request ). These will just clutter your test plan.
I´ve seen this on other pages aswell, saying that you shouldn´t include requests for images or any other static resources in your tests. However I´ve still not been able to find a single page which gives a good explanation as to WHY you shoudn´t include static resources.
Sure, JMeter isn´t a browser, but requests for static resources would no doubt affect performance of your application? Can someone please give me a good explanation 🙂
It all depends on what you are trying to test.
In general, there are two types of performance test I do with JMeter: specific tests, where I look at things that I’m worried about, and “safety net” tests, where I measure the entire application to make sure it does indeed work the way I expect it to.
Specific tests nearly always deal with the dynamic aspects of the web application – the server-side code (.aspx, .php, .jsp etc.). This is where most applications have their bottlenecks – the effort to run a server-side script is many, many times higher than the effort to retrieve a CSS file from disk and serve it up to the browser without any additional processing. If I’m testing the server-side scripts, I don’t want to also load the assets – because they clutter up the tests, and consume bandwidth at the test client end. I don’t want my tests to fail because my JMeter server is downloading a 5MB video file on each thread and consuming all the bandwidth, when what I’m actually trying to do is see how many logins per second the server can support.
There’s very little point in testing your webserver’s ability to serve static files – Microsoft, the Apache team, whoever, have already done a brilliant job at that; unless you have a very specific concern, there are better ways to spend your testing budget.
Safety net tests put the whole thing together to prove that it all really does work the way I expect it. Usually, I run these on a production(like) environment, so I have a CDN, production-grade hardware, and the “live” application config. I usually employ a cloud-based testing service for this, so I can see performance from different locations, and generate enough load to stress production-grade kit. You could use JMeter for this (and there are a couple of JMeter Cloud services I’ve used in the past). It’s expensive, it may require downtime, and you should only do it as a safety net.