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.
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.
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. For example, when comparing hosts, such as Bluehost vs HostGator, you would typically expect their shared offerings not to perform as well as their VPS or dedicated server offerings, etc. With that said, let’s jump back to looking at load testing vs stress testing.
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.