I've had to load test HTTP servers/web applications a few times, and each time I've been underwhelmed by the quality of tools I've been able to find.
So, when you're load testing a HTTP server, what tools do you use? And what are the things I'll most likely do wrong the next time I've got to do it?
JMeter is free.
Mercury Interactive Load Runner is super nice and super expensive.
I feel unusually qualified to answer this question, since my current company needs to simulate 25,000 simultaneous connections to our web servers (we serve online ads).
For extremely high-volume load testing, Httperf is the way to go. It's free, and in our experience, it can simulate more simultaneous connections that JMeter or STA on the same hardware.
Edit:
Just in case you're curious, we simulate 3500 requests per second on a low-power, inexpensive, ultra-small-form-factor Optiplex 330. These little boxes cost only $280, and we have a bunch of them hooked up to run Httperf on-demand. By comparison, JMeter could only push about 800-900 req/sec on this hardware.
If you just want to throw load at a single URL at a time on a web server then download Apache AB. It comes with Apache HTTP server.
Simple command
would run 10000 requests with a concurrency of 10 users.
If you want to record browsing sessions then go upvote and accept the jmeter answer. Jmeter is amazing and it can scale to many test machines that can throw huge load.
There is Tsung, an Erlang based tool.
There's also a really long list of tools over at http://www.softwareqatest.com/qatweb1.html#LOAD
For a quick test you could use curls sequences and sets of URL's. Say for example we're going to run a load stress test against Google we can run...
This will make 1000 calls to google i.e.
This is discussed in more detail at How to quickly stress test a web server with curl.
You will need to set up different tests:
After/before each test, you must put back the platform as before: restore database, reboot to clean memory and cache.
You will also implement a warm-up: Launch scenarios once before the real test, so web pages are compiled, connection to database made. Else, the first call will always be bad in your stats.
You can add complexity, like:
One last important thing: You MUST save all completed scenario to be able to make them again exactly the same way, so you can compare performance with previous tests.
If you are just looking to test how it handles multiple connections you can use something like Siege. Still not sure it is a great measure but it will at least tell you how you are handling multiple connections
I've used openSTA.
This uses a relatively simple script language.
You can easily test web services / servers and write your own scripts.
It allows you to put scripts together in a test in any way you want and configure the number of iterations, the number of users in each iteration, the ramp up time to introduce each new user and the delay between each iteration. Tests can also be scheduled in the future.
It's open source and free.
It produces a number of reports which can be saved to a spreadsheet. We then use a pivot table to easily analyse and graph the results.
I used LoadRunner before but, it's rather expensive, I've also used Microsoft's Team Tester edition tools which includes a system that conduct load tests. I was fairly happy with how the tool worked, and you could expand the tests using .net which was an easier syntax to pick up then LoadRunner's.
The version of load runner we used also couldn't handle our AJAX site (This was back in 2000 so I am sure the tool has been enhanced by now)
We use WAPT, and it works very well. Easy to set up, and just a few hundred bucks. LoadRUnner is ridiculously overpriced, and totally out of reach for all but hte Forutune 500.