If you're building a web application and have high hopes that it will be used by lots of people, one of the most important things to do before you launch it is to test how it functions under extreme conditions.
The purpose of stress and load testing is simple - find out what happens to your application when it gets "hammered" by simulating lots of usage.
When done right, such testing can mimic real-world usage and will yield valuable data.
You'll find out how your application performs. You'll often be able to locate performance bottlenecks. And you can better determine what sort of scaling strategy makes sense for your application.
Fortunately, there are a number of open source testing tools that enable you to do all of this without spending an arm and a leg.
This tool, written in C, simulates the behavior of thousands and tens of thousands of client requests and has support for authentication.
FunkLoad is an advanced and versatile testing tool that can help discover bottlenecks, "expose bugs that do not surface in cursory testing," and determine how your application manages under heavy stress.
Because it mimics a real web browser, has advanced configuration options and provides detailed reports, it's one of my favorite testing tools.
Hammerhead 2 is a stress testing tool that can simulate many concurrent users at a single time. Its configuration functionality permits the creation of "scenarios" that enable you to simulate real usage.
JCrawler is a very nifty stress testing tool that functions a bit differently than most other stress testing tools. First, it acts like a crawler so it can more easily provide widespread testing of a complex application without requiring lots of explicit configuration. Second, it allows the user to specify hits-per-second instead of "threads." And lastly, it supports applications that make use of HTTP redirects and cookies.
The maker of this Java-based tool claims to have 160,000 users and describes TestMaker 5 as a "test automation tool" that can simulate "real-world production environments to test scalability under increasing levels of load."
Commercial services and support are available.
A multi-threaded stress testing tool, Pylot allows the creation of "test cases" via an XML file. Requests can be configured, a nice GUI is offered for real-time monitoring purposes and useful reports are generated at the end of each test.