Software bugs can be hazardous and expensive. A developer may have to bear lots of monetary losses because of the errors and bugs in the software. Software testing is one of the most critical and essential parts of the software development cycle. Testing ensures to detect the possible defects in the functionality of a software. Though testing depends upon the nature and scope of the project, let's talk about a few of the significant types of testing.
Load vs. Stress Testing
A load test measures the performance of a system under an expected load. In contrast, a stress test overloads a system to find the breaking point.
In load testing load limit is a threshold of a break. In stress testing load limit is above the threshold of a break.
When to Choose a Load Test or Stress Test?
Let's try to understand what it is and its purpose. In the load test, you may inject pauses into a load test to simulate real user traffic. With a stress test, you may run as many simultaneous users as fast as possible to generate excessive traffic for a stress test.
Load Testing is often used in the process of capacity planning to ensure that a system can handle growth to specified levels of simultaneous traffic. A load test ensures a website or a web application can handle numbers of users at once.
On the other hand, a stress test is used to correctly push a system beyond its intended capacity to identify components that begin to slow down, bottlenecks in the system, and bring to possible points of failure. Before going ahead, let's have a quick understanding of endurance testing and its goals.
What is Endurance testing?
The word Endurance means 'the capacity of something to last or to withstand the wear and tear.' You can call it as durability, lasting power or longevity. Endurance Testing is testing a system with a load extended over a significant amount of time to analyze the behavior of the system under sustained use. It ensures that the application is capable enough to handle the extended load without any deterioration of response time.
Goals of Endurance Testing and how to monitor it?
The primary goal of Endurance testing is to check for memory leaks. To ensure that after an extended period, the system response time continues to be the same or better than the start of the test. Endurance testing is also done to determine the number of users and transactions; a given system supports and meets performance goals. It also helps to manage future loads; we need to understand how many additional resources (like processor capacity, disk capacity, memory usage, or network bandwidth) are necessary to support users in the future. Also, endurance testing is generally done by either overloading the system or by reducing specific system resources and evaluating the consequences.
The following are tested to monitor endurance testing :
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 a 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.
Steps to execute endurance testing
- Testing Environment – Identify the hardware, software, the operating system required for endurance testing, assigning roles, and responsibilities within the team. The testing environment is a necessity to test the performance of an application after a year or two or longer.
- Creating the Test Plan, Scenarios - Testing to stress the system, breakpoint testing should also be part of the test plan. Testing to stress the system determines the breaking point in the application.
- Test Estimation – Provide the estimation of how long it takes to complete the testing phase. Analysis can be based on many testers involved, and the number of test cycles required.
- Risk Analysis - Analyzing the risk and taking appropriate action for prevention.
- 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.
Steps to identify points of failure
- Isolating all traffic to one particular geographic region
- Artificially limiting available disk space
- Repeatedly sending one unusually large GET request
- Limiting the maximum number of data connections
- Downloading a large file from the application
- Repeatedly sending an intense POST that writes heavily to a database.
Once we are through the testing process and its goals, we must understand the various pros and cons of the same.
Advantages of Endurance Testing
- It helps in determining how much workload can the System Under Load handle.
- It provides accurate data that customers can use to validate or enhance their infrastructure needs.
- Typical issues are identified in smaller targeted performance tests, which means it ensures the application remains available even when there is a huge load in a very short span of time.
- Performance degradation after remains a long period of execution
- Possible recovery measures for wear and tear can be rectified in the early stages
- Data loss and corruption can be avoided
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 is not isolated.
- Permanent Data loss or corruption can occur by over-is stressing the system.
- Resource utilization remains very high after the stress is removed.
- Unhandled exceptions are observed by the end-user.
Endurance testing can be done on various tools
Endurance Testing Tools
- Apache JMeter
- Rational Performance Tester
- Endurance Testing in Jmeter
To effectively performing endurance testing with Apache JMeter, there are specific settings that you need to be keeping in mind. When performing this type of test with Apache Jmeter, there are individual settings that you should have in mind.
Setting the Thread Group Properties
Run the Test in Non-GUI Mode
Monitor Your Load Generator
Run your JMeter Script With Taurus and Use the BlazeMeter Reporting Feature