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, 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 load-testing phase begins when most of the 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 defects. Here the objective is to discover bottlenecks. While functional testing is carried out with one or few users, load testing requires deploying a field-like scenario 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 a 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 users to synchronize their actions to generate the required load profile and record observations.

An application load testing tool is needed to address these requirements. Key requirements of an application load testing tool are:

  1. Understanding the environment of the application.
  2. Emulating the behavior of a different type of user of the system.
  3. Running a large number of such users in parallel to create fields like traffic.
  4. Capturing performance metrics related to timing and resources.
  5. Monitoring the recovery of the system in case of stress testing.

 

LoadTest Solution

LoadTest 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.  LoadTest can use multiple protocols to interact with the target website. LoadTest 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.

LoadTest 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 phases. 

LoadTest collects a large 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 GUI and are useful to visualize quantitative and qualitative aspects of the load test.