When the internet was first conceived, the idea was to be able to share information freely across distances. That idea never changed, but the numbers of users are much larger, the speeds are much faster and the amounts of data moved are orders of magnitude greater. Every twelve to eighteen months, computers double their capabilities, and so do the information technologies that use them. The question that really needs consideration, then, is whether the applications that support your website can take the load, can bear the weight of traffic that you want to show up and can handle the myriad calls and requests made by your users when they come to visit?
The way to make sure that the answer to that question is always a resounding “YES!” is to perform the appropriate tests during development, QA testing and even in the production environment. The three types of test to run against your website are load, stress and capacity testing. Each one serves its specific purpose and each should be used to make your applications as robust and resilient as they can be.
Load testing is done to measure the behavior of applications and environments during both normal and extreme load. They are designed to determine the maximum amount of load an application can withstand, and a successful load test will uncover bottlenecks and weak spots in the code that can cause it to buckle under a sudden spike in traffic.
Both load and performance testing are used to analyze software by subjecting it to varying amounts of load while tracking the performance under different load conditions. Load testing is a must during development and QA testing of applications, but can also be useful for testing the production environment during off-peak hours to determine the stability of the site that is the face of your business.
Stress testing is designed to determine how well the environment and application can maintain a desired level of effectiveness under unfavorable conditions. Stress testing is most appropriate in pre-deployment situations when errors like server failures or load balancer misconfigurations can be artificially introduced into the system to see how it reacts. Stress testing is also useful to determine the breaking point of your system, to determine if design specifications have been met and to document how the system fails as load increases.
Capacity testing is targeted at testing whether the application and environment can handle the amount of traffic that it was designed to handle. It can be used during the design phase to benchmark the numbers of users or transaction the system can handle under a given set of circumstances.
Capacity testing can also help with strategic planning, so you can proactively increase infrastructure before limits are reached and the user experience is impacted.
- Load tests exercise the code and try to find bottlenecks and bad code.
- Stress tests try to break the system so it can be improved to fail gracefully or so that system activity can be monitored for signs of being overwhelmed.
- Capacity tests ensure that the website can handle the number of users and transactions that it was designed to handle. They can also be used to help determine when the environment needs to be beefed up to meet demand.
To learn more about each of these test types and which tests you should implement now, watch our webinar Load Testing Best Practices: 3 Use Cases Every Company Should Run