Stress testing is a non-functional form of testing that verified the stability & reliability of the system. This test mainly determines the system on its robustness and error handling under extremely heavy load conditions. It allows the testers to check the endurance power or limit of the system can withstand before breaking down.
Stress testing is also known as endurance testing. It also effectively checks the system’s response and error management under stress and extreme conditions.
It helps in finding the following errors in application software:
- Memory Leak.
- Data corruption and loss.
- Loss of resource issues.
- Timing bugs and synchronization issues.
- Request priority issues.
Need for Stress Testing
- During festival time, an online shopping site may witness a spike in traffic, or when it announces a sale.
- When a blog is mentioned in a leading newspaper, it experiences a sudden surge in traffic.
Goals of Stress Testing
The goal of stress testing is to analyze the behavior of the system after a failure. For Stress testing to be successful, the system displays an appropriate error message while it is under extreme condition.
To conduct Stress Testing, sometimes, massive data sets may be used which may get lost during Stress Testing. Testers should not lose these security-related data while doing stress testing.
The main purpose of stress testing is to make sure that the system recovers after failure which is called as recoverability.
Implementation of stress testing with the situation
A software application created for e-commerce application is stress-tested in the following scenario:
Stress testing checks the application response of the user with increased web traffic. The website is tested to work with more than expected users. Testers create virtual users to execute activities such as adding products, viewing products, payment. The number of virtual users is increased until the entire application breaks down. It helps in identifying performance issues, recovery, and mechanism.
How to do Stress Testing?
Stress Testing process can be done in 5 major steps:
- Planning the Stress Test. Here you gather the system data, analyze the system, define the stress test goals
- Create Automation Scripts: In this phase, you create the Stress testing automation scripts, generate the test data for the stress scenarios.
- Script Execution: In this stage, you run the Stress testing automation scripts and store the stress results.
- Results Analysis: In this stage, you analyze the Stress Test results and identify bottlenecks.
- Tweaking and Optimization: In this stage, you fine-tune the system, change configurations, optimize the code with goal meet the desired benchmark.
Lastly, you again run the entire cycle to determine that the tweaks have produced the desired results. For example, it’s not unusual to have 3 to 4 cycles of the Stress Testing process to achieve the performance goals.
Types of Stress Testing
The client-server model is a distributed model where the workload is divided between resource or service providers – servers and requesters for service-client.
The role of stress server is to distribute a set of stress tests to all stress clients and track on the status of the client. After the client contacts the server, the server adds the name of the client and starts sending data for testing.
Meanwhile, client machines send signal or heartbeat that it is connected with the server. If the server does not receive any signals from the client machine, it needs to be investigated further for debugging.
Application stress testing
This testing concentrate on finding defects related to data locking and blocking, network issues and performance bottlenecks in an application.
Transactional stress testing
This method focuses on testing the smoothness of transactions between two or more applications. It improves business transactions.
Exploratory Stress testing
This method tests the application across multiple systems running at the same server. In this method, a tester checks the system using different parameters, which is unlikely to happen in a real scenario. This method tests the system response when a large number of users are logged in the system. Exploratory testing also finds the possibilities of system or software failure.
This method also checks the activities where the website is not able to access the database. Sometimes, the database is also stressed by adding more than it can store.
Systematic Stress Testing
This method test many systems that are on the server. It enables the testing team to find and report defects where data of one application blocks the flow of application software.
Stress testing’s objective is to check the system under extreme conditions. In system resources such as Memory, processor, network, etc., and checks the ability of the system to recover back to normal status. It checks whether the system displays appropriate error messages while under stress.