What is Load Testing and How Do We Do It?

By Jacob Haug

Load testing is the process of exploring a web application’s limitations. When we run a load test, we simulate many users trying to access a web application and each of its features. In the process, we learn where the app slows down under the load, and where it stops working from overload.

In this article, we’ll take a look at the types of questions load testing can help answer. This includes scalability, speed, and bottlenecks in your current hardware and code. Using iterative load testing is the key to making sure applications scale efficiently. As a web application gains more users, we make recommendations on how to upgrade server hardware and optimize the underlying code.

Testing the Limits of Your Application’s Infrastructure

Load testing is all about pushing the limits of a web application. It’s a key part of developing a new web app or updating an existing app. This is especially true for web applications that anticipate rapid growth in user base. Whether the app is a public growth-phase startup or an internal application for a company that expects to expand, you’ll want to conduct a load test to see how the application performs under stress.

We like to use loader.io for a lot of our load tests. It helps us see how our applications handle increasing traffic. When a web application slows down, there are multiple possible culprits for the delay:

  • The web server could be at its limits
  • The database server is operating inefficiently (lazy/eager loading)
  • The web app itself is inefficiently coded
  • Other combinations of possibilities in hardware or software

It’s important to understand what your infrastructure can support from a traffic standpoint. We can also run tests with different configurations. Upgrading one or several of the servers might increase load limits. Understanding where your limits currently are, and where they might be in the future, we help you decide on the optimal configuration for your web application infrastructure.

Save Money By Planning for Good Scaling

When you add more users, introduce heavy-duty new features, or a combination of the two, your requirements for infrastructure may change. Load testing is critical to ensuring your infrastructure will scale the way you expect.

To plan for scaling, we outline several scenarios ahead of time that we want to test. We then run the tests against those scenarios, looking for opportunities to optimize hardware and software. Failing to load test can cost a lot of money when surprise infrastructure upgrades come along. This is especially true if you haven’t identified bottlenecks ahead of time and decided on an upgrade plan that scales properly.

Identify Bottlenecks in Your Application

Many people think of load testing as optimizing hardware for scaling a web application. But load testing is also a key part of identifying software (code) that needs to be improved. This process is usually called performance profiling. It’s an essential part of optimizing for high loads.

When iterative load testing encounters a problem, it could be the server hardware, but it could also be the code. Over the course of multiple tests, we narrow down where the problems are occurring to decide if it’s a hardware or software issue. Sometimes, rewriting the code can drastically reduce load time and stress on the servers.

Software problems can stem from poor load balancing, making many high-security requests, and inefficient database statements, among others. Often, it’s possible to revise the code to make fewer queries of the database and balance loads more effectively. Once we resolve these software inefficiencies, optimizing the hardware infrastructure gets a lot easier.

To help with identifying bottlenecks, you can get detailed performance metrics showing what parts of your code takes the longest to execute. This goes a step beyond load testing, as it requires a profiler. The profiler uses sampling during the testing to find where the most performance load came in the application. Doing so can give valuable insight into the parts of your application that might be inefficient.

Conclusion

Load testing is essential to creating fast, scalable web applications. Contrary to perceptions, it’s not just about testing the limits of the hardware. Load testing also helps identify bottlenecks in the code. The end result is a web application and scalability plan that’s reliable, efficient, and cost effective.