What is the most effective way to load to load test your app? The main point is to determine how many users you could support at a single time with the application still running at a reasonable speed.
(and a ton of instrumentation to catch duplicate queries and cache misses.)
It is simple, effective and can spawn alot of traffic from a quad-core+ machine attached to your server on gigabit ethernet. It also has cool stuff like rate limiting.
If you want to get really fancy, you can record and playback HTTP traffic with httperf.
The most comprehensive load testing software I have found is HP LoadRunner (sorry for the bit.ly link but the HP link is horrible and won't work correctly). It is very flexible and you can generate a lot of different types of reports from the load tests. You can also have a group of machines work in tandem to load test. Not that other tools are bad but it makes something like Apache JMeter look like a toy.
Microsoft Web Capacity Analysis Tool (WCAT) is reportedly the tool of choice of the IIS team
I am going to put four sets of criteria out there for you to examine tools, and there are lots of them available in the open source and commercial realms to performance test applications.
- Will it exercise my interfaces on my application? There are lots of tools out there which are free but interface monolithic and may not exercise your app fully. Commercial tools have wider protocol/interface support than do open source ones
- Will the reporting match my needs? Nothing is more frustrating than running a test and then having to spend days trying to pull together results into some meaningful form for analysis and to determine whether you have hit your requirements or not. Once again, this is an area where commercial tools beat the snot out of the open source ones.
- Does my team have the technical skills to use the tool? You don't want to be climbing the hurdles or both performance testing process, analysis and then yet another language/tool to learn at the same time. Be realistic.
- Will it run on my testing infrastructure? Check the requirements. IF a particular OS and version is noted, then use it or don't use the tool. Fewer things are more frustrating to tool support when someone calls/emails in with a a problem only to find that the requirements for installation and operation have been ignored.
Numbers 1-3 are critical. Have a miss on any of these three and you may have well have purchased the most expensive commercial tool and hired the most expensive consulting firm to deploy it for you - You don't want to be caught driving nails with the butt end of a screwdriver simply because your boss told you that the nail gun was tool expensive for the house you were asked to build (Note: Nail guns are often available for rental, just like commercial test tools)
The Grinder is a powerful, flexible, and scriptable open source load testing framework. It is actively developed and has a relatively shallow learning curve compared to some of the other options.
It depends on how complex it is; if it's very complex you probably need something more involved, but for a typical dynamic website using a script that spawns several wget instances requesting key pages in your website should work.