When you’re building complex web applications that need to support hundreds, or thousands, or hundreds of thousands, of concurrent users, you need an efficient and realistic way to simulate that level of load on your infrastructure.
There are some tools, like Apache AB, and Siege, which can be really useful for basic load testing – especially for simple needs like testing a single URL, your homepage for instance – and determining how many requests per second your infrastructure can handle if your home page is put under “siege”.
These are command-line tools, though, so you need to be adept at working with the command line to put these tools to their best use. Siege, for instance, will output its data to a delimited text file, so that you can track multiple tests and analyze the results. Of course, you’ll also need to have a “siege” server set up and separate from the infrastructure you want to test.
Of course, you’ll want to run multiple load test since generally you want to keep scaling up your concurrency until you find the breaking point of your infrastructure. By taking an organized and incremental approach, you can configure your “siege” server to hammer your testing environment with ever higher concurrency values, logging each test’s result, and then analyzing the data to find at what level of concurrency your site starts to respond too slowly for satisfaction.
Soon enough you’ll realize that you need to load test more than your homepage, and that really, you need to test realistic user scenarios – like completing a transaction in your system. While this is also possible with Siege (you can configure a text file with a series of URLs to access, and POST data too) soon, as the sophistication of your test increases, you’ll find managing the scenarios and executing each with various levels of concurrency, rather cumbersome with a command-line tool.
Enter a SaaS solution – one we’ve used quite a bit at Endertech is Load Impact. A few great things about Load Impact include:
- A GUI to configure your test
- You can automatically set the various step-ups of concurrency you want, and the duration at each step.
- You can specify the User Scenarios you want to run.
- An intuitive API to configure your User Scenarios.
- You can store these for easy re-use.
- Don’t be scared off by these scenarios even though it looks like a lot to type out!
- Load Impact provides a browser plugin you can use to create User Scenarios just by clicking around your site!
Basically, create an account on Load Impact, install the recorder plugin, start it and navigate your site like a real user. Save the results as a User Scenario, configure your test parameters, and press start! Voila! What might have taken hours to configure and load test with Siege is done in maybe 15 – 30 minutes.
To add icing to the cake, Load Impact provides beautiful visual reports and stores them for posterity. You can now quickly run a sophisticated and consistent load test on your website or app, focus your time on tuning your infrastructure for maximum performance, then show your bosses the results in a format they can understand.
We could go on. Load Impact has many more sophisticated tools for advanced load testing; for instance, simulating load coming from different areas of the country, running multiple User Scenarios simultaneously, and simulating different network bandwidths (for instance, mobile vs land).
With Load Impact’s help, Endertech has been able to configure clusters of servers on both Amazon AWS and Rackspace Cloud environments that are proven to support thousands of concurrent users. If you need to know the scalability of your infrastructure, or to create and prove a scalable infrastructure, we can heartily recommend Load Impact as great load testing tool. And if you hire us to consult and do this work with you, this will be our tool of choice.