Application Load Testing Overview
When a system is designed for several parallel users who are required to access the system online, it becomes very critical for an application developer to find out how the system is going to behave when the load reaches or crosses a threshold. Load or endurance testing involves subjecting the system to an increasing load which starts from the low end and then moves to moderate and finally reaches its peak. The system is constantly observed in terms of its response time, resource usage, and reliability of its functionality.
Normally, the load testing phase begins when most functional testing is complete and the system is more or less meeting functional requirements. Unlike functional testing, the objective of load testing is not to discover the defects. Here, the objective is to discover bottlenecks. While functional testing is carried out with one or few users, load testing requires deploying field-like scenarios where hundreds or thousands of users interact with frontend software, such as a website, or a backend system.
When this load crosses a threshold and overloads the system beyond its designed capacity, it comes into the domain of stress or fatigue testing. The goal of stress testing is to break the system with excessive load and to assess the quick and graceful recovery of the system after the crash.
Application Load Testing Requirements
Application load testing in a conventional way needs enormous resources in terms of a large number of clients and users. It is not only expensive and cumbersome but also needs meticulous coordination among the users to synchronize their actions to generate the required load profile and record observations.
The need for an application load testing tool is there to address these requirements. Key requirements of an application load testing tool are:
- Understanding the environment of the application.
- Emulating behavior of a different type of user of the system.
- Running a large number of such users in parallel to create field-like traffic.
- Capturing performance metrics related to timing and resources.
- Monitoring the recovery of the system in case of stress testing.
LOAD TEST Solution
LOAD TEST is a load generation tool that mimics the activities of hundreds of thousands of users sending requests to and receiving responses from websites in a customized and controlled manner. LOAD TEST can use multiple protocols to interact with the target website. LOAD TEST achieves this by creating virtual users that make these connections to the server(s), send requests, and process the responses received in an orchestrated manner. Apart from requests and responses, it also collects data from websites to monitor performance.
Generating customized loads and simulating real-world users requires considerable data regarding the quantity of load, its distribution with respect to users, its variation with time, properties of the user, network, etc. The configuration (also called a scenario) provides control over many of these aspects. The destination(s) that the traffic is directed to and the sequence the user follows is captured in scripts.
LOAD TEST may use several processes (also called NVMs) to divide its work for efficiency. The NVMs are independent but also communicate with the parent via messages. The parent periodically sends messages to the NVMs to direct the various stages of traffic generation like ramp-up, stabilization, duration, and ramp-down phase.
LOAD TEST collects a number of statistics such as response times, network throughput, errors from web pages, performance-related measurements, and so on. These are displayed by monitoring and dashboard UI and are useful to visualize quantitative and qualitative aspects of the load test.