There are many definitions and explanations available for Endurance Testing. It is difficult to determine which one is right. Let’s start with literal meaning of the word “Endurance”
Definition: The capacity of something to last or to withstand wear and tear.
In software terms, Endurance testing is performed to check behavior of system under sustained or prolonged use. It is performed with a significant work load on system. Its key features are
- It is a non-functional software testing.
- It is a type of performance testing and a sub type of Load testing.
- It is performed to detect issues like memory leaks in a system
- It is also known as soak testing or Capacity Testing
To understand it better, let’s first understand what a memory leak is. As we studied during our early compute classes, Computer has some limited temporary memory called RAM. Computer assigns this memory to applications and some other functioning part of OS for storing data temporarily. Application use this memory and return it back to computer so that it can be re-allocated to a different application to use. Sometimes application does not free this memory after the use and make it unusable for other applications, which is termed as a memory leak. It might not have any big impact in the short term use since memory is freed up once the system is restarted. But imagine a software with a memory leak that needs to be run for a longer duration or need to run multiple applications. In the beginning there won’t be any noticeable impact but memory leaks build up over time leaving no free memory, which will slow down the system to a crawl eventually causing a system crash.
As stated earlier, Endurance Testing is done to check system behavior under sustained use since impacts of memory leaks shows up in long run . The main issues that are monitored under it are :
- Memory leaks caused due to an application.
- Memory leak caused due to a database connection
- Memory leaks due to a third party software
- Response time of the system
Time required for Endurance Testing:
Endurance testing requires a great deal of time since the main intention is to check system performance over prolonged use. The time duration for a test is decided on the basis of factors like client involvement, actual production use of system etc. One test for such testing may take well over 12 hours to be completed. Some companies even do the testing for a year.
Advantage of Endurance Testing
- It helps in ensuring the durability of the software.
- It helps in making software robust.
Disadvantages of Endurance Testing
- It is a time consuming process and is not suitable for a project with strict time constraints.
- It is generally done using an automated tool which requires expertise in it
Below listed are some of the testing tools used for Performance Testing :
- Rational Performance Tester
Difference Between Endurance Testing and Load Testing:
Endurance Testing is a sub type of load testing. It is performed with a significant workload on the software, which can be under the limit provided under system specification or it can exceed that limit. Sometimes overloading can be mistaken for a memory leak. Let’s see the difference between load testing and endurance testing to understand better
|Workload during the testing is natural expected load. It may or may not be under specified load limit of the software.||Workload is unexpected. It is varied over the time to check how system handles it.|
|Issues tested under Endurance Testing such as memory leaks has a gradual impact over system. For ex: the response time of the system degrades gradually over time, eventually leading to system crash.||Issues tested under Load Testing i.e. overloading causes abrupt response problems. For ex : sudden degradation of response time, system crash etc.|
As evident from the last row in the table, slow response time and system crash are caused by both memory leaks and overloading. Sometimes, a tester may confuse a load testing problem to be an endurance testing problem. So, it’s important to check for the actual reason behind the problem before coming to a conclusion.
Lifecycle of Endurance Testing:
- Requirement Analysis: During this phase the requirements are reviewed and understood. This phase is responsible for identifying which type of testing needs to be performed. For ex, if it’s a new software then, this testing is more likely to be pin scope. But if it is just an addendum to an already established software, then endurance testing may be ruled out.
- Test Planning: During this phase, resources, timelines and cost estimation is done for the test cases. The scope of manual and automation testing too is decided during this phase. Endurance testing is done using automation tools like LoadStorm. As discussed earlier, this testing is a time consuming process. The timeline is decided based on the factors like budget, client requirement etc.
- Test Case Development: Test Cases are prepared during this phase. The workload and time for testing is decided during this phase. An endurance test case may run from 12 to 72 hours based on the requirements. But sometimes, client can provide clear specifications and time period can be reduced up to 3 or 4 hours, as per client request.
- Test Environment: Test Environment is setup during this phase. The environment for such testing should be isolated from other test environments. It should be similar to actual production environment so that results generated are consistent and accurate. Also, original environment should never be used for testing as a system crash during stesting may impact environment and cause loss of data.
- Test Execution: Issues like memory leaks, slow response time, database connection issues are identified and fixed.
- Test Cycle Closure: Based on exit criteria set during test planning test cycle should be closed. Exit criteria could be based on timeline or the defects found.
Based on the above discussion we can conclude that Endurance Testing is a non-functional software performance testing. It is done to verify the performance of system under sustained use. The major issue that is identified during testing is memory leaks present in an application or in a part of software, which gradually degrades the response time and performance of the system, eventually leading to system crash.
Endurance Testing is very important because if issues like memory leaks go identified then they can cause system failure later, causing loss of valuable information.
If you are not regular reader of this website then highly recommends you to Sign up for our free email newsletter!! Sign up just providing your email address below: