Finally, it’s Friday! You are going to have a nice evening with your best buddies at your place. Pizza, beer, and video games—what else could you possibly need after a pretty tough work week? When you are about to decide who’s gonna have a first Mortal Kombat fight, a sudden thought hits your mind: a new episode of your favorite TV show is out today!
Cheerful and excited, you grab a beer and rush towards the TV with an image forming in your head: here you are, sinking into a comfortable sofa, watching a long-awaited episode. No hurrying, no traffic jams, no phone calls, no paperwork. Just you and your buddies, and pizza, and…
Ten minutes have passed. You’re reloading a video streaming service website over and over but the TV screen keeps showing “Sorry, the website is temporarily unavailable. Try again later.” Is something wrong with the internet connection? Or your streaming service?
“No wonder, everyone must be watching this now, the website is overloaded,” notes one of your friends. And you finally realize what’s wrong — the video streaming service owners might have simply cut corners on load testing.
Downtime has proved to be one of the major reasons why businesses lose clients, their reputation, and money. In 2017, Information Technology Intelligence Consulting conducted research among more than 750 organizations to find out the average cost of a server outage. The findings suggest that almost a quarter of the reported server outages cost between $301K and $400K per hour. But the real losses may even go beyond these figures as they include the clients who’ll never go back and the purchases they’ll never make.
One of the reasons why servers go down and disrupt the normal operation of a business is their inability to handle massive traffic increases. To identify the maximum amount of load that the server can cope with and still function properly, load testing is performed.
What is load testing?
Load testing comes as one of the kinds of performance testing—a type of testing that checks how fast an application reacts to user actions under a load of various intensity. It also includes some other types of testing, among them are:
- Stress testing. This checks whether an application can handle sharp increases in load intensity and work beyond its normal operational capacity. For example, stress testing is particularly useful for online shops or ticket booking sites that experience traffic surges during Black Friday or other sales events.
- Volume testing. This checks the ability of an application to handle huge volumes of input data or generate large volumes of data in response to a significantly lower input.
For example, let’s take a look at loan calculators. Usually, they require a relatively small input: the loan type, the total loan amount, the interest rate, and loan duration.
At the same time, as a result, a user gets a full repayment schedule with the calculated principal and interest for each month. Apparently, these heavy calculations cause a significant load on the server.
- Scalability testing. This checks the ability of an application to scale up or down depending on the user request. In other words, would the app function properly if you had to add two more servers to cater for the user needs, or, otherwise, remove some unused servers?
- Recovery testing. This checks the ability of an application to recover when the load intensity is back to normal.
- Soak/Stability testing. As it is clear from the name, stability or soak testing checks the ability of an application to sustain the expected load without a decline in the crucial metrics, such as response time.
Why perform load testing?
Primarily, load testing aims to define how much load an application can handle without crashing or slowing down. The app may work fine during functional testing with even 100 QA engineers using it simultaneously. However, it can entirely or partially crash right after release when thousands of people start using it at the same time. That’s why the environment where load tests take place imitates the production environment to see if the product is able to handle real-life situations.
Other common reasons to introduce load testing into the development process include:
- Finding out if the app lives up to the required performance rates;
- Identifying bottlenecks that may later disrupt the app’s performance;
- Ensuring safety of user data during peak traffic, etc.
What happens when you don’t perform load testing?
You lose clients. When the app slows down and becomes inefficient, customer loyalty suffers first. Clients will hardly wait until the product is back on track again—they’ll simply switch to the competitors.
You lose money. Fixing the problem itself will give you a lot of unplanned expenses. Also add here the money you’ll never earn due to lost clients.
You lose your reputation. Failures and downtimes can contribute to the impression that the product is not reliable. Apps that work with sensitive data are likely to suffer really dreadful after-effects in this case, so banking and medical products are at the biggest risk.
When to start?
Typically, load tests start after functional tests are over and all bugs are fixed, which means the code works properly. Before embarking on load testing, it’s a good idea to define performance and stability requirements first. They may include the maximum response time, the number of requests the app should be able to process under the expected load, or other relevant metrics.
Load testing is a great tool to put your product in a real-life situation in order to identify its performance limits and see if these limits can be pushed further away. If you’re looking for a way to find out if your app lives up to the performance rates you’ve set and is able to withstand all the coming peak load situations, load testing is the right choice to help you along the way.
Get a new blog post every 2 weeks