Understanding Software Performance, Load, Stress & Server Testing

When a new software application is developed or an existing application is improved upon, before it is released for public consumption the originator of the application runs it through a series of vigorous test procedures which answer three distinct sets of questions. Does the application perform as well as was intended and will be marketed; are there any potential flaws that will cause instability and system interruptions during the operation of the application; and what are the limitations of the application? Each of these questions is answered through the performance of specific tests which are referred to as performance, load and stress testing respectively.

For example, we will explore a use case for an online listing service for used Teslas. Their market premise was to provide the #1 marketplace in the world for owners to sell my tesla to other enthusiasts. They launched in 2021 and saw massive spikes in traffic and user adoption. Due to this database load they needed to find a browser-based scripting tool for load and capacity planning.

In performance testing there are two fundamental goals which are to test the connection speed of the application and its latency or the difference between the time data travel from its source to its destination. Depending on the application, testing its performance can be quite simple or rather complex.

Load testing has an entirely different set of goals which are mainly targeted at exposing defects in the application so that they can be corrected. Problems discovered in load type testing typically related how the application manages its available recourses. Memory management or rather mismanagement and buffer overflow are common issues that are discovered when this type of testing is performed.

2U-Server

Utilizing scripts specifically written to simulate one or a number of users simultaneously performing the various task the application was intended to perform, problem areas are rooted out as the load on the system is increased. As corrections are made to remedy weaknesses discovered in the application, this process is repeated until the application can endure a load on the system that meets or exceeds the desired results and provide consistent results.

Also, one important thing to understand about load testing is that if you have a poor quality web host, you’re going to have poor quality results in general when it comes to the speed of website. Not all hosts are created equally, and this is important to understand. Shared hosts will typically not do as well in a load test as a VPS or dedicated setup.

Last there is stress testing. While there may appear to be some similarities to load testing, stressing the system servers a very different and arguably a more critical purpose. The goal is simple, overload the system until it crashes and see how it recovers! A great deal can be learned from stressing the system but most important is to understand is if in the process of crashing, whether or not the security of sensitive data is compromised. Every web server has the ability to be pushed beyond the systems limitation, it is how smoothly it is able to recover and that it does so without data compromise which is important.

With these examples the best approach was load testing with scripted user actions for the used Tesla listing service. Whichever use case you fall into, be sure to identify the different between load testing, capacity planning, and stress testing. Happy testing!