Backend Testing
Performance testing includes both Backend Testing and Functional Testing. While some tests may be more pertinent to your particular needs, both testing methodologies can drastically optimize a website's performance.
Backend testing relates to tasks like testing the code base for bugs and performance, testing the network capacity, and the architecture of an application.
Functional testing relates to tasks like responsiveness, browser layout and user experience.
There are many different types of performance tests for each of these two areas, as well as many industry terms used to describe them. Understanding these industry terms and the goal of the different tests can help you understand and describe the types of tests you will be running.
In this section, apart from the Functional Testing topic, we will focus on backend testing, which is the more crucial element from an engineering standpoint.
When most testers in the industry refer to performance testing, they are referring to backend testing, and tweaking server performance to meet load needs.
Traditionally, this includes tests that focus on API integrations, mobile performance, as well as the performance capabilities of your website in a browser, across servers, and ultimately from end-user devices (phones, tablets, PCs).
Breaking down the goals of performance testing helps to further categorize tests into three key components. During testing, performance testers hope to gain insight into website functionality (APIs), performance (server response times, and so on), and system stability while a server is under increased load. These tests focus on functionality, performance, and stability issues that may arise.
Backend tests include:
Capacity Test
A capacity test identifies how many concurrent users (people using an application at the same time) an application can handle before "breaking."
This type of test is most often associated with capacity planning, determining the architecture of the application, including the number of servers, their memory size, and the speed of the servers based on business needs.
Usually a capacity test refers to the total number of users an architecture can support under normal operating conditions. Whereas load tests often test specific user activities, capacity tests aim to identify the total number of users an application can support.
Load Test
A load test measures the performance of an application under different levels of user activity, including peak load (a measurement of user activity, and live user quantity) over a pre-determined length of time.
The key benefits of performing regular load tests include:
- Determining if an application is capable of meeting performance targets, and/or user activity.
- Measuring if an application will fail outright, or continue to function as desired, under a high peak load.
Stress Test
A stress test measures a website's ability to handle incremental load, and then determines the point at which it will crash or fail due to high server load.
Stress text also measure breaking points, the apex load that an application can sustain before crashing. Obviously, some business SLAs may not be meet during this breaking point.
Some advantages of stress tests are:
- Identifying performance issues on the surface, which may only appear during times of high load extremes;
- Checking the full capacity of an application, and its behavior tendencies during heavy loads.
Fail-Over Test
A fail-over test measures a specific component of an application, or infrastructure, while executing a performance test.
During a fail-over test, performance testers disable core site functionality in an attempt to analyze the behavior of an application should failures occur naturally at particular moment during an applications loading. These errors are best tested in a controlled environment.
Benefits to performing a fail-over test include:
- Verifying data errors, and measuring losses or other related problems at a certain point in an application should it cease to function
- Confirming performance impacts of component errors
Endurance Test
An endurance test, sometimes referred to as a long duration test or soak test, determines whether a system can sustain continuous expected load. Endurance tests can last anywhere between 8 hours, or 2 weeks depending on typical application usage patterns.
Endurance tests are important tools used to understand how an application performs during these high-load times. Whether or not an application returns to previous levels once load subsides is also a primary feature of an endurance test.
While an application may be able to handle short load "bursts", an endurance test provides insight on how it performs with an abnormally high load, over an extended period of time.
Key benefits to performing an endurance test include:
- Identifying memory leaks
- Finding other issues that could arise during prolonged peak load times