What is Endurance Testing?
Endurance testing is a testing technique, where a system is tested with a load extended over a significant amount of time, to analyze the behavior of the system under sustained use.
Endurance Testing is testing of an application or software with a significant load extended over a long period of time, to evaluate how the system behaves under sustained use.
This type of testing is performed at the last stage of performance run cycle. It ensures that the application is capable enough to handle the extended load without any deterioration of response time.
Endurance testing is a long process and sometimes last for even up to a year. This may include applying external loads such as Internet traffic or user actions. This makes endurance testing differ from Load Testing, which usually end in a couple of hours or so.
"Endurance means capacity so in other words, you can term Endurance Testing as Capacity Testing."
Goals of Endurance Testing
- Primary goal of Endurance testing is to check for memory leaks.
- To discover how the system performs under sustained usage.
- To ensure that after a long period, the system response time will remain the same or better than the start of the test.
- To determine the number of users and/or transactions a given system will support and meet performance goals.
- To manage the future loads, we need to understand how many additional resources (like processor capacity, disk capacity, memory usage, or network bandwidth) are necessary to support usage in future.
- Endurance testing is generally done by either overloading the system or by reducing certain system resources and evaluating the consequences.
- It is performed to ensure that defects or memory leaks do not occur after what is considered to be a relatively "normal" usage period.
What to monitor in Endurance Testing
In Endurance Testing following things are tested.
- Test memory leakage- Checks are done to verify if there is any memory leakage in the application, which can cause crashing of the system or O.S.
- Test connection closure between the layer of the system – If the connection between the layers of the system is not closed successfully, it may stall some or all modules of the system.
- Test database connection close successfully- If the database connection is not closed successfully, may result in system crash
- Test response time – System is tested for the response time of the system as the application becomes less efficient as a result of the prolonged use of the system.
How to perform Endurance Testing
Below is the basic testing approach for Endurance Test
- Testing Environment – Identify the hardware, software, operating system require for the endurance testing, assigning roles and responsibilities within the team, etc. The environment should be ready before the test execution. You also need to estimate common database production size and yearly growth. This is required as such you need to test how your application will respond after a year, two or five.
- Creating the Test Plan, Scenarios - Based on nature of testing - manual or automation or combination of both, Test Case design, reviews, and execution should be planned. Testing to stress the system, break point testing, etc. should also be part of the test plan. Testing to stress the system determines the break point in the application.
- Test Estimation – Provide the estimation of how long it will take to complete the testing phase. It should be analyzed on the basis of a number of testers involved and the number of test cycles required.
- Risk Analysis - Analyzing the risk and taking an appropriate action for the prevention. Prioritization of test cases as per the Risk factor and identify the below risk and issues tester may phase during the endurance test.
- Will performance remain consistent over time?
- Are there other minor issues that have not yet been detected?
- Is there external interference that was not addressed?
- Test Schedule - Determine the budget, deliverables within the time frames. As Endurance Testing applies a huge but natural load arrangement of transactions to the system/application for a continuous period of time.
Why Endurance Testing is important
While Stress testing takes the tested system to its limits, Endurance testing takes the application to its limit over time.
For Example, the most complex issues – memory leaks, database server utilization, and unresponsive system – happen when software runs for an extended period of time. If you skip the endurance tests, your chances of detecting such defects prior to deployment are quite low.
Endurance Testing Tools
- It helps in determining how workload can the System Under Load handle.
- Provides accurate data that customer can use to validate or enhance their infrastructure needs.
- Identifies performance problems that may occur after a system has been running at a high level for longer period of time
- Typical issues are identified in smaller targeted performance tests, which means it ensures application remain available even when there is huge load in a very short span time.
- The endurance test is also used to check whether there is any performance degradation after a long period of execution
Disadvantages of Endurance Testing
- It is often hard to define how much stress is worth applying.
- Endurance Testing could cause application and/or network failures that may result in significant disruption if Test Environment are not isolated.
- Permanent Data loss or corruption can occur by over-stressing the system.
- Resource utilization remains very high after the stress is removed.
- Some application components fail to respond.
- Unhandled exceptions are observed by the end user.
- Endurance testing is a subset of load testing.
- Endurance testing is a long process and sometimes last for even up to a year
- Checks are done to verify
- Test memory leakage
- Test response time
- Test database connection, etc.
This article is made possible due to contribution of Unnati Soni.