Raw Load Tester v1.0
The RawLoadTester application is a free Open Source tool to load test websites. It does not have many features but it is useful in situations where using a more comprehensive load testing solution (e.g., Apache Flood) is not practical.
The application calls the URL you select as many times as you choose and tells you how long it took the server to respond. It writes some additional runtime details to the PHP log file so you can optionally do more granular analysis afterwards. Although the server processes most of the statistics, all URL requests come from the browser. You can run as many browsers and workstations simultaneously as you want.
It is possible that non-programers can install and use this application (e.g., junior testers); but, these instructions and the program itself assume the installer and user are familiar with their webserver configuration.
In general, if you can load one page onto a PHP host, then you can use this application to test your URL.
- PHP on which to host the load testing page (free)
- Permission to load test the target URL
IMPORTANT: Only load test URLs that you are authorized to load test! If you do not own the server and do not have permission to load test the application on the server, do NOT load test it.
How To Use
The main part of the application is the RawLoadTester.php page. You should host this page in an envirionment that runs PHP scripts, for example a web server that runs PHP pages.
The RawLoadTester.php page looks like this when you first bring it up in your browser after installing it...
The IP address of the user calling the page appears in the page header and also in log entries during the test runs. The default URL is just the URL to the page itself. The Test Counter has a default value of ZERO, but you need to make that a non-ZERO number before starting your test.
As an example, lets run a simple test with 50 iterations on the localhost installation for which we are taking screenshots. First, we set the URL to the license.html page. Next, we put the value 50 into the Test Counter field. We don't change the default values for Time Spread and Avoid Cache. The page would then look like this...
After we click the "Start the Test" button, the screen becomes red and we see the URL page load repeatedly while the test runs.
Once the test is complete, we see a summary of our results at the top of the page.
NOTE: Elapsed time is measured in whole seconds. The average elapsed time is computed as an average of those whole seconds, so there can be fractional results for the Average interval but not for the Minimum and Maximum intervals. For example, if the response time was less than a second, you will see 0 seconds as the Minimum interval value..
- Test URL - This the URL of the page that will be repeatedly called for the test.
- Test Counter - The number of times the script will request to load the page at the Test URL.
- Time Spread (hours) - Only use this if you want to spread the iterations over a fixed period of time. Two hours is "2", a half hour is ".5", fifteen minutes is ".25". The script will automatically compute the appropriate pause between requests to spread it out over the requested time. A value of zero here requests the URL as fast as possible.
- Avoid Cache - Generally want this to be "Yes". If you make it "No", the script will not append a changing parameter to your URL and the server will likely respond from the cache.
Log File Entries
The script writes to your php error log file as it runs. All entries start with the text "RAWLOADTESTv1.0". The first entry will have a value of "[STARTRUN]", the last entry will have a value of "[DONE]", and all the lines between have a label of "[TESTING]". Each entry has some time and iteration details, along with the URL and IP address of the user that started the test.
Saturation can be a complex topic involving considerations such as how many workstations will be running the script and how many windows will be running in each workstation. Consider using the Time Spread parameter when simultaneously using multiple windows and/or multiple workstations. You can validate performance criteria worded such as "System shall service X users within Y hours." If the test does not finish in Y hours given X iterations then the system can be assumed to have failed that performance criteria. You can check the Maximum interval statistic to see if you exceeded a response time requirement on the system.
If your web application has good error logging, make sure to check the error logs after your load test. If the load test broke your application, you might find some details there.
If you find this useful, please let me know. Also, if there is enough interest in an IIS/ASP/.NET version of the application I'll post one of those. You can reach me at email@example.com. Put "RawLoadTester" into the subject line so my spam filter is less likely to toss it before I see it.