Load Testing
Load testing is a type of non-functional testing and as a type of software testing is conducted to understand the behavior of the application under a specific expected load. In other words, it can also be done in the field to obtain a qualitative idea of how well a system functions in the "real world."
Load Testing is a type of performance testing conducted to evaluate the behavior of a component or system with increasing load, e.g. numbers of parallel users and/or numbers of transactions, to determine what load can be handled by the component or system.
Load Testing includes increasing the load and to observe how the system behaves under higher load. It is mostly conducted to verify that your application can meet your desired performance objectives; these performance objectives are often specified in a service level agreement (SLA). During Load Tests you can monitor response times, throughput rates, server condition and much more. The goal of Load Testing is not to reach the target’s breaking point, though.
Load testing allows us to verify solutions in the next areas:
- It helps to identify the maximum operating capacity of an application as well as any bottlenecks and determine which element is causing degradation. E.g. If the number of users is increased then how much CPU memory will be consumed, what is the network and bandwidth response time.
- Load testing can be done under controlled lab conditions to compare the capabilities of different systems or to accurately measure the capabilities of a single system.
- Load testing involves simulating real-life user load for the target application. It helps to determine how your application behaves when multiple users hit it simultaneously.
- Load testing differs from stress testing, which evaluates the extent to which a system keeps working when subjected to extreme workloads or when some of its hardware or software has been compromised.
- The primary goal of load testing is to define the maximum amount of work that a system can handle without significant performance degradation.
Examples of load testing
- Downloading a series of large files from the internet.
- Running multiple applications on a computer or server simultaneously.
- Assigning many jobs to a printer in a queue.
- Subjecting a server to a large amount of traffic.
- Writing and reading data to and from a hard disk continuously.
Next example can help you to understand how it works:
A web service with shopping cart functionality is designed for 1000 users, that use it at the same time and follow a certain specific scenario (specified actions in the specified proportions):
- 250 users browse the product and log off the system.
- 250 users add the product to the shopping cart, issue an order and log off the system.
- 250 users use the function of purchase return and log off the system.
- 250 users are logged in and do not show any activity.
In this case, load testing should emulate the above-described typical scenario of working with the web service in order to make sure that the system is ready for commissioning.
At the same time, the performance indicators of the system can be taken for the analysis as a whole or of each system unit in particular.
Drawbacks of manual Load Testing that leads to Automation
- Difficult to measure the performance of the application accurately.
- Difficult to do synchronization between the users.
- A number of real-time users is required to involve in Performance Testing.
- Difficult to analyze and identify the results & bottlenecks.
- Increases the infrastructure cost.
Most of the time, Load testing is performed by special automated tools such as Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer, Visual Studio Load Test etc. Also, QA engineers can use specific scripts for load test execution to verify the software. The quantity of users can be increased or decreased concurrently or incrementally based upon the requirements.
Endurance testing is a subset of load testing. An endurance test is a type of performance test focused on determining or validating the performance characteristics of the product under test when subjected to workload models and load volumes anticipated during production operations over an extended period of time.
Endurance testing may be used to calculate Mean Time Between Failure (MTBF), Mean Time To Failure (MTTF), and similar metrics.
The benefits of load test:
- Determines the throughput required to support the anticipated peak production load.
- Determines the adequacy of a hardware environment.
- Evaluates the adequacy of a load balancer.
- Detects concurrency issues.
- Detects functionality errors under load.
- Collects data for scalability and capacity planning purposes.
- Helps to determine how many users the application can handle before performance is compromised.
- Helps to determine how much load the hardware can handle before resource utilization limits are exceeded.
Load testing can be done at both normal and peak load conditions. This type of testing identifies the maximum capacity of Software and its behavior at peak time.
It should be also mentioned that load testing is not designed to primarily focus on speed of response and results should only be used for comparison with other related load tests.