Application Load Testing Overview
When a system is designed for number of parallel users who are required to access the system online, it becomes very critical for application developer to find out how the system is going to behave when load reaches or crosses a threshold. Load or endurance testing involves subjecting the system to an increasing load, which starts from low end, then moves to moderate, and finally reaches its peak. 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 functional testing is complete and system is more or less meeting functional requirements. Unlike functional testing, objective of load testing is not to discover defects. Here objective is to discover bottlenecks. While functional testing is carried out with one or few users, load testing requires deploying 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 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 system after crash.
Application Load Testing Requirements
Application load testing in a conventional way need enormous resources in terms of 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 required load profile and to record observations.
The need of 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 large number of such users in parallel to create field like traffic
- Capturing performance metrics related to timing, resources
- Monitoring the recovery of system in case of stress testing
Comprehensive Load Testing and Capacity Analysis Solution
NetStorm is a load generation tool that mimics activities of hundreds of thousands of users sending requests to and receiving responses from websites in a customized and controlled manner. NetStorm can use multiple protocols to interact with target website. NetStorm achieves this by creating virtual users that make these connections to server(s), sends requests and processes 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.
NetStorm may use several processes (also called NVMs) in order 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.
NetStorm collects large amount 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.